Timeline



Feb 3, 2020:

10:04 PM Changeset in webkit [255664] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

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]):

9:56 PM Changeset in webkit [255663] by Antti Koivisto
  • 9 edits
    2 adds in trunk

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.
9:46 PM Changeset in webkit [255662] by Chris Dumez
  • 5 edits in trunk/Source/WebKit

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:
9:37 PM Changeset in webkit [255661] by Andres Gonzalez
  • 2 edits in trunk/Source/WebCore

[WebAccessibilityObjectWrapper detach] should detach either the wrapped AXObject or the IsolatedObject but not both.
https://bugs.webkit.org/show_bug.cgi?id=207178

Reviewed by Chris Fleizach.

Detach either the AXObject or the IsolatedObject depending on the thread that the method is invoed on.

  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(-[WebAccessibilityObjectWrapperBase detachAXObject]):
(-[WebAccessibilityObjectWrapperBase detachIsolatedObject]):
(-[WebAccessibilityObjectWrapperBase detach]): Detach one or the other depending on the thread.

9:29 PM Changeset in webkit [255660] by jiewen_tan@apple.com
  • 9 edits in trunk

Pass a hint from the extension to decidePolicyForSOAuthorizationLoadWithCurrentPolicy
https://bugs.webkit.org/show_bug.cgi?id=207079
<rdar://problem/48290464>

Reviewed by Brent Fulgham.

Source/WebCore/PAL:

  • pal/cocoa/AppSSOSoftLink.h:
  • pal/cocoa/AppSSOSoftLink.mm:
  • pal/spi/cocoa/AppSSOSPI.h:

Adds macros for classes that are used in the tests.

Source/WebKit:

Pass a localized human readable hint from the extension to decidePolicyForSOAuthorizationLoadWithCurrentPolicy,
such that clients can display it to tell users what the extension is trying to do. Hints could be something
like "Sign In With Apple".

Covered new test contents within existing tests.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.h:
  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:

(WebKit::SOAuthorizationSession::start):
(WebKit::SOAuthorizationSession::continueStartAfterGetAuthorizationHints):
(WebKit::SOAuthorizationSession::continueStartAfterDecidePolicy):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(-[TestSOAuthorizationDelegate _webView:decidePolicyForSOAuthorizationLoadWithCurrentPolicy:forExtension:completionHandler:]):
(overrideGetAuthorizationHintsWithURL):
(TestWebKitAPI::TEST):

8:22 PM Changeset in webkit [255659] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Use PackedPtr for VariableEnvironment
https://bugs.webkit.org/show_bug.cgi?id=207172

Reviewed by Mark Lam.

Since VariableEnvironment's KeyValue is key: pointer + value: 2 byte, using PackedPtr can make it 8 bytes, 50% reduction.

  • parser/VariableEnvironment.h:
  • runtime/CachedTypes.cpp:

(JSC::CachedRefPtr::encode):
(JSC::CachedRefPtr::decode const): CachedTypes should handle PackedPtr too since VariableEnvironment starts using it.

7:59 PM Changeset in webkit [255658] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

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.

7:10 PM Changeset in webkit [255657] by Alan Coon
  • 3 edits
    2 adds in branches/safari-610.1.1-branch

Cherry-pick r255504. rdar://problem/59061225

[Web Animations] [WK1] REGRESSION: opacity doesn't animate
https://bugs.webkit.org/show_bug.cgi?id=207044
<rdar://problem/59061225>

Reviewed by Simon Fraser.

Source/WebCore:

Test: webanimations/opacity-animation.html

We failed to animate opacity in WK1 because we made the assumption that just because an animation targets only accelerated properties it would be accelerated
and wouldn't need to be updated as it runs in WebAnimation::timeToNextTick(). This is incorrect, an animation may fail to start or may fail to get a composited
layer, the latter being the case on WK1 because usesCompositing() is false in RenderLayerCompositor::requiresCompositingForAnimation().

We now check that an animation is both only animating accelerated properties and running accelerated to determine that an animation won't need to be updated
until it completes.

  • animation/WebAnimation.cpp: (WebCore::WebAnimation::timeToNextTick const):

LayoutTests:

  • webanimations/opacity-animation-expected.html: Added.
  • webanimations/opacity-animation.html: Added.

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

7:10 PM Changeset in webkit [255656] by Alan Coon
  • 6 edits in branches/safari-610.1.1-branch/Source/WebCore

Cherry-pick r255490. rdar://problem/58570085

Regression(r255359): imported/mozilla/svg/svg-integration/clipPath-html-06.xhtml is failing consistently on windows
https://bugs.webkit.org/show_bug.cgi?id=206991
<rdar://problem/59030252>

Reviewed by Antoine Quint.

The previous approach may have still allowed RenderStyles computed with non-current FontCascade in
matched properties caches (because some non-font properties were resolved based on obsolete font information).

This patch takes a more robust approach by simply preventing caching of styles with non-current font.

  • dom/Document.h: (WebCore::Document::fontSelector const):
  • platform/graphics/FontCascade.cpp: (WebCore::FontCascade::isCurrent const):
  • platform/graphics/FontCascade.h:
  • style/MatchedDeclarationsCache.cpp: (WebCore::Style::MatchedDeclarationsCache::isCacheable):
  • style/StyleBuilderState.cpp: (WebCore::Style::BuilderState::updateFont):

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

7:10 PM Changeset in webkit [255655] by Alan Coon
  • 2 edits in branches/safari-610.1.1-branch/Source/WebCore

Cherry-pick r255489. rdar://problem/58815952

[Web Animations] DocumentTimeline shouldn't suspend itself if hiddenPageCSSAnimationSuspensionEnabled is disabled
https://bugs.webkit.org/show_bug.cgi?id=207014
<rdar://problem/58815952>

Reviewed by Antti Koivisto.

We suspend a timeline upon consutrction if we know that the page is not visible because, unlike CSSAnimationController, the DocumentTimeline is not guaranteed
to be created by the time the Page sets the initial visibility state. This is because DocumentTimeline is created as needed when there are CSS Animations or CSS
Transitions created for the page, or if the content uses any of the Web Animations APIs.

However, the Page::setIsVisibleInternal() function that would call DocumentTimeline::resumeAnimations() at a later time checks whether the hiddenPageCSSAnimationSuspensionEnabled
setting is enabled. So we must respect that setting also when suspending animations in the first place or we risk ending up in a state where we suspend animations
because the page is not visible upon timeline creation, but never resuming animations later due to the hiddenPageCSSAnimationSuspensionEnabled setting being false.

  • animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::DocumentTimeline):

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

7:10 PM Changeset in webkit [255654] by Alan Coon
  • 7 edits in branches/safari-610.1.1-branch

Cherry-pick r255420. rdar://problem/58858225

REGRESSION (r254406): Gmail.com star/favorite icons are not rendering
https://bugs.webkit.org/show_bug.cgi?id=206909

Reviewed by Simon Fraser.

Source/WebCore:

Make image-set parsing more conservative, for backwards compatibility:

  • Differentiate between image-set and -webkit-image-set when parsing, -webkit-image-set maintains old behavior.
  • Don't allow empty urls when using raw strings, e.g. image-set( 1x) is invalid.

Tests updated: fast/css/image-set-parsing.html.

  • css/parser/CSSPropertyParserHelpers.cpp: (WebCore::CSSPropertyParserHelpers::consumeImageSet): (WebCore::CSSPropertyParserHelpers::consumeImage):

LayoutTests:

Added empty URLs and new syntax with prefixed image-set to invalid tests.
Modified valid image-set parsing test to separate prefixed/non-prefixed.

  • fast/css/image-set-parsing-generated.html:
  • fast/css/image-set-parsing-invalid-expected.txt:
  • fast/css/image-set-parsing-invalid.html:
  • fast/css/image-set-parsing.html:

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

7:10 PM Changeset in webkit [255653] by Alan Coon
  • 70 edits
    3 copies
    3 moves
    22 adds in branches/safari-610.1.1-branch

Cherry-pick r255396. rdar://problem/58675608

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

7:09 PM Changeset in webkit [255652] by Alan Coon
  • 15 edits
    1 copy
    3 moves
    7 adds
    1 delete in branches/safari-610.1.1-branch

Cherry-pick r255383. rdar://problem/58675608

[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

7:09 PM Changeset in webkit [255651] by Alan Coon
  • 14 edits in branches/safari-610.1.1-branch

Cherry-pick r255076. rdar://problem/58675608

[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

7:09 PM Changeset in webkit [255650] by Alan Coon
  • 6 edits in branches/safari-610.1.1-branch/Source/WebCore

Cherry-pick r254991. rdar://problem/58675608

[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

7:09 PM Changeset in webkit [255649] by Alan Coon
  • 5 edits in branches/safari-610.1.1-branch/Source/JavaScriptCore

Cherry-pick r255380. rdar://problem/59004377

Fix small memory regression caused by r206365
https://bugs.webkit.org/show_bug.cgi?id=206557

Reviewed by Yusuke Suzuki.

Put StructureRareData::m_giveUpOnObjectToStringValueCache into m_objectToStringValue to prevent increasing StructureRareData's size. We make a special value for the pointer
objectToStringCacheGiveUpMarker() to signal that we should not cache the string value. As a result, adding m_transitionOffset does not increase the size of the class.

  • runtime/Structure.h:
  • runtime/StructureRareData.cpp: (JSC::StructureRareData::StructureRareData): (JSC::StructureRareData::visitChildren): (JSC::StructureRareData::setObjectToStringValue): (JSC::StructureRareData::clearObjectToStringValue):
  • runtime/StructureRareData.h:
  • runtime/StructureRareDataInlines.h: (JSC::StructureRareData::objectToStringValue const):

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

7:09 PM Changeset in webkit [255648] by Alan Coon
  • 15 edits
    2 adds in branches/safari-610.1.1-branch

Cherry-pick r255228. rdar://problem/58858225

-webkit-image-set should support resolution units other than 'x'
https://bugs.webkit.org/show_bug.cgi?id=100120

Reviewed by Darin Adler.

Source/WebCore:

Leveraged previous work on image-resolution to enable dpi/dppx/dpcm in CSS image-set.
Now the second value of every entry in the image-set is parsed like any resolution,
allowing "x" as a synonim for "dppx.

This changes computed style behavior for image-set - "x" resolution values will be converted
to "dppx". This is in line with the spirit of computed values, though it's not spec'ed particularly.

Tests: fast/hidpi/image-set-units.html

  • css/CSSImageSetValue.cpp: (WebCore::CSSImageSetValue::fillImageSet): (WebCore::CSSImageSetValue::updateDeviceScaleFactor): (WebCore::CSSImageSetValue::customCSSText const):

Convert values to dppx before sorting them the image set.
Use given CSS units in computed styles instead of hardcoding "x"

  • css/CSSPrimitiveValue.cpp: (WebCore::isValidCSSUnitTypeForDoubleConversion): (WebCore::CSSPrimitiveValue::conversionToCanonicalUnitsScaleFactor):

Allow conversion of dpi/dppx/dpcm to canonical (dppx).

  • css/parser/CSSPropertyParserHelpers.cpp: (WebCore::CSSPropertyParserHelpers::consumeResolution): (WebCore::CSSPropertyParserHelpers::consumeImageSet):
  • css/parser/CSSPropertyParserHelpers.h:

Consume any resolution when parsing image-set.

LayoutTests:

Had to modify several image-set parsing tests because of the behavior change in
computed style (x => dppx).

Also added a couple of parsing/rendering tests specifically to test the new behavior
of dpi/dpcm/dppx.

  • fast/css/cursor-parsing-image-set-expected.txt:
  • fast/css/cursor-parsing-image-set.html:
  • fast/css/image-set-parsing-expected.txt:
  • fast/css/image-set-parsing-invalid-expected.txt:
  • fast/css/image-set-parsing.html:
  • fast/css/image-set-setting-expected.txt:
  • fast/css/image-set-setting.html:
  • fast/css/image-set-unprefixed.html:
  • fast/hidpi/image-set-units-expected.html: Added.
  • fast/hidpi/image-set-units.html: Added.

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

7:09 PM Changeset in webkit [255647] by Alan Coon
  • 26 edits
    16 adds in branches/safari-610.1.1-branch

Cherry-pick r254861. rdar://problem/58858225

-webkit-image-set should support all the image functions WebKit supports, not just url()
https://bugs.webkit.org/show_bug.cgi?id=81941

Patch by Noam Rosenthal <Noam Rosenthal> on 2020-01-21
Reviewed by Darin Adler.

Source/WebCore:

Separate StyleCachedImage to 4 classes:

  • StyleCachedImage: for single images only
  • StyleMultiImage: for values that can contain multiple images: like cursor/image-set
  • StyleImageSet
  • StyleCursorImage

The new classes only deal with their own value type. Before, ImageSet and cursor were resolved
as a StyleCachedImage, which is no longer a valid assumption if image-set can contain generated images.
Though cursors still can only contain cached images, it was cleaner to refactor it out as well.

Refactored best-fit image selection from loading. Now StyleCachedImage is in charge of loading
the actual image, and StyleImageSet/StyleCursorImage perform the source selection.

Also, added the necessary logic in the CSS parser to consume generated images inside image-sets, excluding
when the image-set is a cursor value.

Tests: fast/css/image-set-parsing-generated.html

fast/hidpi/image-set-cross-fade.html
fast/hidpi/image-set-gradient-multi.html
fast/hidpi/image-set-gradient-single.html
fast/hidpi/image-set-gradient.html

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Added new files

  • css/CSSCursorImageValue.cpp: (WebCore::CSSCursorImageValue::selectBestFitImage): (WebCore::CSSCursorImageValue::loadImage): Deleted.
  • css/CSSCursorImageValue.h:

Instead of cursor loading the image, it selects an image CSS value

  • css/CSSImageSetValue.cpp: (WebCore::CSSImageSetValue::CSSImageSetValue): (WebCore::CSSImageSetValue::fillImageSet): (WebCore::CSSImageSetValue::cachedImage const): (WebCore::CSSImageSetValue::selectBestFitImage): (WebCore::CSSImageSetValue::updateDeviceScaleFactor): (WebCore::CSSImageSetValue::imageSetWithStylesResolved): (WebCore::CSSImageSetValue::traverseSubresources const): (WebCore::CSSImageSetValue::loadBestFitImage): Deleted.
  • css/CSSImageSetValue.h:

Refactor CSSImageSetValue to include non-cachedImage images

  • css/parser/CSSPropertyParser.cpp: (WebCore::consumeCursor):
  • css/parser/CSSPropertyParserHelpers.cpp: (WebCore::CSSPropertyParserHelpers::consumeImageSet): (WebCore::CSSPropertyParserHelpers::consumeImage): (WebCore::CSSPropertyParserHelpers::consumeUrlOrStringAsStringView): Deleted.
  • css/parser/CSSPropertyParserHelpers.h:
  • page/animation/CSSPropertyAnimation.cpp: (WebCore::blendFunc):

When blending two images, get the selected images in case it is an image-set

  • rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::paintFillLayerExtended):
  • rendering/RenderImageResourceStyleImage.cpp: (WebCore::RenderImageResourceStyleImage::initialize):
  • rendering/RenderLayerBacking.cpp: (WebCore::canDirectlyCompositeBackgroundBackgroundImage):
  • rendering/style/ShapeValue.cpp: (WebCore::ShapeValue::isImageValid const):

Use hasCachedImage() instead of isCachedImage() as a StyleImageSet is no longer an isCachedImage()

  • rendering/style/StyleCachedImage.cpp: (WebCore::StyleCachedImage::StyleCachedImage): (WebCore::StyleCachedImage::imageURL): (WebCore::StyleCachedImage::load):
  • rendering/style/StyleCachedImage.h:
  • rendering/style/StyleCursorImage.h:
  • rendering/style/StyleCursorImage.cpp:
  • rendering/style/StyleMultiImage.h:
  • rendering/style/StyleMultiImage.cpp:
  • rendering/style/StyleImageSet.h:
  • rendering/style/StyleImageSet.cpp:
  • rendering/style/StyleImage.h: (WebCore::StyleImage::selectedImage): (WebCore::StyleImage::selectedImage const): (WebCore::StyleImage::isCursorImage const): (WebCore::StyleImage::isImageSet const): (WebCore::StyleImage::hasCachedImage const): (WebCore::StyleImage::StyleImage):

Separate cursor/image-set related stuff away from StyleCachedImage.

  • style/StyleBuilderCustom.h: (WebCore::Style::BuilderCustom::applyValueContent):
  • style/StyleBuilderState.cpp: (WebCore::Style::BuilderState::resolveImageStyles): (WebCore::Style::BuilderState::createStyleImage):
  • style/StyleBuilderState.h:

Match the CSS values with the correct Style class. Also, ensure image-sets resolve their
images' styles as they may contain gradients and other context-aware values.

LayoutTests:

  • fast/css/cursor-parsing-expected.txt:
  • fast/css/cursor-parsing.html:

Added parsing test to ensure arrow image-sets disable generated images

  • fast/css/image-set-parsing-generated-expected.txt: Added.
  • fast/css/image-set-parsing-generated.html: Added.
  • fast/css/image-set-parsing-invalid-expected.txt:
  • fast/css/image-set-parsing-invalid.html:

Added parsing tests for new generated-inside-image-set use cases
Test that image-set inside image-set is not supported

  • fast/hidpi/image-set-cross-fade-expected.html: Added.
  • fast/hidpi/image-set-cross-fade.html: Added.
  • fast/hidpi/image-set-gradient-expected.html: Added.
  • fast/hidpi/image-set-gradient-multi-expected.html: Added.
  • fast/hidpi/image-set-gradient-multi.html: Added.
  • fast/hidpi/image-set-gradient-single-expected.html: Added.
  • fast/hidpi/image-set-gradient-single.html: Added.
  • fast/hidpi/image-set-gradient.html: Added.

Added ref-tests for several generated-inside-image-set use-cases

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

7:09 PM Changeset in webkit [255646] by Alan Coon
  • 12 edits in branches/safari-610.1.1-branch/Source/JavaScriptCore

Cherry-pick r254760. rdar://problem/59004377

Separate storage of Structure::m_offset into transition and max offset
https://bugs.webkit.org/show_bug.cgi?id=206365

Reviewed by Saam Barati.

Right now, deleteProperty/removePropertyTransition causes a structure transition to uncacheable dictionary. Other transitions
assume that the transition offset (m_offset) is monotonically increasing. In order to support structure transitions for deletion that
do not involve turning into a dictionary (<https://bugs.webkit.org/show_bug.cgi?id=206430>), we first need to separate the transition
offset (the offset of the property that was added/deleted) from the maximum offset.

For example, suppose we have the following operations:

Structure 1 (pinned property table, transitionOffset = _, maxOffset = 2): x y z (delete y, assuming that deletion transitions have been added)
Structure 2 (transitionOffset = 1, maxOffset = 2): x _ z (add w)
Structure 3 (transitionOffset = 1, maxOffset = 2): x w z

Note that without splitting the two, Structures 2/3 would be impossible to represent.

This change:

We split the existing Structure::m_offset into two 16-bit fields, transitionOffset and maxOffset, and put them in 32-bit rare data fields if they overflow. We also rename _inPrevious fields to
transition_ and lastOffset to maxOffset to make the code more clear.

  • runtime/ClonedArguments.cpp: (JSC::ClonedArguments::createStructure):
  • runtime/JSObject.cpp: (JSC::JSObject::markAuxiliaryAndVisitOutOfLineProperties): (JSC::JSObject::visitButterflyImpl):
  • runtime/JSObject.h:
  • runtime/JSObjectInlines.h: (JSC::JSObject::prepareToPutDirectWithoutTransition):
  • runtime/ObjectInitializationScope.cpp: (JSC::ObjectInitializationScope::verifyPropertiesAreInitialized):
  • runtime/PropertyOffset.h: (JSC::numberOfOutOfLineSlotsForMaxOffset): (JSC::numberOfSlotsForMaxOffset): (JSC::numberOfOutOfLineSlotsForLastOffset): Deleted. (JSC::numberOfSlotsForLastOffset): Deleted.
  • runtime/Structure.cpp: (JSC::StructureTransitionTable::contains const): (JSC::StructureTransitionTable::get const): (JSC::StructureTransitionTable::add): (JSC::Structure::Structure): (JSC::Structure::create): (JSC::Structure::materializePropertyTable): (JSC::Structure::addPropertyTransitionToExistingStructureImpl): (JSC::Structure::addNewPropertyTransition): (JSC::Structure::changePrototypeTransition): (JSC::Structure::attributeChangeTransition): (JSC::Structure::toDictionaryTransition): (JSC::Structure::nonPropertyTransitionSlow): (JSC::Structure::flattenDictionaryStructure): (JSC::Structure::pin): (JSC::Structure::pinForCaching): (JSC::Structure::add):
  • runtime/Structure.h:
  • runtime/StructureInlines.h: (JSC::Structure::forEachPropertyConcurrently): (JSC::Structure::checkOffsetConsistency const): (JSC::Structure::add):
  • runtime/StructureRareData.cpp: (JSC::StructureRareData::StructureRareData):
  • runtime/StructureRareData.h:

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

7:09 PM Changeset in webkit [255645] by Alan Coon
  • 3 edits in branches/safari-610.1.1-branch

Cherry-pick r255359. rdar://problem/58570085

REGRESSION: WK1 Accessibility: ASSERTION FAILED: FontCache::singleton().generation() == m_generation
https://bugs.webkit.org/show_bug.cgi?id=206241
<rdar://problem/58570085>

Reviewed by Zalan Bujtas.

Source/WebCore:

Font cache generation bump empties all font related caches and triggers full style resolution. However it is possible
for single element computed style resolution (triggeded by <title> element here) to happen before the full resolution.
In this case a style computed based on parent style with old font generation may get inserted into matched declarations
cache. A subsequent style resolution may then pick up this style and use it as render style.

  • style/StyleBuilderState.cpp: (WebCore::Style::BuilderState::updateFont):

Fix by taking care that the font returned by style resolver is always updated to the current generation.

LayoutTests:

  • platform/mac-wk1/TestExpectations:

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

7:09 PM Changeset in webkit [255644] by Alan Coon
  • 7 edits in branches/safari-610.1.1-branch

Cherry-pick r255141. rdar://problem/58815952

[Web Animations] Update all DocumentTimeline objects when updating animations
https://bugs.webkit.org/show_bug.cgi?id=206819

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Mark a single new WPT progression.

  • web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-replacement-expected.txt:

Source/WebCore:

Developers can create additional DocumentTimeline objects in JavaScript using that class's constructor, and an animation can be
assigned to that timeline after its creation. Until now we would only update an timeline created by a Document when that document's
animations were updated. Now we keep track of all DocumentTimeline objects that are created for a given Document as a vector of weak
references, and we update all of them when updating a document's animations.

  • animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::DocumentTimeline): (WebCore::DocumentTimeline::~DocumentTimeline):
  • animation/DocumentTimeline.h:
  • dom/Document.cpp: (WebCore::Document::updateAnimationsAndSendEvents): (WebCore::Document::addTimeline): (WebCore::Document::removeTimeline):
  • dom/Document.h:

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

7:09 PM Changeset in webkit [255643] by Alan Coon
  • 2 edits in branches/safari-610.1.1-branch/Source/WebCore

Cherry-pick r255431. rdar://problem/58606666

REGRESSION (r252064): [ Mac iOS ] storage/websql/statement-error-callback.html is timing out flakily
https://bugs.webkit.org/show_bug.cgi?id=206291
<rdar://problem/58606666>

Unreviewed, partial rollout of r252064 which seems to have introduced the regression.

No new tests, covered by existing test

  • Modules/webdatabase/SQLTransaction.cpp: (WebCore::SQLTransaction::notifyDatabaseThreadIsShuttingDown):

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

7:09 PM Changeset in webkit [255642] by Alan Coon
  • 5 edits in branches/safari-610.1.1-branch

Cherry-pick r255329. rdar://problem/58606666

REGRESSION (r252064): [ Mac iOS ] storage/websql/statement-error-callback.html is timing out flakily
https://bugs.webkit.org/show_bug.cgi?id=206291
<rdar://problem/58606666>

Reviewed by Maciej Stachowiak.

Source/WebCore:

I found that extending the lifetime of the SQLTransaction by capturing protectedThis in the event loop
task was the source of the flaky timeouts & crashes. Queueing this event loop task in
notifyDatabaseThreadIsShuttingDown() is actually not necessary because calling callErrorCallbackDueToInterruption()
directly would schedule the event loop task for us. Also, in callErrorCallbackDueToInterruption(),
the event loop task only keeps the error callback alive, not just the SQLTransaction object.

No new tests, unskipped existing test.

  • Modules/webdatabase/SQLTransaction.cpp: (WebCore::SQLTransaction::notifyDatabaseThreadIsShuttingDown):

LayoutTests:

Unskip test that is no longer flaky.

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:

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

7:09 PM Changeset in webkit [255641] by Alan Coon
  • 2 edits in branches/safari-610.1.1-branch/LayoutTests

Cherry-pick r255247. rdar://problem/58838711

REGRESSION?: [ Mac wk1 ] storage/indexeddb/modern/blob-cursor.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=206673

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-01-28

  • platform/mac-wk1/TestExpectations:

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

7:09 PM Changeset in webkit [255640] by Alan Coon
  • 4 edits in branches/safari-610.1.1-branch

Cherry-pick r254950. rdar://problem/58544942

REGRESSION (r253519): [WKWebView evaluateJavaScript:completionHandler:] gives a non-nil, non-Error result even when JavaScript cannot be evaluated
<rdar://problem/58544942> and https://bugs.webkit.org/show_bug.cgi?id=206608

Reviewed by Alex Christensen.

Source/WebCore:

Covered by new API test.

  • bindings/js/ScriptController.cpp: (WebCore::ScriptController::executeScriptInWorld): Address a FIXME added in 253519 which had predicted this problem.

Tools:

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

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

7:09 PM Changeset in webkit [255639] by Alan Coon
  • 33 edits
    3 adds in branches/safari-610.1.1-branch

Cherry-pick r255532. rdar://problem/57876140

Add support for specifying background colors when setting marked text
https://bugs.webkit.org/show_bug.cgi?id=207065
<rdar://problem/57876140>

Reviewed by Tim Horton.

Source/WebCore:

Add support for rendering custom highlights (background colors) behind marked text in WebCore. To do this, we
plumb a Vector of CompositionHighlights alongside the Vector of CompositionUnderlines to Editor. At paint time,
we then consult this highlight data to determine which ranges of text in the composition should paint using
custom background colors.

Note that in the future, we should consider refactoring both composition underlines and highlights to use the
MarkedText mechanism for decorating ranges of text instead.

Test: editing/input/composition-highlights.html

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • editing/CompositionHighlight.h: Added. (WebCore::CompositionHighlight::CompositionHighlight): (WebCore::CompositionHighlight::encode const): (WebCore::CompositionHighlight::decode):

Add CompositionHighlight, which represents a range in the composition that should be highlighted with a given
background color.

  • editing/Editor.cpp: (WebCore::Editor::clear): (WebCore::Editor::setComposition):

Add logic for clearing and updating m_customCompositionHighlights.

  • editing/Editor.h: (WebCore::Editor::compositionUsesCustomHighlights const): (WebCore::Editor::customCompositionHighlights const):
  • rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::paintCompositionBackground):

If custom composition highlights are given, use those when painting the composition background; otherwise,
default to painting the entire composition range using Color::compositionFill.

Source/WebCore/PAL:

Add an SPI soft-linking declaration for NSMarkedClauseSegmentAttributeName.

  • pal/spi/cocoa/NSAttributedStringSPI.h:

Source/WebKit:

Implement -setAttributedMarkedText:selectedRange: on WKContentView, and have it extract highlight color
information from the given attributed string. Plumb this through to the web process by serializing and
deserializing WebCore::CompositionHighlights.

  • UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::setMarkedText):
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentViewInteraction.mm: (compositionHighlights):

For each marked text clause, grab the specified background color (defaulting to Color::compositionFill) and use
it to create a list of CompositionHighlights.

(-[WKContentView setAttributedMarkedText:selectedRange:]):
(-[WKContentView setMarkedText:selectedRange:]):
(-[WKContentView _setMarkedText:highlights:selectedRange:]):

  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: (WKBundlePageSetComposition):

Add testing support for specifying highlight ranges when setting marked text.

  • WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:
  • WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp: (WebKit::WebEditorClient::didDispatchInputMethodKeydown):
  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::setCompositionForTesting): (WebKit::WebPage::setCompositionAsync):
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Source/WebKitLegacy/mac:

Adjust some call sites of Editor::setComposition().

  • WebView/WebFrame.mm: (-[WebFrame setMarkedText:selectedRange:]): (-[WebFrame setMarkedText:forCandidates:]):
  • WebView/WebHTMLView.mm: (-[WebHTMLView setMarkedText:selectedRange:]):

Source/WebKitLegacy/win:

Adjust some call sites of Editor::setComposition().

  • WebView.cpp: (WebView::onIMEComposition): (WebView::setCompositionForTesting):

Tools:

Add support in WebKitTestRunner for specifying a list of highlight ranges when setting marked text. This comes
in the form of an additional argument to TextInputController::setMarkedText, which contains an array of objects,
each describing one range (in the composition) to highlight.

  • DumpRenderTree/ios/TextInputControllerIOS.m: (+[TextInputController isSelectorExcludedFromWebScript:]): (+[TextInputController webScriptNameForSelector:]): (-[TextInputController setMarkedText:selectedFrom:length:suppressUnderline:highlights:]): (-[TextInputController setMarkedText:selectedFrom:length:suppressUnderline:]): Deleted.
  • DumpRenderTree/mac/TextInputControllerMac.m: (+[TextInputController isSelectorExcludedFromWebScript:]): (+[TextInputController webScriptNameForSelector:]): (-[TextInputController setMarkedText:selectedFrom:length:suppressUnderline:highlights:]): (-[TextInputController setMarkedText:selectedFrom:length:suppressUnderline:]): Deleted.
  • WebKitTestRunner/InjectedBundle/Bindings/TextInputController.idl:
  • WebKitTestRunner/InjectedBundle/TextInputController.cpp: (WTR::arrayLength): (WTR::createCompositionHighlightData):

Add logic to convert a given JSObject containing the composition highlight information into a WKArrayRef, which
is then passed into WebKit via WKBundlePageSetComposition.

(WTR::TextInputController::setMarkedText):

  • WebKitTestRunner/InjectedBundle/TextInputController.h:

LayoutTests:

Add a test to check that highlighting different parts of a composition range results in the same behavior as
applying background colors using CSS. This test is currently only supported in WebKit2.

  • TestExpectations:
  • editing/input/composition-highlights-expected.html: Added.
  • editing/input/composition-highlights.html: Added.
  • platform/wk2/TestExpectations:

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

7:08 PM Changeset in webkit [255638] by Alan Coon
  • 3 edits in branches/safari-610.1.1-branch/Source/WebKit

Cherry-pick r255503. rdar://problem/58975614

REGRESSION (r251511): [iOS] HDR Playback broken
https://bugs.webkit.org/show_bug.cgi?id=207052
<rdar://problem/58975614>

Reviewed by Maciej Stachowiak.

I missed an XPC service in Bug 203318 when I stopped importing the 'common.sb' sandbox. This broke some
aspects of HDR playback for certain clients.

This patch returns the XPC service, and unblocks access to a network preference file that AVFoundation
needs to read to support some media playback features.

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

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

7:08 PM Changeset in webkit [255637] by Alan Coon
  • 2 edits in branches/safari-610.1.1-branch/Source/WebCore

Cherry-pick r255487. rdar://problem/58838583

REGRESSION: [iOS release] http/tests/security/window-named-proto.html is a flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=206672
<rdar://problem/58838583>

Reviewed by Chris Dumez.

This is a speculative fix to increase the priority of the DataURLDecoder's WorkQueue such that
it is less likely to be preempted.

Covered by existing tests.

  • platform/network/DataURLDecoder.cpp: (WebCore::DataURLDecoder::decodeQueue):

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

7:08 PM Changeset in webkit [255636] by Alan Coon
  • 4 edits in branches/safari-610.1.1-branch/Source/WebKit

Cherry-pick r255458. rdar://problem/59016256

Can still get stuck after swipe backwards with a slow server, even after r254552
https://bugs.webkit.org/show_bug.cgi?id=207017
<rdar://problem/59016256>

Reviewed by Chris Dumez.

  • UIProcess/ProvisionalPageProxy.cpp: (WebKit::ProvisionalPageProxy::unfreezeLayerTreeDueToSwipeAnimation):
  • UIProcess/ProvisionalPageProxy.h:
  • UIProcess/WebPageProxy.cpp: There's a second case where you can get stuck with the "swipe gesture" layer tree freeze reason in the web process: when doing a cross-origin navigation where the load takes more than 3 seconds (the swipe snapshot timeout) to commit, the provisional page will have mirrored the original page's frozen state upon creation, but will not ever receive the unfreeze, because it is sent while still provisional.

To fix this, just forward the unfreeze message to the provisional page.

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

7:08 PM Changeset in webkit [255635] by Alan Coon
  • 2 edits in branches/safari-610.1.1-branch/Source/WebKit

Cherry-pick r255456. rdar://problem/58966044

REGRESSION (r253267): Swipe from edge on Twitter images no longer goes back
https://bugs.webkit.org/show_bug.cgi?id=207011
<rdar://problem/58966044>

Reviewed by Wenson Hsieh.

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]): The new touch-event async deferring gesture recognizer was erroneously deferring edge swipes, which are not allowed to be blocked by touch events. Opt them out of the new gesture gate mechanism.

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

7:08 PM Changeset in webkit [255634] by Alan Coon
  • 3 edits in branches/safari-610.1.1-branch/Source/WebKit

Cherry-pick r255428. rdar://problem/58900030

[iOS] Remove report rule for 'com.apple.runningboard' from the Network and GPU process sandboxes
https://bugs.webkit.org/show_bug.cgi?id=206980
<rdar://problem/58900030>

Reviewed by Maciej Stachowiak.

Remove the logging now that we have useful backtraces.

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

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

7:08 PM Changeset in webkit [255633] by Alan Coon
  • 2 edits in branches/safari-610.1.1-branch/Source/WebCore

Cherry-pick r255417. rdar://problem/58780773

Do not notify other applications when deactivating the audio session
https://bugs.webkit.org/show_bug.cgi?id=206963

Reviewed by Jer Noble.

Tested manually because this change is iOS-only and only reproduces on hardware.

  • platform/audio/ios/AudioSessionIOS.mm: (WebCore::AudioSession::tryToSetActiveInternal): Don't pass the AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation flag to -[AVAudioSession setActive:error].

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

7:08 PM Changeset in webkit [255632] by Alan Coon
  • 2 edits in branches/safari-610.1.1-branch/Source/WebCore

Cherry-pick r255400. rdar://problem/58838711

Set QoS of blobUtilityQueue to be Utility
https://bugs.webkit.org/show_bug.cgi?id=206971

Reviewed by Chris Dumez.

  • platform/network/BlobRegistryImpl.cpp: (WebCore::blobUtilityQueue):

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

7:08 PM Changeset in webkit [255631] by Alan Coon
  • 4 edits
    2 adds in branches/safari-610.1.1-branch

Cherry-pick r255385. rdar://problem/58954516

[iPadOS] Select popovers on amazon.com sometimes dismiss immediately after appearing
https://bugs.webkit.org/show_bug.cgi?id=206948
<rdar://problem/58954516>

Reviewed by Tim Horton.

Source/WebKit:

Amazon adds active touchstart event listeners to their select elements, where they call preventDefault() and
programmatically focus the select element. Doing so prevents clicks from being dispatched by allowing the web
touch event gesture to recognize instead of the synthetic click gesture, which (inside -_singleTapRecognized:)
would otherwise dismiss any currently presented popover.

After making touchstart events dispatch asynchronously, preventing touchstart no longer causes other native
gestures (such as the synthetic click gesture) to fail in the case where there is a sync touchmove or touchend
event listener, and the touch gesture has ended before the touchstart handler has finished executing and told
the UI process whether or not the touch was handled. This is because the touchend or touchmove is dispatched
synchronously while the touchstart is still being processed; while the web page sees the correct order of
events, the UI process will end up learning that the synchronous touch was handled before the response to the
asynchronously dispatched touchstart event has arrived.

Our current logic in the sync touch event dispatch case then unconditionally ends gesture deferral by calling
doneDeferringNativeGestures with handled equal to whether or not the touch event (a "touchend", in this
case) had been handled. However, in the case where touchstart event is prevented but the touchend event is not,
this will cause us to prematurely stop deferring gestures even though the page called preventDefault() in the
touchstart event handler, and allow the synthetic click gesture to recognize when it shouldn't.

To fix this, keep deferring native gestures after handling a sync touch in the case where a touchstart event is
still being handled; instead, remember whether the touch event was handled using a new member variable
(m_handledSynchronousTouchEventWhileDispatchingPreventableTouchStart), and consult this when the response to
the touchstart has been received in the UI process to determine whether platform gestures should be allowed to
recognize. This variable is reset once we're done handling the touchstart.

Test: fast/events/touch/ios/prevent-default-with-slow-touchstart-handler.html

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::handlePreventableTouchEvent):
  • UIProcess/WebPageProxy.h:

LayoutTests:

Adds a new layout test to verify that preventing default on elements with slow, active touchstart event handlers
actually prevents click events from being dispatched.

  • fast/events/touch/ios/prevent-default-with-slow-touchstart-handler-expected.txt: Added.
  • fast/events/touch/ios/prevent-default-with-slow-touchstart-handler.html: Added.

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

7:08 PM Changeset in webkit [255630] by Alan Coon
  • 4 edits in branches/safari-610.1.1-branch/Source/WebKit

Cherry-pick r255376. rdar://problem/58440111

Unreviewed, fix Catalyst build after r255366

  • Shared/WebPreferencesDefaultValues.cpp: (WebKit::defaultDisallowSyncXHRDuringPageDismissalEnabled):
  • Shared/WebPreferencesDefaultValues.h:
  • Shared/ios/WebPreferencesDefaultValuesIOS.mm:

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

7:08 PM Changeset in webkit [255629] by Alan Coon
  • 2 edits in branches/safari-610.1.1-branch/Source/WebKit

Cherry-pick r255375. rdar://problem/58791603

Crash under com.apple.WebKit.Networking at WebKit: WebKit::WebIDBServer::suspend
https://bugs.webkit.org/show_bug.cgi?id=206904
<rdar://problem/58791603>

Reviewed by Maciej Stachowiak.

Wait until m_server is set in constructor of WebIDBServer to make sure m_server can be accessed in
WebIDBServer::suspend.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp: (WebKit::WebIDBServer::WebIDBServer):

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

7:08 PM Changeset in webkit [255628] by Alan Coon
  • 4 edits in branches/safari-610.1.1-branch/Source/WebKit

Cherry-pick r255366. rdar://problem/58440111

[iOS] Add managed preference to allow legacy sync XHRs during page dismissal
https://bugs.webkit.org/show_bug.cgi?id=206944
<rdar://problem/58440111>

Reviewed by Alex Christensen.

Add managed preference for iOS to allow enterprise customers to keep using legacy sync XHRs
during page dismissal.

  • Shared/WebPreferencesDefaultValues.cpp: (WebKit::defaultDisallowSyncXHRDuringPageDismissalEnabled):
  • Shared/WebPreferencesDefaultValues.h:
  • Shared/ios/WebPreferencesDefaultValuesIOS.mm: (WebKit::allowsDeprecatedSynchronousXMLHttpRequestDuringUnload):

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

7:08 PM Changeset in webkit [255627] by Alan Coon
  • 15 edits
    3 adds in branches/safari-610.1.1-branch

Cherry-pick r255226. rdar://problem/58780584

REGRESSION (r253634): cricbuzz.com media controls vanish depending on page scale
https://bugs.webkit.org/show_bug.cgi?id=206788
rdar://problem/58780584

Reviewed by Tim Horton.
Source/WebCore:

r253634 changed "delegatesPageScaling"'" to a flag on ScrollView. However, this changed behavior
for subframes; Settings are propagated down, but only the main ScrollView had delegatesPageScaling
set on it.

"delegatesPageScaling" is a page-level thing (subframes don't independently zoom), so it
should live on Page. Move it there.

The bug was triggered by incorrectly taking page scale into account for rects in the compositing
overlap map (see RenderLayerCompositor::addToOverlapMap()) in subframes, and those rects
changing on zoom.

Test: compositing/backing/page-scale-overlap-in-iframe.html

  • page/Frame.cpp: (WebCore::Frame::frameScaleFactor const):
  • page/FrameSnapshotting.cpp: (WebCore::snapshotFrameRectWithClip):
  • page/FrameView.cpp: (WebCore::FrameView::visibleContentScaleFactor const):
  • page/Page.cpp: (WebCore::Page::setPageScaleFactor): (WebCore::Page::setDelegatesScaling):
  • page/Page.h: (WebCore::Page::delegatesScaling const):
  • platform/ScrollView.cpp: (WebCore::ScrollView::setDelegatesPageScaling): Deleted.
  • platform/ScrollView.h: (WebCore::ScrollView::delegatesPageScaling const): Deleted.
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::addToOverlapMap const):

Source/WebKit:

r253634 changed "delegatesPageScaling"'" to a flag on ScrollView. However, this changed behavior
for subframes; Settings are propagated down, but only the main ScrollView had delegatesPageScaling
set on it.

"delegatesPageScaling" is a page-level thing (subframes don't independently zoom), so it
should live on Page. Move it there.

The bug was triggered by incorrectly taking page scale into account for rects in the compositing
overlap map (see RenderLayerCompositor::addToOverlapMap()) in subframes, and those rects
changing on zoom.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
  • WebProcess/WebPage/ios/FindControllerIOS.mm: (WebKit::FindIndicatorOverlayClientIOS::drawRect):

Source/WebKitLegacy/mac:

r253634 changed "delegatesPageScaling"'" to a flag on ScrollView. However, this changed behavior
for subframes; Settings are propagated down, but only the main ScrollView had delegatesPageScaling
set on it.

"delegatesPageScaling" is a page-level thing (subframes don't independently zoom), so it
should live on Page. Move it there.

The bug was triggered by incorrectly taking page scale into account for rects in the compositing
overlap map (see RenderLayerCompositor::addToOverlapMap()) in subframes, and those rects
changing on zoom.

  • WebCoreSupport/WebFrameLoaderClient.mm: (WebFrameLoaderClient::transitionToCommittedForNewPage):

LayoutTests:

Test only really makes sense on iOS where the viewport tag is respected, but include
macOS results instead of skipping.

  • compositing/backing/page-scale-overlap-in-iframe-expected.txt: Added.
  • compositing/backing/page-scale-overlap-in-iframe.html: Added.
  • platform/ios-wk2/compositing/backing/page-scale-overlap-in-iframe-expected.txt: Added.

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

7:08 PM Changeset in webkit [255626] by Alan Coon
  • 13 edits in branches/safari-610.1.1-branch

Cherry-pick r255058. rdar://problem/58830068

Make sure fetch tasks go to network if service worker never gets to activated
https://bugs.webkit.org/show_bug.cgi?id=206648

Reviewed by Chris Dumez.

Source/WebCore:

In case worker context process crashes, the SWServerWorker gets set to NotRunning.
If the SWServerWorker has pending activating completion handlers, they will never be called until the worker is destroyed.
But the worker may never be destroyed until its registration is destroyed.
This may trigger service worker fetch task hangs.

To fix this, make sure to call activating completion handlers whenever the SWServerWorker state is changed to either Terminating or NotRunning.

Covered by updated test.

  • workers/service/server/SWServerWorker.cpp: (WebCore::SWServerWorker::~SWServerWorker): (WebCore::SWServerWorker::whenActivated): (WebCore::SWServerWorker::setState):
  • workers/service/server/SWServerWorker.h:

Source/WebKit:

In case activating completion handlers are not called, the fetch task timeout should kick in and make the load go to network process.
The issue is that our code was using the context connection to do so.
If the fetch task is waiting for the worker activation, the context connection might not be set and the timeout will be a no-op.

To fix this, the fetch task will do as if its context is closed when the timeout fires.
The fetck task now has a weak pointer to the WebSWServerConnection and will use to terminate the service worker as done previously.

We no longer handle all ongoing fetch tasks of the ongoing service worker.
Each individual fetch task timeout provides the same level of protection.
The service worker will anyway get terminated which will race to finalize the service worker fetch tasks with each of their timeout.

  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp: (WebKit::ServiceWorkerFetchTask::ServiceWorkerFetchTask): (WebKit::ServiceWorkerFetchTask::timeoutTimerFired):
  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:
  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: (WebKit::WebSWServerConnection::createFetchTask): (WebKit::WebSWServerConnection::fetchTaskTimedOut):
  • NetworkProcess/ServiceWorker/WebSWServerConnection.h:
  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp: (WebKit::WebSWServerToContextConnection::fetchTaskTimedOut):

LayoutTests:

  • http/wpt/service-workers/service-worker-spinning-activate.https-expected.txt:
  • http/wpt/service-workers/service-worker-spinning-activate.https.html:

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

5:51 PM Changeset in webkit [255625] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

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:]):

5:47 PM Changeset in webkit [255624] by Jonathan Bedard
  • 2 edits in trunk/Tools

results.webkit.org: Support jsc stress tests
https://bugs.webkit.org/show_bug.cgi?id=204096

Rubber-stamped by Aakash Jain.

  • Scripts/run-javascriptcore-tests:

(runJSCStressTests): Add pass and failures to reported results.

5:37 PM Changeset in webkit [255623] by Alan Coon
  • 8 edits in branches/safari-610.1.1-branch/Source

Versioning.

5:32 PM Changeset in webkit [255622] by Alexey Shvayka
  • 2 edits in trunk/Tools

Make Bugzilla._find_select_element_for_flag more robust
https://bugs.webkit.org/show_bug.cgi?id=207148

Reviewed by Jonathan Bedard.

This patch resolves two FIXMEs:

  1. _find_select_element_for_flag() is now used in _fill_attachment_form() method.
  2. _find_select_element_for_flag() now does not rely on order of <select> elements.
  • Scripts/webkitpy/common/net/bugzilla/bugzilla.py:

(Bugzilla._fill_attachment_form):
(Bugzilla._find_select_element_for_flag):

5:03 PM Changeset in webkit [255621] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] inspector/unit-tests/server-timing-entry.html is flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=207167

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk1/TestExpectations:
5:00 PM Changeset in webkit [255620] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-gpuprocess.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207166

Unreviewed test gardening.

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

  • platform/mac-wk2/TestExpectations:
4:50 PM Changeset in webkit [255619] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-padding.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207165

Unreviewed test gardening.

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

  • platform/mac-wk2/TestExpectations:
4:49 PM Changeset in webkit [255618] by Truitt Savell
  • 2 edits in trunk/LayoutTests

LayoutTest inspector/controller/runtime-controller-import.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=168926

Updating because the test is also flaky failing.

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac/TestExpectations:
4:36 PM Changeset in webkit [255617] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] inspector/heap/imported-snapshot.html is flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=207163

Updating to include an exclude for timeouts.

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac/TestExpectations:
4:34 PM Changeset in webkit [255616] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[iOS wk2 Debug] legacy-animation-engine/animations/play-state-in-shorthand.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207164

Unreviewed test gardening.

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

  • platform/ios-wk2/TestExpectations:
4:31 PM Changeset in webkit [255615] by sihui_liu@apple.com
  • 4 edits in trunk/Source

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.

4:28 PM Changeset in webkit [255614] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Regression: (254414?) [ iOS wk2 ] imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207161

Unreviewed test gardening.

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

  • platform/ios-wk2/TestExpectations:
4:15 PM Changeset in webkit [255613] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] css2.1/20110323/replaced-intrinsic-ratio-001.htm is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207160

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk1/TestExpectations:
3:54 PM Changeset in webkit [255612] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION: [ macOS wk1 ] inspector/debugger/tail-deleted-frames/tail-deleted-frames-scopes.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=207157

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk1/TestExpectations:
3:48 PM Changeset in webkit [255611] by achristensen@apple.com
  • 5 edits in trunk

Reduce size of HashMap and HashSet
https://bugs.webkit.org/show_bug.cgi?id=207138

Reviewed by Yusuke Suzuki.

Source/WTF:

This reduces sizeof(HashMap) and sizeof(HashSet) from 24 to 8 on 64-bit systems.
I measured that the overwhelming majority of HashMaps and HashSets never see more than 0 elements,
so I moved the table metadata (tableSize, tableSizeMask, keyCount, deletedCount) to inside the
dynamically allocated memory. This makes another branch in size() for non-empty tables
and an additional read and write when rehashing in exchange for fewer writes in the constructor
and increased cache locality of everything that uses HashMap and HashSet, which is basically everything.

  • wtf/HashTable.h:

(WTF::HashTable::~HashTable):
(WTF::HashTable::end):
(WTF::HashTable::end const):
(WTF::HashTable::random):
(WTF::HashTable::size const):
(WTF::HashTable::capacity const):
(WTF::HashTable::isEmpty const):
(WTF::HashTable::reserveInitialCapacity):
(WTF::HashTable::shouldExpand const):
(WTF::HashTable::mustRehashInPlace const):
(WTF::HashTable::shouldShrink const):
(WTF::HashTable::shrink):
(WTF::HashTable::makeIterator):
(WTF::HashTable::makeConstIterator const):
(WTF::HashTable::makeKnownGoodIterator):
(WTF::HashTable::makeKnownGoodConstIterator const):
(WTF::HashTable::tableSize const):
(WTF::HashTable::setTableSize const):
(WTF::HashTable::tableSizeMask const):
(WTF::HashTable::setTableSizeMask):
(WTF::HashTable::keyCount const):
(WTF::HashTable::setKeyCount const):
(WTF::HashTable::deletedCount const):
(WTF::HashTable::setDeletedCount const):
(WTF::KeyTraits>::HashTable):
(WTF::KeyTraits>::inlineLookup):
(WTF::KeyTraits>::lookupForWriting):
(WTF::KeyTraits>::fullLookupForWriting):
(WTF::KeyTraits>::addUniqueForInitialization):
(WTF::KeyTraits>::add):
(WTF::KeyTraits>::addPassingHashCode):
(WTF::KeyTraits>::remove):
(WTF::KeyTraits>::removeIf):
(WTF::KeyTraits>::allocateTable):
(WTF::KeyTraits>::deallocateTable):
(WTF::KeyTraits>::expand):
(WTF::KeyTraits>::shrinkToBestSize):
(WTF::KeyTraits>::deleteReleasedWeakBuckets):
(WTF::KeyTraits>::rehash):
(WTF::KeyTraits>::clear):
(WTF::KeyTraits>::swap):
(WTF::KeyTraits>::checkTableConsistencyExceptSize const):

Tools:

  • TestWebKitAPI/Tests/WTF/HashMap.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/HashSet.cpp:

(TestWebKitAPI::TEST):

3:40 PM Changeset in webkit [255610] by Chris Dumez
  • 6 edits in trunk/Source/WebKit

[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):

3:38 PM Changeset in webkit [255609] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed iOS build fix; lambdas need an arrow operator between the paramaters and return type.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):

3:38 PM Changeset in webkit [255608] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[ iOS wk2 Release ] http/tests/websocket/tests/hybi/workers/close.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207156

Unreviewed test gardening.

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

  • platform/ios-wk2/TestExpectations:
3:33 PM Changeset in webkit [255607] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] inspector/canvas/recording-2d-full.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=207154

Updating expectations for newer OS

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk1/TestExpectations:
3:31 PM Changeset in webkit [255606] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

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

Unreviewed test gardening.

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

  • platform/ios-wk2/TestExpectations:
3:31 PM Changeset in webkit [255605] by Alexey Shvayka
  • 2 edits in trunk/Tools

obsolete_attachment should not fail when flags do not exist
https://bugs.webkit.org/show_bug.cgi?id=171121

Reviewed by Jonathan Bedard.

Before this change, an error occured if a contributor without EditBugs privileges tried
to obsolete not their own attachment. With this patch, uploading routine continues with
friendly console warning like we have in reassign_bug() method.

  • Scripts/webkitpy/common/net/bugzilla/bugzilla.py:

(Bugzilla):
(Bugzilla.obsolete_attachment):
(Bugzilla.reassign_bug): Use NO_EDIT_BUGS_MESSAGE constant.

3:26 PM Changeset in webkit [255604] by Alan Coon
  • 1 copy in tags/Safari-610.1.1.4

Tag Safari-610.1.1.4.

3:09 PM Changeset in webkit [255603] by Wenson Hsieh
  • 6 edits
    2 adds in trunk

[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.
3:04 PM Changeset in webkit [255602] by Truitt Savell
  • 3 edits in trunk/LayoutTests

[ macOS iOS ] fast/dom/connected-subframe-counter-overflow.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=207152

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
2:58 PM Changeset in webkit [255601] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mac wk2 Release ] fast/dom/navigator-detached-no-crash.html flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207151

Unreviewed test gardening.

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

  • platform/mac-wk2/TestExpectations:
2:52 PM Changeset in webkit [255600] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] platform/mac/webrtc/captureCanvas-webrtc-software-encoder.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207150

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk1/TestExpectations:
2:45 PM Changeset in webkit [255599] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mojave wk2 ] imported/w3c/web-platform-tests/webrtc/RTCDtlsTransport-state.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207149

Unreviewed test gardening.

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

  • platform/mac-wk2/TestExpectations:
2:44 PM Changeset in webkit [255598] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[iOS] Layout Test animations/duplicate-keys.html is a flaky failure

https://bugs.webkit.org/show_bug.cgi?id=185332

Updating on macOS wk1 because the same failure is also seen there

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk1/TestExpectations:
2:34 PM Changeset in webkit [255597] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mac ] legacy-animation-engine/compositing/geometry/partial-layout-update.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207147

Unreviewed test gardening.

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

  • platform/mac/TestExpectations:
2:26 PM Changeset in webkit [255596] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] media/media-source/media-source-seek-redundant-append.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=207146

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk1/TestExpectations:
2:21 PM Changeset in webkit [255595] by Chris Dumez
  • 5 edits
    1 add in trunk

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):

2:19 PM Changeset in webkit [255594] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mojave wk2 ] media/media-fragments/TC0087.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207143

Unreviewed test gardening.

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

  • platform/mac-wk2/TestExpectations:
2:16 PM Changeset in webkit [255593] by graouts@webkit.org
  • 6 edits
    4 adds in trunk

[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.
2:15 PM Changeset in webkit [255592] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

[iPad] Videos on nhl.com can't be scrubbed when loaded with desktop UA.
https://bugs.webkit.org/show_bug.cgi?id=207058

Reviewed by Darin Adler.

The video controls on nhl.com listen for mousedown/mousemove/mouseup events, not
touchstart/touchmove/touchend events. Until nhl.com can update their site to support touch
events, add them to the quirks list for simplated mouse events.

Drive-by fix: There's no need to re-parse the entire URL and walk through all the cases
every time shouldDispatchSimulatedMouseEvents() is called. Save the results of the initial
pass so that subsequent checks are just a simple bool check.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):

2:13 PM Changeset in webkit [255591] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] inspector/canvas/recording-webgl-full.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=207145

Updating expectations

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk1/TestExpectations:
1:54 PM Changeset in webkit [255590] by Lauro Moura
  • 4 edits in trunk

[WebKitTestRunner] setOpenPanelFiles support in non-local tests
https://bugs.webkit.org/show_bug.cgi?id=206517

Reviewed by Carlos Alberto Lopez Perez.

Tools:

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setOpenPanelFiles): Use file:// if the passed path
starts with a leading slash instead of using the test URL, which could
cause input forms with invalid file data.

LayoutTests:

  • platform/gtk/TestExpectations: Update expectations after fix.
1:49 PM Changeset in webkit [255589] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Layout Test svg/custom/object-sizing-explicit-width.xhtml is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=181058

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk1/TestExpectations:
1:41 PM Changeset in webkit [255588] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] media/modern-media-controls/compact-media-controls/compact-media-controls-constructor.html is flaky failing (192974)
https://bugs.webkit.org/show_bug.cgi?id=192974

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk1/TestExpectations:
1:39 PM Changeset in webkit [255587] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mac ] requestidlecallback/requestidlecallback-is-called.html flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207142

Unreviewed test gardening.

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

  • platform/mac/TestExpectations:
1:35 PM Changeset in webkit [255586] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

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.

1:33 PM Changeset in webkit [255585] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION: [ macOS wk2 ] inspector/canvas/create-context-bitmaprenderer.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207141

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk2/TestExpectations:
1:23 PM Changeset in webkit [255584] by Alexey Shvayka
  • 4 edits in trunk

\0 identity escapes should be syntax errors in Unicode patterns only
https://bugs.webkit.org/show_bug.cgi?id=207114

Reviewed by Darin Adler.

JSTests:

  • test262/expectations.yaml: Mark 2 test cases as passing.

Source/JavaScriptCore:

This change adds a separate check for null character because strchr
always returns a non-null pointer when called with '\0' as second argument.

Grammar: https://tc39.es/ecma262/#prod-annexB-IdentityEscape
(/u flag precludes the use of SourceCharacterIdentityEscape)

  • yarr/YarrParser.h:

(JSC::Yarr::Parser::isIdentityEscapeAnError):

1:12 PM Changeset in webkit [255583] by Truitt Savell
  • 2 edits
    2 adds in trunk/LayoutTests

[ iOS wk2 ] compositing/backing/page-scale-overlap-in-iframe.html failing.
https://bugs.webkit.org/show_bug.cgi?id=207116

Unreviewed test gardening.

Added an expectation file for iPad.

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

  • platform/ipad/TestExpectations:
  • platform/ipad/compositing/backing/page-scale-overlap-in-iframe-expected.txt: Added.
12:44 PM Changeset in webkit [255582] by youenn@apple.com
  • 4 edits in trunk/Source/WebCore

[ 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:
12:19 PM Changeset in webkit [255581] by eric.carlson@apple.com
  • 8 edits in trunk/Source

[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:
11:41 AM Changeset in webkit [255580] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[ews] Set custom build summary for webkitpy tests
https://bugs.webkit.org/show_bug.cgi?id=207027

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/factories.py:
  • BuildSlaveSupport/ews-build/steps.py:

(WebKitPyTest.setBuildSummary):
(WebKitPyTest.getResultSummary):

  • BuildSlaveSupport/ews-build/factories_unittest.py:
11:39 AM Changeset in webkit [255579] by Russell Epstein
  • 8 edits in branches/safari-609-branch/Source

Versioning.

11:37 AM Changeset in webkit [255578] by Jonathan Bedard
  • 2 edits in trunk/Tools

run-javascriptcore-tests: Don't split binary results
https://bugs.webkit.org/show_bug.cgi?id=207118

Rubber-stamped by Aakash Jain.

  • Scripts/run-javascriptcore-tests:

(runTest): Only report aggregated binary results.

11:29 AM Changeset in webkit [255577] by commit-queue@webkit.org
  • 6 edits
    3 adds in trunk/Source

Start splitting platform specific overrides of default enable behavior into their own files
https://bugs.webkit.org/show_bug.cgi?id=207105

Patch by Sam Weinig <weinig@apple.com> on 2020-02-03
Reviewed by Dean Jackson.

Source/WebKit:

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::shouldPlugInAutoStartFromOrigin):
Switch to using the ENABLE() helper macro to correctly guard against the case that
ENABLE_PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC is defined and equal to 0.

Source/WTF:

Splits out platform specific overrides of default enable behavior into separate files,
starting with one for all of the Cocoa related ports, one for Apple's Windows port, and
one for the WinCario port.

The rule is now that all ENABLE_* macros should have a default defined in PlatformEnable.h,
but platforms are allowed to override it via their PlatformEnable*.h file. For now, I manually
ensured that all the defines in PlatformEnableCocoa.h, PlatformEnableWinApple.h and PlatformEnableWinCairo.h
also had defaults in PlatformEnable.h, but going forward this needs be validated either through
some sort of macro-based validation, through the style checker or something else.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/PlatformEnable.h:
  • wtf/PlatformEnableCocoa.h: Copied from Source/WTF/wtf/PlatformEnable.h.
  • wtf/PlatformEnableWinApple.h: Copied from Source/WTF/wtf/PlatformEnable.h.
  • wtf/PlatformEnableWinCairo.h: Copied from Source/WTF/wtf/PlatformEnable.h.
11:11 AM Changeset in webkit [255576] by Alan Coon
  • 8 edits in branches/safari-610.1.1-branch/Source

Versioning.

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

REGRESSION: [ macOS wk1 ] css3/selectors3/xml/css3-modsel-d2.xml is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207133

Unreviewed test gardening

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk1/TestExpectations:
10:41 AM Changeset in webkit [255574] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] inspector/canvas/create-context-2d.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207132

Unreviewed test gardening

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac/TestExpectations:
10:36 AM Changeset in webkit [255573] by Truitt Savell
  • 3 edits in trunk/LayoutTests

Fix expectation after r255561 that needed to be just iPad
https://bugs.webkit.org/show_bug.cgi?id=207116

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/ipad/TestExpectations:
10:25 AM Changeset in webkit [255572] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Flaky Test: inspector/worker/debugger-pause.html
https://bugs.webkit.org/show_bug.cgi?id=206285

Unreviewed test gardening

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac/TestExpectations:
9:54 AM Changeset in webkit [255571] by Truitt Savell
  • 2 edits in trunk/LayoutTests

inspector/heap/getRemoteObject.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=206903

Updating expectations for an existing bug

Unreviewed test gardening

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk2/TestExpectations:
9:43 AM Changeset in webkit [255570] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] webgpu/whlsl/buffer-vertex.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207127

Unreviewed test gardening

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk2/TestExpectations:
9:36 AM Changeset in webkit [255569] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] transitions/start-transform-transition.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207125

Unreviewed test gardening

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk1/TestExpectations:
9:21 AM Changeset in webkit [255568] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] compositing/backing/animate-into-view.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=207124

Unreviewed test gardening

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk1/TestExpectations:
9:21 AM Changeset in webkit [255567] by Keith Rollin
  • 2 edits in trunk/Source/WebKit

Unreviewed watchOS build fix after r255559- add missing semi-colon.

  • UIProcess/ios/forms/WKFocusedFormControlView.mm:

(-[WKFocusedFormControlView scrollOffsetForCrownInputOffset:]):

9:10 AM Changeset in webkit [255566] by Chris Dumez
  • 2 edits in trunk/Tools

Unreviewed, disable ResponsivenessTimer test in Debug / ASAN

The ResponsivenessTimer is disabled for those configurations as of r255518.

  • TestWebKitAPI/Tests/WebKit/ResponsivenessTimerCrash.mm:
9:02 AM Changeset in webkit [255565] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-then-proximity.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207120

Unreviewed test gardening

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk2/TestExpectations:
8:38 AM Changeset in webkit [255564] by youenn@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Make sure RTCVideoEncoderH264 generate a keyframe even if the frame that was supposed to be a key frame was dropped
https://bugs.webkit.org/show_bug.cgi?id=207108

Reviewed by Eric Carlson.

Add a parameter telling whether a frame to be encoded should be a key frame.
In encoder callback, if the frame is expected to be a key frame, set a flag to force the next frame to be a key frame.
This ensures that keyframe sending is not delayed in case encoding is dropping or failing to encode frames.

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm:

(-[RTCVideoEncoderH264 initWithCodecInfo:]):
(-[RTCVideoEncoderH264 encode:codecSpecificInfo:frameTypes:]):
(-[RTCVideoEncoderH264 frameWasEncoded:flags:sampleBuffer:codecSpecificInfo:width:height:renderTimeMs:timestamp:rotation:isKeyFrameRequired:]):

8:26 AM Changeset in webkit [255563] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] webgpu/whlsl/nested-loop.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207117

Unreviewed test gardening

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk2/TestExpectations:
8:25 AM Changeset in webkit [255562] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

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):

8:23 AM Changeset in webkit [255561] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ iOS wk2 ] compositing/backing/page-scale-overlap-in-iframe.html failing.
https://bugs.webkit.org/show_bug.cgi?id=207116

Unreviewed test gardening.

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

  • platform/ios-wk2/TestExpectations:
8:03 AM Changeset in webkit [255560] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[macS wk2] LayoutTest/tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-then-horizontal.html is a flaky failure. (171839)
https://bugs.webkit.org/show_bug.cgi?id=171839

Removing "debug" as the failure is also happening on release.

Unreviewed test gardening

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-02-03

  • platform/mac-wk2/TestExpectations:
6:14 AM Changeset in webkit [255559] by zandobersek@gmail.com
  • 30 edits in trunk

Use std::hypot() where possible
https://bugs.webkit.org/show_bug.cgi?id=198483

Reviewed by Carlos Garcia Campos.

Use std::hypot() where possible, allowing for a possibly more precise
calculation of square roots of sums of two or three square values.

Source/WebCore:

  • css/CSSGradientValue.cpp:

(WebCore::horizontalEllipseRadius):

  • platform/audio/FFTFrame.cpp:

(WebCore::FFTFrame::print):

  • platform/graphics/FloatPoint.cpp:

(WebCore::FloatPoint::length const): Deleted.

  • platform/graphics/FloatPoint.h:

(WebCore::FloatPoint::length const):

  • platform/graphics/FloatPoint3D.h:

(WebCore::FloatPoint3D::length const):

  • platform/graphics/FloatSize.cpp:

(WebCore::FloatSize::diagonalLength const): Deleted.

  • platform/graphics/FloatSize.h:

(WebCore::FloatSize::diagonalLength const):

  • platform/graphics/GeometryUtilities.cpp:

(WebCore::euclidianDistance):

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::computeLineBoundsAndAntialiasingModeForText):

  • platform/graphics/PathTraversalState.cpp:

(WebCore::distanceLine):

  • platform/graphics/cairo/CairoOperations.cpp:

(WebCore::Cairo::computeLineBoundsAndAntialiasingModeForText):

  • platform/graphics/cairo/PathCairo.cpp:

(WebCore::Path::addArcTo):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::roundToDevicePixels):

  • platform/graphics/filters/FETurbulence.cpp:

(WebCore::FETurbulence::initPaint):

  • platform/graphics/transforms/AffineTransform.cpp:

(WebCore::AffineTransform::xScale const):
(WebCore::AffineTransform::yScale const):

  • platform/graphics/transforms/RotateTransformOperation.cpp:

(WebCore::RotateTransformOperation::blend):

  • platform/graphics/transforms/TransformationMatrix.cpp:

(WebCore::v3Length):
(WebCore::decompose2):
(WebCore::TransformationMatrix::rotate3d):

  • rendering/RenderThemeIOS.mm:

(WebCore::shortened):

  • rendering/style/BasicShapes.cpp:

(WebCore::BasicShapeCircle::floatValueForRadiusInBox const):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::calculateScreenFontSizeScalingFactor):

  • svg/SVGAnimateMotionElement.cpp:

(WebCore::SVGAnimateMotionElement::calculateDistance):

  • svg/SVGLengthContext.cpp:

(WebCore::SVGLengthContext::valueForLength):
(WebCore::SVGLengthContext::convertValueFromUserUnitsToPercentage const):
(WebCore::SVGLengthContext::convertValueFromPercentageToUserUnits const):

  • svg/SVGTransformDistance.cpp:

(WebCore::SVGTransformDistance::distance const):

  • svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:

Source/WebKit:

  • Platform/classifier/ResourceLoadStatisticsClassifier.cpp:

(WebKit::vectorLength):

  • UIProcess/ios/forms/WKFocusedFormControlView.mm:

(-[WKFocusedFormControlView scrollOffsetForCrownInputOffset:]):

Tools:

  • TestWebKitAPI/mac/DragAndDropSimulatorMac.mm:

(-[DragAndDropSimulator initialProgressForMouseDrag]):

4:17 AM Changeset in webkit [255558] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[JHBuild] remove libvpx
https://bugs.webkit.org/show_bug.cgi?id=207103

Patch by Víctor Manuel Jáquez Leal <vjaquez@igalia.com> on 2020-02-03
Reviewed by Xabier Rodriguez-Calvar.

libvpx were added in jhbuild in times of OpenWebRTC. Nowadays, LibWebRTC is used and libvpx is
installed through Tools/gtk/install-dependencies, thus it should be removed from jhbuild.modules

  • gstreamer/jhbuild.modules: remove libvpx.
2:31 AM Changeset in webkit [255557] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebInspectorUI

Unreviewed. Fix the inspector files combination after r255547

  • UserInterface/Main.html: Remove Views/SizesToFitNavigationBar.js that was removed in r255547
2:27 AM Changeset in webkit [255556] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Crash in WebKitAccessible
https://bugs.webkit.org/show_bug.cgi?id=207093
<rdar://problem/59088456>

Patch by Jonathan Kingston <jonathan@jooped.co.uk> on 2020-02-03
Reviewed by Carlos Garcia Campos.

Fixed a debug crash in WebKitAccessible caused by detatching an accessibility wrapper multiple times.

  • accessibility/atk/AccessibilityObjectAtk.cpp:

(WebCore::AccessibilityObject::detachPlatformWrapper):

12:59 AM Changeset in webkit [255555] by Pablo Saavedra
  • 2 edits in trunk/Source/WebCore

Build error with -DENABLE_VIDEO_TRACK=OFF after r255151
https://bugs.webkit.org/show_bug.cgi?id=207097

Reviewed by Antti Koivisto.

No new tests, only build error fix up

  • css/CSSSelector.cpp:

(WebCore::CSSSelector::selectorText const):

Feb 2, 2020:

8:55 PM Changeset in webkit [255554] by Wenson Hsieh
  • 3 edits in trunk/LayoutTests

editing/input/composition-highlights.html fails on open source Mojave bots
https://bugs.webkit.org/show_bug.cgi?id=207107

Reviewed by Tim Horton.

This test currently fails consistently on non-internal macOS Mojave bots; for some reason, the width of the
colon character glyph in Times font is 8.4px instead of 4.4px when using CTRunGetAdvancesPtr, causing the
composition highlights to be shifted right 4px and making the ref comparison fail.

Debugging shows that only in macOS Mojave, the CoreText framework adjusts the width of the colon glyph by 4px
in TStorageRange::SetAdvance. This has since been fixed in Catalina, so just work around this for the time being
by changing the editable text from "Test: " to just "Test ".

  • editing/input/composition-highlights-expected.html:
  • editing/input/composition-highlights.html:
8:26 PM Changeset in webkit [255553] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Update style checker with new locations OS version checks are allowed
https://bugs.webkit.org/show_bug.cgi?id=207106

Patch by Sam Weinig <weinig@apple.com> on 2020-02-02
Reviewed by Alexey Proskuryakov.

  • Scripts/webkitpy/style/checkers/cpp.py:

(check_os_version_checks):

  • Scripts/webkitpy/style/checkers/cpp_unittest.py:

(WebKitStyleTest.test_os_version_checks):
Update path check to allow anything with the pattern "Source/WTF/wtf/Platform[a-zA-Z]+\.h"

3:18 PM Changeset in webkit [255552] by commit-queue@webkit.org
  • 4 edits in trunk

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:
1:03 PM Changeset in webkit [255551] by Kocsen Chung
  • 1 copy in tags/Safari-610.1.1.3

Tag Safari-610.1.1.3.

8:51 AM Changeset in webkit [255550] by commit-queue@webkit.org
  • 2 edits in trunk

[CMake] Use opj_config.h to find OpenJPEG include directory
https://bugs.webkit.org/show_bug.cgi?id=207100

Patch by Ting-Wei Lan <Ting-Wei Lan> on 2020-02-02
Reviewed by Konstantin Tokarev.

WebKit needs OpenJPEG 2.2.0 or later versions, but it is possible for a
system to have both OpenJPEG 1 and OpenJPEG 2 installed. However, some
distributions do not put OpenJPEG 1 under a versioned directory and
put its header file directly under /usr/include or /usr/local/include.
Since CMake prefers its prefixes to paths given in HINTS, it is possible
that openjpeg.h from OpenJPEG 1 is found before the one from OpenJPEG 2,
causing WebKit to fail to build because of using the wrong header file.

Resolve the problem by checking opj_config.h instead of openjpeg.h.
OpenJPEG 1.5 does not have opj_config.h, so only OpenJPEG 2 can be
found. This also makes it consistent with the code below which already
uses opj_config.h.

  • Source/cmake/FindOpenJPEG.cmake:
2:20 AM Changeset in webkit [255549] by commit-queue@webkit.org
  • 3 edits
    1 copy
    21 adds
    1 delete in trunk/LayoutTests/imported/w3c

Import WPT tests to verify pings do not send a referrer header
https://bugs.webkit.org/show_bug.cgi?id=207090

Patch by Rob Buis <rbuis@igalia.com> on 2020-02-02
Reviewed by Darin Adler.

Import WPT tests to verify pings do not send a referrer header.

  • resources/import-expectations.json:
  • web-platform-tests/html/semantics/links/downloading-resources/contains.json: Removed.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-expected.txt: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-no-referrer-expected.txt: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-no-referrer-when-downgrade-expected.txt: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-no-referrer-when-downgrade.html: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-no-referrer.html: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-origin-expected.txt: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-origin-when-cross-origin-expected.txt: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-origin-when-cross-origin.html: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-origin.html: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-same-origin-expected.txt: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-same-origin.html: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-strict-origin-expected.txt: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-strict-origin-when-cross-origin-expected.txt: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-strict-origin-when-cross-origin.html: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-strict-origin.html: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-unsafe-url-expected.txt: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer-unsafe-url.html: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer.html: Added.
  • web-platform-tests/html/semantics/links/downloading-resources/header-referrer.js: Added.

(testReferrerHeader):
(pollResult.return.new.Promise.):
(pollResult.return.new.Promise):

  • web-platform-tests/html/semantics/links/downloading-resources/resources/inspect-header.py: Added.

(main):

  • web-platform-tests/html/semantics/links/downloading-resources/resources/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/downloading-resources/w3c-import.log.
  • web-platform-tests/html/semantics/links/downloading-resources/w3c-import.log:

Feb 1, 2020:

7:57 PM Changeset in webkit [255548] by commit-queue@webkit.org
  • 6 edits in trunk/Source

Silence compiler warnings
https://bugs.webkit.org/show_bug.cgi?id=207015

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-02-01
Reviewed by Darin Adler.

Source/WebCore:

  • accessibility/AXObjectCache.cpp:

(WebCore::characterForCharacterOffset): Use IGNORE_CLANG_WARNINGS macros to avoid
warnings when using GCC. GCC freaks out when it doesn't recognize a warning passed to
IGNORE_WARNINGS_BEGIN().

  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::buildObjectForCanvas): Fix -Wredundant-move

  • platform/PasteboardItemInfo.h: Fix -Wredundant-move

(WebCore::PresentationSize::decode):
(WebCore::PasteboardItemInfo::decode):

Source/WebKit:

Use UNUSED_VARIABLE() for variable that is only used inside RELEASE_LOG(), which is
Apple-specific.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::didFailLoading):

7:40 PM Changeset in webkit [255547] by Devin Rousso
  • 73 edits
    1 add
    23 deletes in trunk/Source

Web Inspector: move the items in the toolbar into the tab bar to save vertical space
https://bugs.webkit.org/show_bug.cgi?id=204627

Reviewed by Timothy Hatcher.

Source/WebCore:

Now that there is no toolbar area, there is nothing obstructing the ability for the window
to be moved around when dragging via the title bar area. As such, we can remove the unused
InspectorFrontendHost APIs.

  • inspector/InspectorFrontendHost.idl:
  • inspector/InspectorFrontendHost.h:
  • inspector/InspectorFrontendHost.cpp:

(WebCore::InspectorFrontendHost::startWindowDrag): Deleted.
(WebCore::InspectorFrontendHost::moveWindowBy const): Deleted.

  • inspector/InspectorFrontendClient.h:
  • inspector/InspectorFrontendClientLocal.h:
  • inspector/InspectorFrontendClientLocal.cpp:

(WebCore::InspectorFrontendClientLocal::moveWindowBy): Deleted.

Source/WebInspectorUI:

Merge the toolbar are and tab bar to waste less vertical space.

The inspect, download, reload, and device settings buttons are pinned before the tabs.

If there are any console warnings/errors, an icon for each type of message is shown between
the left buttons and the tabs, and each button's opacity is animated whenever a new message
is added.

Whenever the debugger pauses, change the tab bar icon of the Sources Tab to an image that

includes paused iconography (
) to help convey the debugger's state no matter which tab is

currently selected, just like the debugger dashboard.

The docking configuration, debug, and close buttons are pinned after the tabs.

The dashboard network information has been moved to the Network Tab (described below).

When undocked, the tab bar and all the content below it are pushed down by 22px to make room
for the system close/minimize/maximize buttons and the window title.

  • UserInterface/Base/Main.js:

(WI.loaded):
(WI._handleSettingsKeyboardShortcut):
(WI._tryToRestorePendingTabs):
(WI.isNewTabWithTypeAllowed):
(WI._openDefaultTab): Deleted.
(WI.showNewTabTab): Deleted.

  • UserInterface/Views/Main.css:

(#undocked-title-area): Added.
(body.docked #undocked-title-area): Added.
(body.window-inactive #undocked-title-area): Added.
(#main):
(@keyframes tab-bar-console-item-pulse): Added.
(.tab-bar > .navigation-bar :matches(.console-warnings, .console-errors):not(.disabled).pulsing): Added.
(@media (prefers-color-scheme: dark) #undocked-title-area): Added.
(@media (prefers-color-scheme: dark) body.window-inactive #undocked-title-area): Added.
(body.docked.bottom): Deleted.
(body.docked.bottom #toolbar): Deleted.
(body.docked.bottom #toolbar .item:not(.flexible-space)): Deleted.

  • UserInterface/Views/TabBar.js:

(WI.TabBar):
(WI.TabBar.prototype.addNavigationItemBefore): Added.
(WI.TabBar.prototype.addNavigationItemAfter): Added.
(WI.TabBar.prototype.insertTabBarItem):
(WI.TabBar.prototype.insertTabBarItem.animateTabs):
(WI.TabBar.prototype.insertTabBarItem.removeStyles):
(WI.TabBar.prototype.removeTabBarItem):
(WI.TabBar.prototype.removeTabBarItem.animateTabs):
(WI.TabBar.prototype.removeTabBarItem.removeStyles):
(WI.TabBar.prototype.set selectedTabBarItem):
(WI.TabBar.prototype.get tabCount): Added.
(WI.TabBar.prototype.layout):
(WI.TabBar.prototype.didLayoutSubtree): Added.
(WI.TabBar.prototype._recordTabBarItemSizesAndPositions):
(WI.TabBar.prototype._finishExpandingTabsAfterClose):
(WI.TabBar.prototype._finishExpandingTabsAfterClose.animateTabs):
(WI.TabBar.prototype._finishExpandingTabsAfterClose.removeStyles):
(WI.TabBar.prototype._handleClick):
(WI.TabBar.prototype._handleMouseMoved):
(WI.TabBar.prototype._handleMouseUp):
(WI.TabBar.prototype._handleMouseLeave):
(WI.TabBar.prototype._handleContextMenu):
(WI.TabBar.prototype.get saveableTabCount): Deleted.
(WI.TabBar.layout.forceItemHidden): Deleted.

  • UserInterface/Views/TabBar.css:

(.tab-bar):
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar): Added.
(.tab-bar > .border): Added.
(.tab-bar > .border.top): Added.
(.tab-bar > .border.bottom): Added.
(body.docked.bottom .tab-bar > .border.top): Added.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .border): Added.
(@media (-webkit-max-device-pixel-ratio: 1) body.docked:matches(.right, .left):not(.window-docked-inactive) .tab-bar > .border.top): Added.
(@media (-webkit-min-device-pixel-ratio: 2) body.docked:matches(.right, .left):not(.window-docked-inactive) .tab-bar > .border.top): Added.
(.tab-bar > .tabs > .item):
(.tab-bar > .tabs > .item:not(.disabled).selected):
(.tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover):
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item):
(.tab-bar > .navigation-bar): Added.
(.tab-bar > .navigation-bar > .item.group > .item): Added.
(.tab-bar > .navigation-bar > .item.group > .item:nth-child(1 of :not(.hidden))): Added.
(.tab-bar > .navigation-bar > .item.group > .item:nth-last-child(1 of :not(.hidden))): Added.
(.tab-bar > .navigation-bar .item.divider): Added.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .navigation-bar > .item.divider): Added.
(.tab-bar > .tabs): Added.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): Added.
(.tab-bar > .tabs.dragging-tab > .item.selected, .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), .tab-bar > .tabs.animating.closing-tab > .item.selected): Added.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.dragging-tab > .item.selected, body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.animating.closing-tab > .item.selected): Added.
(@media (prefers-color-scheme: dark) body.docked.bottom .tab-bar > .border.top): Added.
(@media (prefers-color-scheme: dark) .tab-bar > .tabs > .item:not(.disabled).selected):
(body:not(.window-inactive) .tab-bar.single-tab > .item.default-tab:hover > .close): Deleted.
(.tab-bar.single-tab > .item.default-tab > .close): Deleted.
(body[dir=ltr].window-inactive .tab-bar > .item): Deleted.
(body[dir=rtl].window-inactive .tab-bar > .item): Deleted.
NOTE: elided renaming CSS changes.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.tablePopulateCell):
(WI.NetworkTableContentView.prototype._changeCollection):
(WI.NetworkTableContentView.prototype.initialLayout):
(WI.NetworkTableContentView.prototype.processHAR):
(WI.NetworkTableContentView.prototype._processPendingEntries):
(WI.NetworkTableContentView.prototype._updateEntryForResource):
(WI.NetworkTableContentView.prototype._mainResourceDidChange):
(WI.NetworkTableContentView.prototype._handleResourceSizeDidChange): Added.
(WI.NetworkTableContentView.prototype._resourceTransferSizeDidChange):
(WI.NetworkTableContentView.prototype._handleResourceAdded):
(WI.NetworkTableContentView.prototype._handleFrameWasAdded):
(WI.NetworkTableContentView.prototype._entryForResource):
(WI.NetworkTableContentView.prototype._updateStatistics): Added.
(WI.NetworkTableContentView.prototype._updateStatistic): Added.
(WI.NetworkTableContentView.prototype._startUpdatingLoadTimeStatistic): Added.
(WI.NetworkTableContentView.prototype._stopUpdatingLoadTimeStatistic): Added.
(WI.NetworkTableContentView.prototype._updateLoadTimeStatistic): Added.

  • UserInterface/Views/NetworkTableContentView.css:

(.network-table > .statistics): Added.
(.network-table > .statistics > .statistic): Added.
(.network-table > .statistics > .statistic[hidden]): Added.
(.network-table > .statistics > .statistic > .icon): Added.
(.network-table > .statistics > .statistic > .text): Added.
(@media (prefers-color-scheme: dark) .network-table > .statistics > .statistic.domain-count > .icon): Added.
Add a fixed row below the network table that contains statistics information based on the
current shown collection (e.g. live data vs HAR):

  • number of domains
  • number of resources
  • total resource size
  • total transfer size
  • number of redirects
  • time to load

Slightly dim entries for previous sessions if Preserve Log is checked, since the statistics
data is calculated from the current session.
NOTE: elided renaming CSS changes.

  • UserInterface/Views/TabBrowser.js:

(WI.TabBrowser.prototype.addTabForContentView):
(WI.TabBrowser.prototype.closeTabForContentView):
(WI.TabBrowser.prototype._tabBarItemSelected):
(WI.TabBrowser.prototype._tabBarItemRemoved):

  • UserInterface/Views/TabContentView.js:

(WI.TabContentView.shouldPinTab): Added.

  • UserInterface/Views/AuditTabContentView.js:

(WI.AuditTabContentView):
(WI.AuditTabContentView.tabInfo):

  • UserInterface/Views/CanvasTabContentView.js:

(WI.CanvasTabContentView):
(WI.CanvasTabContentView.tabInfo):

  • UserInterface/Views/ConsoleTabContentView.js:

(WI.ConsoleTabContentView):
(WI.ConsoleTabContentView.tabInfo):

  • UserInterface/Views/ContentBrowserTabContentView.js:

(WI.ContentBrowserTabContentView):

  • UserInterface/Views/ElementsTabContentView.js:

(WI.ElementsTabContentView):
(WI.ElementsTabContentView.tabInfo):

  • UserInterface/Views/LayersTabContentView.js:

(WI.LayersTabContentView):
(WI.LayersTabContentView.tabInfo):

  • UserInterface/Views/NetworkTabContentView.js:

(WI.NetworkTabContentView):
(WI.NetworkTabContentView.tabInfo):

  • UserInterface/Views/SearchTabContentView.js:

(WI.SearchTabContentView):
(WI.SearchTabContentView.tabInfo):
(WI.SearchTabContentView.shouldPinTab): Added.
(WI.SearchTabContentView.shouldSaveTab): Added.

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView):
(WI.SettingsTabContentView.tabInfo):
(WI.SettingsTabContentView.shouldPinTab): Added.
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):

  • UserInterface/Views/SourcesTabContentView.js:

(WI.SourcesTabContentView):
(WI.SourcesTabContentView.tabInfo):
(WI.SourcesTabContentView.prototype._handleDebuggerPaused): Added.
(WI.SourcesTabContentView.prototype._handleDebuggerResumed): Added.

  • UserInterface/Views/StorageTabContentView.js:

(WI.StorageTabContentView):
(WI.StorageTabContentView.tabInfo):

  • UserInterface/Views/TimelineTabContentView.js:

(WI.TimelineTabContentView):
(WI.TimelineTabContentView.tabInfo):

  • UserInterface/Views/TabBarItem.js:

(WI.TabBarItem):
(WI.TabBarItem.prototype.get element):
(WI.TabBarItem.prototype.get representedObject):
(WI.TabBarItem.prototype.set disabled):
(WI.TabBarItem.prototype.get hidden): Added.
(WI.TabBarItem.prototype.set hidden): Added.
(WI.TabBarItem.prototype.set representedObject): Deleted.
(WI.TabBarItem.prototype.get isDefaultTab): Deleted.
(WI.TabBarItem.prototype.set isDefaultTab): Deleted.

  • UserInterface/Views/GeneralTabBarItem.js:

(WI.GeneralTabBarItem.fromTabContentView): Added.
(WI.GeneralTabBarItem.fromTabInfo): Deleted.

  • UserInterface/Views/PinnedTabBarItem.js:

(WI.PinnedTabBarItem):
(WI.PinnedTabBarItem.fromTabContentView): Added.
(WI.PinnedTabBarItem.titleDidChange):
(WI.PinnedTabBarItem.fromTabInfo): Deleted.
(WI.PinnedTabBarItem.prototype.titleDidChange): Deleted.
(WI.PinnedTabBarItem.prototype._handleContextMenuEvent): Deleted.
Simplify how tab bar items are created.

  • UserInterface/Views/NavigationBar.js:

(WI.NavigationBar.prototype.get sizesToFit):
(WI.NavigationBar.prototype.addNavigationItem):
(WI.NavigationBar.prototype.insertNavigationItem):

  • UserInterface/Views/SizesToFitNavigationBar.js: Removed.
  • UserInterface/Views/Sidebar.js:

(WI.Sidebar):
Support marking sizesToFit during construction, instead of having to make a subclass.

  • UserInterface/Views/ButtonNavigationItem.js:

(WI.ButtonNavigationItem):
(WI.ButtonNavigationItem.prototype.get imageType): Added.
(WI.ButtonNavigationItem.prototype.set imageType): Added.
(WI.ButtonNavigationItem.prototype._update):

  • UserInterface/Views/ButtonNavigationItem.css:

(.tab-bar > .navigation-bar .item.button.image-and-text > span): Added.
(.navigation-bar .item.button > img): Added.
(.navigation-bar .item.button.disabled > img): Added.
(body:matches(.window-inactive, .window-docked-inactive) .navigation-bar .item.button > img): Added.
(body:matches(.window-inactive, .window-docked-inactive) .navigation-bar .item.button.disabled > img): Added.
(@media (prefers-color-scheme: dark) .navigation-bar .item.button.disabled > img): Added.
Allow WI.ButtonNavigationItem to use an <img> instead of an <svg> for it's image. This
is to work around a compositing bug <https://webkit.org/b/207022>.

  • UserInterface/Views/GroupNavigationItem.js:

(WI.GroupNavigationItem.prototype.get hidden): Added.
(WI.GroupNavigationItem.prototype.set hidden): Added.
(WI.GroupNavigationItem.prototype.get additionalClassNames): Added.
Add a special case where this item is considered hidden if all sub-items are also hidden.

  • UserInterface/Views/Variables.css:

(:root):
(body:matches(.window-inactive, .window-docked-inactive)): Added.
(body:matches(.window-inactive, .window-docked-inactive) *): Added.
(body:not(.docked)): Added.
(@media (prefers-color-scheme: dark) :root):
(@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive)): Added.
(@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive) *): Added.
(body.window-inactive): Deleted.
(body.window-inactive *): Deleted.
(@media (prefers-color-scheme: dark) body.window-inactive): Deleted.
(@media (prefers-color-scheme: dark) body.window-inactive *): Deleted.
Replace --toolbar-height with --undocked-title-area-height, which is set when docked.

  • UserInterface/Views/DividerNavigationItem.css:

(.navigation-bar .item.divider):
(@media (prefers-color-scheme: dark)):
Simplify the CSS in order to better support being used in the tab bar.

  • UserInterface/Views/FlexibleSpaceNavigationItem.css:

(.navigation-bar .item.flexible-space):
(.navigation-bar .item.flexible-space.align-start > .item):
(.navigation-bar .item.flexible-space.align-end > .item):
(:matches(.navigation-bar, .toolbar) .item.flexible-space): Deleted.
(:matches(.navigation-bar, .toolbar) .item.flexible-space.align-start > .item): Deleted.
(:matches(.navigation-bar, .toolbar) .item.flexible-space.align-end > .item): Deleted.
Remove toolbar styles.

  • UserInterface/Controllers/ConsoleManager.js:

(WI.ConsoleManager):
(WI.ConsoleManager.prototype.get warningCount): Added.
(WI.ConsoleManager.prototype.get errorCount): Added.
(WI.ConsoleManager.prototype.messageWasAdded):
(WI.ConsoleManager.prototype.messagesCleared):
(WI.ConsoleManager.prototype.messageRepeatCountUpdated):
(WI.ConsoleManager.prototype._incrementMessageLevelCount): Added.
(WI.ConsoleManager.prototype._delayedMessagesCleared):
Keep track of the count of warnings and errors so that they can be used to determine when to
show Console button navigation items in the tab bar.

  • UserInterface/Views/DOMTreeContentView.css:

(body:not(.window-inactive, .window-docked-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint): Added.
(body:not(.window-inactive, .window-docked-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Added.
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint): Deleted.
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Deleted.

  • UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:

(body:matches(.window-inactive, .window-docked-inactive) .timeline-overview-graph.rendering-frame > .frame-marker): Added.
(body.window-inactive .timeline-overview-graph.rendering-frame > .frame-marker): Deleted.

  • UserInterface/Views/TimelineOverview.css:

(.timeline-overview > .tree-outline.timelines .item.selected + .item, body:matches(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines .item.selected + .item): Added.
(@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item, body:matches(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines .item.selected + .item): Added.
(.timeline-overview > .tree-outline.timelines .item.selected + .item, body.window-inactive .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted.
(@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item, body.window-inactive .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted.

  • UserInterface/Views/TimelineRecordFrame.css:

(body:matches(.window-inactive, .window-docked-inactive) .timeline-record-frame.selected): Added.
(body.window-inactive .timeline-record-frame.selected): Deleted.

  • UserInterface/Views/TimelineRuler.css:

(body:matches(.window-inactive, .window-docked-inactive) .timeline-ruler > .header > .divider): Added.
(body.window-inactive .timeline-ruler > .header > .divider): Deleted.
Add selectors for .window-docked-inactive everywhere that .window-inactive exists.

  • UserInterface/Base/Setting.js:

Remove new tab bar experimental setting.

  • UserInterface/Debug/Bootstrap.js:

(WI.runBootstrapOperations):
(WI.runBootstrapOperations.applyDumpMessagesState):
(WI.runBootstrapOperations.updateDebugUI):

  • UserInterface/Images/Origin.svg:

Add id="root" so this can be used with WI.ImageUtilities.useSVGSymbol.

  • UserInterface/Main.html:
  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/ActivateButtonToolbarItem.js: Removed.
  • UserInterface/Views/ButtonToolbarItem.js: Removed.
  • UserInterface/Views/ButtonToolbarItem.css: Removed.
  • UserInterface/Views/ControlToolbarItem.js: Removed.
  • UserInterface/Views/ControlToolbarItem.css: Removed.
  • UserInterface/Views/Toolbar.js: Removed.
  • UserInterface/Views/Toolbar.css: Removed.

Remove toolbar related code now that it has been merged into the tab bar.

  • UserInterface/Models/DebuggerDashboard.js: Removed.
  • UserInterface/Models/DefaultDashboard.js: Removed.
  • UserInterface/Views/DashboardContainerView.js: Removed.
  • UserInterface/Views/DashboardContainerView.css: Removed.
  • UserInterface/Views/DashboardView.js: Removed.
  • UserInterface/Views/DebuggerDashboardView.js: Removed.
  • UserInterface/Views/DebuggerDashboardView.css: Removed.
  • UserInterface/Views/DefaultDashboardView.js: Removed.
  • UserInterface/Views/DefaultDashboardView.css: Removed.

Remove dashboard related code now that it has been merged into the tab bar.

  • UserInterface/Views/LegacyTabBar.js: Removed.
  • UserInterface/Views/NewTabContentView.js: Removed.
  • UserInterface/Views/NewTabContentView.css: Removed.
  • UserInterface/Images/NewTab.svg: Removed.
  • UserInterface/Images/NewTabPlus.svg: Removed.
  • UserInterface/Images/SearchResults.svg: Removed.

Remove the lebacy tab bar in favor of the new tab bar.

Source/WebKit:

Now that there is no toolbar area, there is nothing obstructing the ability for the window
to be moved around when dragging via the title bar area. As such, we can remove the unused
InspectorFrontendHost APIs.

  • WebProcess/Inspector/WebInspectorUI.h:
  • WebProcess/Inspector/WebInspectorUI.cpp:

(WebKit::WebInspectorUI::startWindowDrag): Deleted.
(WebKit::WebInspectorUI::moveWindowBy): Deleted.

  • UIProcess/Inspector/WebInspectorProxy.messages.in:
  • UIProcess/Inspector/WebInspectorProxy.h:
  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::startWindowDrag): Deleted.
(WebKit::WebInspectorProxy::platformStartWindowDrag): Deleted.

  • UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp:

(WebKit::WebInspectorProxy::platformStartWindowDrag): Deleted.

  • UIProcess/Inspector/mac/WebInspectorProxyMac.mm:

(WebKit::WebInspectorProxy::platformStartWindowDrag): Deleted.

  • UIProcess/Inspector/win/WebInspectorProxyWin.cpp:

(WebKit::WebInspectorProxy::platformStartWindowDrag): Deleted.

  • UIProcess/Inspector/wpe/WebInspectorProxyWPE.cpp:

(WebKit::WebInspectorProxy::platformStartWindowDrag): Deleted.

  • WebProcess/Inspector/RemoteWebInspectorUI.h:
  • WebProcess/Inspector/RemoteWebInspectorUI.cpp:

(WebKit::RemoteWebInspectorUI::startWindowDrag): Deleted.
(WebKit::RemoteWebInspectorUI::moveWindowBy): Deleted.

  • UIProcess/Inspector/RemoteWebInspectorProxy.messages.in:
  • UIProcess/Inspector/RemoteWebInspectorProxy.cpp:
  • UIProcess/Inspector/RemoteWebInspectorProxy.h:

(WebKit::RemoteWebInspectorProxy::startWindowDrag): Deleted.
(WebKit::RemoteWebInspectorProxy::platformStartWindowDrag): Deleted.

  • UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp:

(WebKit::RemoteWebInspectorProxy::platformStartWindowDrag): Deleted.

  • UIProcess/Inspector/mac/RemoteWebInspectorProxyMac.mm:

(WebKit::RemoteWebInspectorProxy::platformStartWindowDrag): Deleted.

  • UIProcess/Inspector/win/RemoteWebInspectorProxyWin.cpp:

(WebKit::RemoteWebInspectorProxy::platformStartWindowDrag): Deleted.

Source/WebKitLegacy/ios:

Now that there is no toolbar area, there is nothing obstructing the ability for the window
to be moved around when dragging via the title bar area. As such, we can remove the unused
InspectorFrontendHost APIs.

  • WebCoreSupport/WebInspectorClientIOS.mm:

(WebInspectorFrontendClient::startWindowDrag): Deleted.

Source/WebKitLegacy/mac:

Now that there is no toolbar area, there is nothing obstructing the ability for the window
to be moved around when dragging via the title bar area. As such, we can remove the unused
InspectorFrontendHost APIs.

  • WebCoreSupport/WebInspectorClient.h:
  • WebCoreSupport/WebInspectorClient.mm:

(WebInspectorFrontendClient::startWindowDrag): Deleted.

7:35 PM Changeset in webkit [255546] by Kocsen Chung
  • 8 edits in branches/safari-610.1.1-branch/Source

Versioning.

4:56 PM Changeset in webkit [255545] by Wenson Hsieh
  • 6 edits in trunk/LayoutTests

fast/events/touch/ios/long-press-on-link.html consistently times out after r254699
https://bugs.webkit.org/show_bug.cgi?id=207095

Reviewed by Darin Adler.

After <https://trac.webkit.org/r254699>, tests that end without causing presented view controllers to dismiss
will always cause the subsequent test to time out. This happens all the time with the layout test
fast/events/touch/ios/long-press-on-link.html, which runs after fast/events/touch/ios/long-press-on-image.html;
both of these tests long press previewable elements to present a context menu, but don't attempt to dismiss
these previews.

Address this by tapping at the web view's origin after ending the long press gesture, which causes the preview
view controllers that were presented by the test to dismiss.

  • fast/events/touch/ios/long-press-on-image-expected.txt:
  • fast/events/touch/ios/long-press-on-image.html:
  • fast/events/touch/ios/long-press-on-link-expected.txt:
  • fast/events/touch/ios/long-press-on-link.html:

Modernize these layout tests by adopting helper methods for driving interaction (instead of directly using
testRunner.runUIScript). Also, use the testing helpers in js-test.js, and add descriptions to each test.

  • resources/ui-helper.js:

(window.UIHelper.longPressAndGetContextMenuContentAt.return.new.Promise):
(window.UIHelper.longPressAndGetContextMenuContentAt):

Make this resolve the promise to a parsed JSON object instead of a JSON string. Currently, the result is a JSON
string that is parsed at each call site.

4:20 PM Changeset in webkit [255544] by Alexey Shvayka
  • 9 edits in trunk

Non-alphabetical \c escapes should be syntax errors in Unicode patterns only
https://bugs.webkit.org/show_bug.cgi?id=207091

Reviewed by Darin Adler.

JSTests:

  • test262/expectations.yaml: Mark 4 test cases as passing.

Source/JavaScriptCore:

This change adds SyntaxError for non-alphabetical and identity \c escapes
in Unicode patterns, aligning JSC with V8 and SpiderMonkey.

Grammar: https://tc39.es/ecma262/#prod-annexB-ClassEscape
(/u flag precludes the use of ClassControlLetter)

  • yarr/YarrErrorCode.cpp:

(JSC::Yarr::errorMessage):
(JSC::Yarr::errorToThrow):

  • yarr/YarrErrorCode.h:
  • yarr/YarrParser.h:

(JSC::Yarr::Parser::parseEscape):

LayoutTests:

  • js/regexp-unicode-expected.txt:
  • js/script-tests/regexp-unicode.js:
2:26 PM Changeset in webkit [255543] by Simon Fraser
  • 2 edits in trunk/Tools

Closing a MiniBrowser WK2 window does not release the WKWebView
https://bugs.webkit.org/show_bug.cgi?id=203185

Reviewed by Wenson Hsieh.

Use a weak WKWebView reference in the _textFinder.hideInterfaceCallback() block
to avoid a retain cycle that keeps the window controller and WKWebView alive.

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController awakeFromNib]):

Jan 31, 2020:

10:18 PM Changeset in webkit [255542] by ysuzuki@apple.com
  • 19 edits in trunk/Source/JavaScriptCore

[JSC] Hold StructureID instead of Structure* in PolyProtoAccessChain and DFG::CommonData
https://bugs.webkit.org/show_bug.cgi?id=207086

Reviewed by Mark Lam.

PolyProtoAccessChain and DFG::CommonData are kept alive so long as associated AccessCase / DFG/FTL CodeBlock
is alive. They hold Vector<Structure*> / Vector<WriteBarrier<Structure*>>, but access frequency is low. And
We should hold Vector<StructureID> instead to cut 50% of the size.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::commit):
(JSC::AccessCase::forEachDependentCell const):
(JSC::AccessCase::doesCalls const):
(JSC::AccessCase::visitWeak const):
(JSC::AccessCase::propagateTransitions const):
(JSC::AccessCase::generateWithGuard):

  • bytecode/AccessCase.h:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::propagateTransitions):
(JSC::CodeBlock::determineLiveness):
(JSC::CodeBlock::stronglyVisitWeakReferences):

  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/InByIdStatus.cpp:

(JSC::InByIdStatus::computeFor):
(JSC::InByIdStatus::computeForStubInfo):
(JSC::InByIdStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/InByIdStatus.h:
  • bytecode/InstanceOfStatus.cpp:

(JSC::InstanceOfStatus::computeFor):
(JSC::InstanceOfStatus::computeForStubInfo):

  • bytecode/InstanceOfStatus.h:
  • bytecode/PolyProtoAccessChain.cpp:

(JSC::PolyProtoAccessChain::create):
(JSC::PolyProtoAccessChain::needImpurePropertyWatchpoint const):
(JSC::PolyProtoAccessChain::dump const):

  • bytecode/PolyProtoAccessChain.h:

(JSC::PolyProtoAccessChain::chain const):
(JSC::PolyProtoAccessChain::forEach const):
(JSC::PolyProtoAccessChain::slotBaseStructure const):
(JSC::PolyProtoAccessChain:: const): Deleted.

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::regenerate):

  • bytecode/PutByIdStatus.cpp:

(JSC::PutByIdStatus::computeForStubInfo):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::summary const):
(JSC::StructureStubInfo::summary):

  • bytecode/StructureStubInfo.h:
  • dfg/DFGCommonData.h:
  • dfg/DFGDesiredWeakReferences.cpp:

(JSC::DFG::DesiredWeakReferences::reallyAdd):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::finalizeWithoutNotifyingCallback):

  • jit/Repatch.cpp:

(JSC::tryCacheGetBy):
(JSC::tryCachePutByID):
(JSC::tryCacheInByID):

9:22 PM Changeset in webkit [255541] by ysuzuki@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

[JSC] ShrinkToFit some vectors kept by JIT data structures
https://bugs.webkit.org/show_bug.cgi?id=207085

Reviewed by Mark Lam.

  1. We are allocating RareCaseProfile by using SegmentedVector since JIT code is directly accessing to RareCaseProfile*. But when creating RareCaseProfile, we can know how many RareCaseProfiles should we create: RareCaseProfile is created per slow paths of Baseline JIT bytecode. Since we already scan bytecode for the main paths, we can count it and use this number when creating RareCaseProfile.
  2. Vectors held by PolymorphicAccess and PolymorphicCallStubRoutine should be kept small by calling shrinkToFit.
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::setRareCaseProfiles):
(JSC::CodeBlock::shrinkToFit):
(JSC::CodeBlock::addRareCaseProfile): Deleted.

  • bytecode/CodeBlock.h:
  • bytecode/PolyProtoAccessChain.cpp:

(JSC::PolyProtoAccessChain::create):

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::regenerate):

  • bytecode/ValueProfile.h:

(JSC::RareCaseProfile::RareCaseProfile):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):

  • jit/JIT.h:
  • jit/PolymorphicCallStubRoutine.cpp:

(JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine):

7:36 PM Changeset in webkit [255540] by ysuzuki@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

[JSC] DFG::CommonData::shrinkToFit called before DFG::Plan::reallyAdd is called
https://bugs.webkit.org/show_bug.cgi?id=207083

Reviewed by Mark Lam.

We are calling DFG::CommonData::shrinkToFit, but calling this too early: we execute
DFG::Plan::reallyAdd(DFG::CommonData*) after that, and this adds many entries to
DFG::CommonData*. We should call DFG::CommonData::shrinkToFit after calling DFG::Plan::reallyAdd.

To implement it, we make DFG::JITCode::shrinkToFit virtual function in JSC::JITCode. Then, we
can also implement FTL::JITCode::shrinkToFit which was previously not implemented.

  • dfg/DFGJITCode.cpp:

(JSC::DFG::JITCode::shrinkToFit):

  • dfg/DFGJITCode.h:
  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::finalizeWithoutNotifyingCallback):

  • ftl/FTLJITCode.cpp:

(JSC::FTL::JITCode::shrinkToFit):

  • ftl/FTLJITCode.h:
  • jit/JITCode.cpp:

(JSC::JITCode::shrinkToFit):

  • jit/JITCode.h:
6:09 PM Changeset in webkit [255539] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

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):

5:47 PM Changeset in webkit [255538] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

safe to execute should return false when we know code won't be moved
https://bugs.webkit.org/show_bug.cgi?id=207074

Reviewed by Yusuke Suzuki.

We use safeToExecute to determine inside LICM whether it's safe to execute
a node somewhere else in the program. We were returning true for nodes
we knew would never be moved, because they were effectful. Things like Call
and GetById. This patch makes those nodes return false now, since we want
to make it easier to audit the nodes that return true. This makes that audit
easier, since it gets rid of the obvious things that will never be hoisted.

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

5:22 PM Changeset in webkit [255537] by Alan Coon
  • 1 copy in tags/Safari-610.1.1.2.1

Tag Safari-610.1.1.2.1.

5:13 PM Changeset in webkit [255536] by Alan Coon
  • 8 edits in branches/safari-610.1.1.2-branch/Source

Versioning.

5:08 PM Changeset in webkit [255535] by Alan Coon
  • 1 copy in branches/safari-610.1.1.2-branch

New branch.

4:50 PM Changeset in webkit [255534] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Flaky Test: imported/w3c/web-platform-tests/websockets/cookies/007.html
https://bugs.webkit.org/show_bug.cgi?id=206484

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-01-31

  • platform/mac/TestExpectations:
4:47 PM Changeset in webkit [255533] by david_quesada@apple.com
  • 5 edits in trunk

REGRESSION(r252185): NetworkSessionCocoa cancels downloads that receive authentication challenges
https://bugs.webkit.org/show_bug.cgi?id=206984
rdar://problem/58999654

Reviewed by Brady Eidson.

Source/WebKit:

r252185 changed the early return in WKNetworkSessionDelegate's -...task:didReceiveChallenge:... method
from "cancel the task and return early if self has no _session" to "cancel the task and return early
if we can't determine the network session for the given data task". When this method is called for
an NSURLSessionDownloadTask, this early return is hit because there is no NetworkDataTaskCocoa
for an active download. As a result, the download is canceled when it might have otherwise been able
to proceed.

Fix this by adding a code path to fetch the NetworkSession associated with the Download when an
NSURLSessionDownloadTask receives an authentication challenge. This ensures we can actually handle
the challenge appropriately and not just cancel the task.

  • NetworkProcess/Downloads/Download.h:

(WebKit::Download::sessionID const):

Expose the session ID so we can use it to look up the NetworkSession for a Download.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):

Remove an unnecessary redeclaration of networkDataTask, and also an unneeded assertion that
networkDataTask != nullptr. Even if this is the case, the code that eventually handles this
task will null check it and handle the challenge as a websocket task or download task
based on the taskIdentifier.

Tools:

Add an API test for a resumed download that receives an authentication challenge. The download
delegate should be asked to handle the challenge, and the download should be able to finish.

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

(-[DownloadCancelingDelegate _download:decideDestinationWithSuggestedFilename:completionHandler:]):
(-[DownloadCancelingDelegate _download:didReceiveData:]):
(-[DownloadCancelingDelegate _downloadDidCancel:]):
(-[AuthenticationChallengeHandlingDelegate _download:didReceiveAuthenticationChallenge:completionHandler:]):
(-[AuthenticationChallengeHandlingDelegate _downloadDidFinish:]):
(TEST):

4:44 PM Changeset in webkit [255532] by Wenson Hsieh
  • 33 edits
    3 adds in trunk

Add support for specifying background colors when setting marked text
https://bugs.webkit.org/show_bug.cgi?id=207065
<rdar://problem/57876140>

Reviewed by Tim Horton.

Source/WebCore:

Add support for rendering custom highlights (background colors) behind marked text in WebCore. To do this, we
plumb a Vector of CompositionHighlights alongside the Vector of CompositionUnderlines to Editor. At paint time,
we then consult this highlight data to determine which ranges of text in the composition should paint using
custom background colors.

Note that in the future, we should consider refactoring both composition underlines and highlights to use the
MarkedText mechanism for decorating ranges of text instead.

Test: editing/input/composition-highlights.html

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • editing/CompositionHighlight.h: Added.

(WebCore::CompositionHighlight::CompositionHighlight):
(WebCore::CompositionHighlight::encode const):
(WebCore::CompositionHighlight::decode):

Add CompositionHighlight, which represents a range in the composition that should be highlighted with a given
background color.

  • editing/Editor.cpp:

(WebCore::Editor::clear):
(WebCore::Editor::setComposition):

Add logic for clearing and updating m_customCompositionHighlights.

  • editing/Editor.h:

(WebCore::Editor::compositionUsesCustomHighlights const):
(WebCore::Editor::customCompositionHighlights const):

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::paintCompositionBackground):

If custom composition highlights are given, use those when painting the composition background; otherwise,
default to painting the entire composition range using Color::compositionFill.

Source/WebCore/PAL:

Add an SPI soft-linking declaration for NSMarkedClauseSegmentAttributeName.

  • pal/spi/cocoa/NSAttributedStringSPI.h:

Source/WebKit:

Implement -setAttributedMarkedText:selectedRange: on WKContentView, and have it extract highlight color
information from the given attributed string. Plumb this through to the web process by serializing and
deserializing WebCore::CompositionHighlights.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::setMarkedText):

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

(compositionHighlights):

For each marked text clause, grab the specified background color (defaulting to Color::compositionFill) and use
it to create a list of CompositionHighlights.

(-[WKContentView setAttributedMarkedText:selectedRange:]):
(-[WKContentView setMarkedText:selectedRange:]):
(-[WKContentView _setMarkedText:highlights:selectedRange:]):

  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundlePageSetComposition):

Add testing support for specifying highlight ranges when setting marked text.

  • WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:
  • WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp:

(WebKit::WebEditorClient::didDispatchInputMethodKeydown):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setCompositionForTesting):
(WebKit::WebPage::setCompositionAsync):

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

Source/WebKitLegacy/mac:

Adjust some call sites of Editor::setComposition().

  • WebView/WebFrame.mm:

(-[WebFrame setMarkedText:selectedRange:]):
(-[WebFrame setMarkedText:forCandidates:]):

  • WebView/WebHTMLView.mm:

(-[WebHTMLView setMarkedText:selectedRange:]):

Source/WebKitLegacy/win:

Adjust some call sites of Editor::setComposition().

  • WebView.cpp:

(WebView::onIMEComposition):
(WebView::setCompositionForTesting):

Tools:

Add support in WebKitTestRunner for specifying a list of highlight ranges when setting marked text. This comes
in the form of an additional argument to TextInputController::setMarkedText, which contains an array of objects,
each describing one range (in the composition) to highlight.

  • DumpRenderTree/ios/TextInputControllerIOS.m:

(+[TextInputController isSelectorExcludedFromWebScript:]):
(+[TextInputController webScriptNameForSelector:]):
(-[TextInputController setMarkedText:selectedFrom:length:suppressUnderline:highlights:]):
(-[TextInputController setMarkedText:selectedFrom:length:suppressUnderline:]): Deleted.

  • DumpRenderTree/mac/TextInputControllerMac.m:

(+[TextInputController isSelectorExcludedFromWebScript:]):
(+[TextInputController webScriptNameForSelector:]):
(-[TextInputController setMarkedText:selectedFrom:length:suppressUnderline:highlights:]):
(-[TextInputController setMarkedText:selectedFrom:length:suppressUnderline:]): Deleted.

  • WebKitTestRunner/InjectedBundle/Bindings/TextInputController.idl:
  • WebKitTestRunner/InjectedBundle/TextInputController.cpp:

(WTR::arrayLength):
(WTR::createCompositionHighlightData):

Add logic to convert a given JSObject containing the composition highlight information into a WKArrayRef, which
is then passed into WebKit via WKBundlePageSetComposition.

(WTR::TextInputController::setMarkedText):

  • WebKitTestRunner/InjectedBundle/TextInputController.h:

LayoutTests:

Add a test to check that highlighting different parts of a composition range results in the same behavior as
applying background colors using CSS. This test is currently only supported in WebKit2.

  • TestExpectations:
  • editing/input/composition-highlights-expected.html: Added.
  • editing/input/composition-highlights.html: Added.
  • platform/wk2/TestExpectations:
4:23 PM Changeset in webkit [255531] by Justin Fan
  • 6 edits in trunk

[WebGL] Revert logging added to investigate 205757
https://bugs.webkit.org/show_bug.cgi?id=207076

Unreviewed.

Revert https://trac.webkit.org/changeset/255468.

Source/WebCore:

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::bindTexture):
(WebCore::WebGLRenderingContextBase::createTexture):
(WebCore::WebGLRenderingContextBase::getError):
(WebCore::WebGLRenderingContextBase::texSubImage2D):
(WebCore::WebGLRenderingContextBase::texImage2D):

  • platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:

(WebCore::GraphicsContextGLOpenGL::texImage2D):

  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(WebCore::GraphicsContextGLOpenGL::bindTexture):
(WebCore::GraphicsContextGLOpenGL::getError):
(WebCore::GraphicsContextGLOpenGL::texSubImage2D):
(WebCore::GraphicsContextGLOpenGL::createTexture):

LayoutTests:

4:14 PM Changeset in webkit [255530] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] webgpu/whlsl/textures-sample-level.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207078

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-01-31

  • platform/mac-wk2/TestExpectations:
4:11 PM Changeset in webkit [255529] by sbarati@apple.com
  • 2 edits in trunk/JSTests

Unreviewed. Don't dump disassembly in test.

  • stress/get-getter-setter-by-offset-not-always-safe-to-execute.js:
4:06 PM Changeset in webkit [255528] by sbarati@apple.com
  • 3 edits
    1 add in trunk

GetGetterSetterByOffset and GetGetter/GetSetter are not always safe to execute
https://bugs.webkit.org/show_bug.cgi?id=206805
<rdar://problem/58898161>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/get-getter-setter-by-offset-not-always-safe-to-execute.js: Added.

Source/JavaScriptCore:

This patch fixes two bugs. The first is GetGetterSetterByOffset. Previously,
we were just checking that we could load the value safely. However, because
GetGetterSetterByOffset returns a GetterSetter object, we can only safely
move this node into a context where it's guaranteed that the offset loaded
will return a GetterSetter.

The second fix is GetGetter/GetSetter were both always marked as safe to execute.
However, they're only safe to execute when the incoming value to load from
is a GetterSetter object.

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

3:56 PM Changeset in webkit [255527] by aestes@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed build fix after r255522.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
Switched to a C-style cast.

3:31 PM Changeset in webkit [255526] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] tiled-drawing/scrolling/fast-scroll-select-latched-mainframe-with-handler.html is flaky failing

https://bugs.webkit.org/show_bug.cgi?id=206940

Also is happening on release so I updated the expectation to reflect that.

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-01-31

  • platform/mac-wk2/TestExpectations:
3:25 PM Changeset in webkit [255525] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ 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:
3:24 PM Changeset in webkit [255524] by Russell Epstein
  • 8 edits in branches/safari-609.1.15.3-iOS-branch/Source

Versioning.

3:23 PM Changeset in webkit [255523] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mac wk1 ] fast/images/animated-gif-restored-from-bfcache.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=206950

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-01-31

  • platform/mac-wk1/TestExpectations:
3:16 PM Changeset in webkit [255522] by commit-queue@webkit.org
  • 22 edits in trunk

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:
1:45 PM Changeset in webkit [255521] by Alan Coon
  • 1 copy in tags/Safari-609.1.16

Tag Safari-609.1.16.

1:25 PM Changeset in webkit [255520] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] editing/execCommand/insert-nested-lists.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207066

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-01-31

  • platform/mac-wk1/TestExpectations:
1:05 PM Changeset in webkit [255519] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed macOS build fix after r255518

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::handleGestureEvent):

12:58 PM Changeset in webkit [255518] by Chris Dumez
  • 8 edits in trunk

[ 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:
12:52 PM Changeset in webkit [255517] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

Add page configuration additions to APIPageConfiguration
https://bugs.webkit.org/show_bug.cgi?id=206090
<rdar://problem/58489766>

Reviewed by Andy Estes.

  • UIProcess/API/APIPageConfiguration.cpp:
11:59 AM Changeset in webkit [255516] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mac ] imported/w3c/web-platform-tests/media-source/mediasource-replay.html flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207062

Unreviewed test gardening.

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

  • platform/mac/TestExpectations:
11:55 AM Changeset in webkit [255515] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207063

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-01-31

  • platform/mac-wk2/TestExpectations:
11:41 AM Changeset in webkit [255514] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mojave wk2 Release ] imported/w3c/web-platform-tests/html/webappapis/timers/type-long-setinterval.html flaky failure
https://bugs.webkit.org/show_bug.cgi?id=207060

Unreviewed test gardening.

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

  • platform/mac-wk2/TestExpectations:
11:38 AM Changeset in webkit [255513] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Display flaky test names in build summary when ReRunWebKitTests passes
https://bugs.webkit.org/show_bug.cgi?id=207050

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(ReRunWebKitTests.evaluateCommand):

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

[ macOS wk1 ] imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-small.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207059

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-01-31

  • platform/mac-wk1/TestExpectations:
11:13 AM Changeset in webkit [255511] by Truitt Savell
  • 3 edits in trunk/LayoutTests

[ macOS iOS ] imported/w3c/web-platform-tests/IndexedDB/keypath-special-identifiers.htm is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207057

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-01-31

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
11:01 AM Changeset in webkit [255510] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mac ] animations/animation-welcome-safari.html is sometimes failing
https://bugs.webkit.org/show_bug.cgi?id=206604

Unreviewed test gardening.

Updated test expectations to align with existing bug.

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

  • platform/mac/TestExpectations:
10:36 AM Changeset in webkit [255509] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ iOS wk2 release ] media/track/texttrackcue/texttrackcue-displaycue.html
https://bugs.webkit.org/show_bug.cgi?id=207055

Unreviewed test gardening.

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

  • platform/ios-simulator-wk2/TestExpectations:
10:35 AM Changeset in webkit [255508] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] inspector/page/setBootstrapScript-sub-frame.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207053

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-01-31

  • platform/mac/TestExpectations:
10:33 AM Changeset in webkit [255507] by ddkilzer@apple.com
  • 5 edits in trunk

REGRESSION: [ iPadOS ] imported/w3c/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html always fails
<https://webkit.org/b/206759>
<rdar://problem/58872607>

Reviewed by Brent Fulgham.

Source/WebKit:

Test: imported/w3c/web-platform-tests/dom/events/Event-dispatch-on-disabled-elements.html

  • Platform/spi/ios/UIKitSPI.h:

(-[UIViewController isPerformingModalTransition]): Add SPI
declaration.

Tools:

  • WebKitTestRunner/ios/UIScriptControllerIOS.h:

(WTR::UIScriptControllerIOS::waitForModalTransitionToFinish const):

  • Add declaration.
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::waitForModalTransitionToFinish const):

  • Implement by waiting for -[UIViewController isPerformingModalTransition] to return NO while spinning the runloop.

(WTR::UIScriptControllerIOS::singleTapAtPointWithModifiers):

  • Call waitForModalTransitionToFinish() to fix the test.
10:18 AM WebKitGTK/2.26.x edited by Michael Catanzaro
(diff)
10:05 AM Changeset in webkit [255506] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] add build step to set custom build summary
https://bugs.webkit.org/show_bug.cgi?id=207026

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(SetBuildSummary.doStepIf): Run this step only if build_summary property is set.
(SetBuildSummary.hideStepIf): Hide this step if it is not executed.
(SetBuildSummary.start):

9:59 AM Changeset in webkit [255505] by Alexey Shvayka
  • 9 edits in trunk

Unmatched ] or } brackets should be syntax errors in Unicode patterns only
https://bugs.webkit.org/show_bug.cgi?id=207023

Reviewed by Darin Adler.

JSTests:

  • test262/expectations.yaml: Mark 2 test cases as passing.

Source/JavaScriptCore:

This change adds SyntaxError for Unicode patterns, aligning JSC with
V8 and SpiderMonkey.

Grammar: https://tc39.es/ecma262/#prod-annexB-Term
(/u flag precludes the use of ExtendedAtom and thus ExtendedPatternCharacter)

  • yarr/YarrErrorCode.cpp:

(JSC::Yarr::errorMessage):
(JSC::Yarr::errorToThrow):

  • yarr/YarrErrorCode.h:
  • yarr/YarrParser.h:

(JSC::Yarr::Parser::parseTokens):

LayoutTests:

  • js/regexp-unicode-expected.txt:
  • js/script-tests/regexp-unicode.js:
9:58 AM Changeset in webkit [255504] by graouts@webkit.org
  • 3 edits
    2 adds in trunk

[Web Animations] [WK1] REGRESSION: opacity doesn't animate
https://bugs.webkit.org/show_bug.cgi?id=207044
<rdar://problem/59061225>

Reviewed by Simon Fraser.

Source/WebCore:

Test: webanimations/opacity-animation.html

We failed to animate opacity in WK1 because we made the assumption that just because an animation targets only accelerated properties it would be accelerated
and wouldn't need to be updated as it runs in WebAnimation::timeToNextTick(). This is incorrect, an animation may fail to start or may fail to get a composited
layer, the latter being the case on WK1 because usesCompositing() is false in RenderLayerCompositor::requiresCompositingForAnimation().

We now check that an animation is both only animating accelerated properties and running accelerated to determine that an animation won't need to be updated
until it completes.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::timeToNextTick const):

LayoutTests:

  • webanimations/opacity-animation-expected.html: Added.
  • webanimations/opacity-animation.html: Added.
9:54 AM Changeset in webkit [255503] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

REGRESSION (r251511): [iOS] HDR Playback broken
https://bugs.webkit.org/show_bug.cgi?id=207052
<rdar://problem/58975614>

Reviewed by Maciej Stachowiak.

I missed an XPC service in Bug 203318 when I stopped importing the 'common.sb' sandbox. This broke some
aspects of HDR playback for certain clients.

This patch returns the XPC service, and unblocks access to a network preference file that AVFoundation
needs to read to support some media playback features.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
9:31 AM Changeset in webkit [255502] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Layout Test imported/w3c/web-platform-tests/IndexedDB/fire-error-event-exception.html is a Flaky Failure on mac
https://bugs.webkit.org/show_bug.cgi?id=201481

Unreviewed test gardening.

  • platform/mac/TestExpectations:
9:24 AM Changeset in webkit [255501] by cathiechen
  • 5 edits
    2 adds in trunk

Asynchronous scrolling of overflow element can enter a recursive loop
https://bugs.webkit.org/show_bug.cgi?id=206884

Reviewed by Frédéric Wang.

Source/WebCore:

After implementing RenderLayer::requestScrollPositionUpdate, there's a recursive loop
while performing asynchronous programmatic scrolling for overflow elements. In order to break
the loop call notifyScrollPositionChanged in updateScrollPositionAfterAsyncScroll instead.

Test: fast/scrolling/ios/programmatic-scroll-element-crash.html

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::requestScrollPositionUpdate):
(WebCore::RenderLayer::scrollToOffset):

  • rendering/RenderLayer.h:

LayoutTests:

  • fast/scrolling/ios/programmatic-scroll-element-crash-expected.txt: Added.
  • fast/scrolling/ios/programmatic-scroll-element-crash.html: Added.
9:12 AM Changeset in webkit [255500] by Jonathan Bedard
  • 3 edits in trunk/Tools

results.webkit.org: Handle modified firewall rules
https://bugs.webkit.org/show_bug.cgi?id=207047

Reviewed by Aakash Jain.

  • Scripts/webkitpy/results/upload.py:

(Upload.upload_archive): Return true for 403 and 413 errors, but print a message
indicating the upload failed.

  • Scripts/webkitpy/results/upload_unittest.py:

(UploadTest.test_archive_upload):

9:07 AM Changeset in webkit [255499] by Antti Koivisto
  • 6 edits in trunk/Source/WebCore

REGRESSION (r240250): Pages using smoothscroll.js can't be scrolled with trackpad
https://bugs.webkit.org/show_bug.cgi?id=207040
<rdar://problem/52712513>

Reviewed by Simon Fraser.

Add a quirk that makes the wheel event listener used by smoothscroll.js passive so it can't prevent scrolling.

This uses the same logic as the Chromium intervention in
https://chromium.googlesource.com/chromium/src/+/b6b13c9cfe64d52a4168d9d8d1ad9bb8f0b46a2a%5E%21/

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::functionName const):

  • bindings/js/JSEventListener.h:
  • dom/EventTarget.cpp:

(WebCore::EventTarget::addEventListener):

  • page/Quirks.cpp:

(WebCore::Quirks::shouldMakeEventListenerPassive const):

Also factor the existing code for making some touch event listeners passive here.

  • page/Quirks.h:
8:38 AM Changeset in webkit [255498] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Compilation broken without service workers
https://bugs.webkit.org/show_bug.cgi?id=207037

Patch by Alejandro G. Castro <alex@igalia.com> on 2020-01-31
Reviewed by Chris Dumez.

Protect the use of m_swServers, check if the SERVICE_WORKER is
enabled.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::lowMemoryHandler):

8:32 AM Changeset in webkit [255497] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOSwk1 ] imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/seeking/seek-to-currentTime.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207046

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-01-31

  • platform/mac-wk1/TestExpectations:
8:07 AM Changeset in webkit [255496] by david_quesada@apple.com
  • 3 edits in trunk/Source/WebKit

Remove unused WKProcessPool downloads SPI
https://bugs.webkit.org/show_bug.cgi?id=207029
rdar://problem/59052066

Reviewed by Anders Carlsson.

Remove two unused SPI for starting/resuming downloads from a process pool. These methods were
deprecated in favor of variants that also require a WKWebsiteDataStore, and all clients of these
methods have switched to the new versions.

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _downloadURLRequest:originatingWebView:]): Deleted.
(-[WKProcessPool _resumeDownloadFromData:path:originatingWebView:]): Deleted.

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
7:44 AM Changeset in webkit [255495] by Peng Liu
  • 5 edits in trunk/Source/WebCore

Media controls of the video player on nfl.com are not visible in fullscreen mode (iPad only)
https://bugs.webkit.org/show_bug.cgi?id=207020

Reviewed by Eric Carlson.

Add a quirk to disable the element fullscreen API support for nfl.com on iPads.

  • dom/DocumentFullscreen.idl:
  • dom/Element.idl:
  • page/Quirks.cpp:

(WebCore::Quirks::shouldDisableElementFullscreenQuirk const):

  • page/Quirks.h:
7:35 AM Changeset in webkit [255494] by graouts@webkit.org
  • 2 edits in trunk/Source/WebKitLegacy/mac

[WK1] hiddenPageCSSAnimationSuspensionEnabled should be enabled by default for Cocoa platforms
https://bugs.webkit.org/show_bug.cgi?id=207042
<rdar://problem/58934778>

Reviewed by Zalan Bujtas.

While HiddenPageCSSAnimationSuspensionEnabled is specified in WebPreferences.yaml to default to DEFAULT_HIDDEN_PAGE_CSS_ANIMATION_SUSPENSION_ENABLED,
which is defined to be true on Cocoa platforms in WebPreferencesDefaultValues.h, it is hard-coded to @NO in WK1 although clearly the intent is for
this preference to be enabled. So we switch that default value in WK1 as well.

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

6:42 AM Changeset in webkit [255493] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.26/Source/WebKit

Merge r249802 - [GTK] Allow CacheStore::destroyEngine to destroy default engine for soup.
https://bugs.webkit.org/show_bug.cgi?id=201690

Reviewed by Carlos Garcia Campos.

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::destroyEngine): As we do for
NetworkProcess::destroySession, also allow destroying the engine
for the default session for the same reason.

6:40 AM Changeset in webkit [255492] by Lauro Moura
  • 1 edit in trunk/Tools/Scripts/webkitpy/common/config/contributors.json

Unreviewed. Updating my info and re-activate commiter status.

  • Scripts/webkitpy/common/config/contributors.json:
6:31 AM Changeset in webkit [255491] by don.olmstead@sony.com
  • 15 edits in trunk

[CMake] Add _PRIVATE_LIBRARIES to framework
https://bugs.webkit.org/show_bug.cgi?id=207004

Reviewed by Konstantin Tokarev.

.:

Use _PRIVATE_LIBRARIES to when creating a WebKit target to specify privately linked
libraries. This fits with the current conventions in WebKit for CMake libraries and
prevents appending to _LIBRARIES with a visibility modifier which likely has
unintended consequences.

  • Source/cmake/WebKitMacros.cmake:

Source/JavaScriptCore:

Move uses of PRIVATE within _LIBRARIES to _PRIVATE_LIBRARIES. Any _LIBRARIES appended
afterwards will have that visibility set erroneously.

  • PlatformFTW.cmake:

Source/WebKit:

Move uses of PRIVATE within _LIBRARIES to _PRIVATE_LIBRARIES. Any _LIBRARIES appended
afterwards will have that visibility set erroneously.

  • CMakeLists.txt:
  • PlatformFTW.cmake:
  • PlatformGTK.cmake:
  • PlatformWin.cmake:

Source/WebKitLegacy:

Move uses of PRIVATE within _LIBRARIES to _PRIVATE_LIBRARIES. Any _LIBRARIES appended
afterwards will have that visibility set erroneously.

  • CMakeLists.txt:
  • PlatformFTW.cmake:
  • PlatformWin.cmake:

Source/WTF:

Move uses of PRIVATE within _LIBRARIES to _PRIVATE_LIBRARIES. Any _LIBRARIES appended
afterwards will have that visibility set erroneously.

  • wtf/PlatformFTW.cmake:
3:15 AM Changeset in webkit [255490] by Antti Koivisto
  • 6 edits in trunk/Source/WebCore

Regression(r255359): imported/mozilla/svg/svg-integration/clipPath-html-06.xhtml is failing consistently on windows
https://bugs.webkit.org/show_bug.cgi?id=206991
<rdar://problem/59030252>

Reviewed by Antoine Quint.

The previous approach may have still allowed RenderStyles computed with non-current FontCascade in
matched properties caches (because some non-font properties were resolved based on obsolete font information).

This patch takes a more robust approach by simply preventing caching of styles with non-current font.

  • dom/Document.h:

(WebCore::Document::fontSelector const):

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::isCurrent const):

  • platform/graphics/FontCascade.h:
  • style/MatchedDeclarationsCache.cpp:

(WebCore::Style::MatchedDeclarationsCache::isCacheable):

  • style/StyleBuilderState.cpp:

(WebCore::Style::BuilderState::updateFont):

2:20 AM Changeset in webkit [255489] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

[Web Animations] DocumentTimeline shouldn't suspend itself if hiddenPageCSSAnimationSuspensionEnabled is disabled
https://bugs.webkit.org/show_bug.cgi?id=207014
<rdar://problem/58815952>

Reviewed by Antti Koivisto.

We suspend a timeline upon consutrction if we know that the page is not visible because, unlike CSSAnimationController, the DocumentTimeline is not guaranteed
to be created by the time the Page sets the initial visibility state. This is because DocumentTimeline is created as needed when there are CSS Animations or CSS
Transitions created for the page, or if the content uses any of the Web Animations APIs.

However, the Page::setIsVisibleInternal() function that would call DocumentTimeline::resumeAnimations() at a later time checks whether the hiddenPageCSSAnimationSuspensionEnabled
setting is enabled. So we must respect that setting also when suspending animations in the first place or we risk ending up in a state where we suspend animations
because the page is not visible upon timeline creation, but never resuming animations later due to the hiddenPageCSSAnimationSuspensionEnabled setting being false.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::DocumentTimeline):

1:54 AM Changeset in webkit [255488] by zandobersek@gmail.com
  • 6 edits in trunk/Source/WebKit

[WPE] Touch-based scrolling roundtrips through the WebProcess
https://bugs.webkit.org/show_bug.cgi?id=206922

Reviewed by Adrian Perez de Castro.

Short-cut the touch events through the ScrollGestureCotroller while it
is actively handling the processed touch events, avoiding roundtrip
through the WebProcess. This effectively means that when the scroll
gesture is in action, any touch events that would affect that gesture
are piped into the controller, producing a corresponding axis event
or ending the gesture.

The ScrollGestureCotroller ownership is moved into the WKWPE::View class
in order to make accessing into that object easier from where the touch
events are handled.

  • UIProcess/API/wpe/PageClientImpl.cpp:

(WebKit::PageClientImpl::PageClientImpl):
(WebKit::PageClientImpl::doneWithTouchEvent):

  • UIProcess/API/wpe/PageClientImpl.h:
  • UIProcess/API/wpe/ScrollGestureController.h:

(WebKit::ScrollGestureController::isHandling const):

  • UIProcess/API/wpe/WPEView.cpp:

(WKWPE::View::View):
(WKWPE::m_backend):

  • UIProcess/API/wpe/WPEView.h:

(WKWPE::View::scrollGestureController const):

1:07 AM Changeset in webkit [255487] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION: [iOS release] http/tests/security/window-named-proto.html is a flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=206672
<rdar://problem/58838583>

Reviewed by Chris Dumez.

This is a speculative fix to increase the priority of the DataURLDecoder's WorkQueue such that
it is less likely to be preempted.

Covered by existing tests.

  • platform/network/DataURLDecoder.cpp:

(WebCore::DataURLDecoder::decodeQueue):

Jan 30, 2020:

10:59 PM Changeset in webkit [255486] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[iOS] Page throttling reasons are not initialized with the device low power mode
https://bugs.webkit.org/show_bug.cgi?id=206860

Patch by Said Abou-Hallawa <Said Abou-Hallawa> on 2020-01-30
Reviewed by Simon Fraser.

Initialize m_throttlingReasons with the device current low power mode in
the constructor of Page.

Add m_throttlingReasonsOverridenForTesting to Page and use it to control
overriding the ThrottlingReasons of m_throttlingReasons.

  • page/Page.cpp:

(WebCore::m_deviceOrientationUpdateProvider):
(WebCore::Page::setLowPowerModeEnabledOverrideForTesting):
(WebCore::Page::handleLowModePowerChange):
(WebCore::Page::isLowPowerModeEnabled const): Deleted.

  • page/Page.h:

(WebCore::Page::isLowPowerModeEnabled const):
(WebCore::Page::canUpdateThrottlingReason const):

9:35 PM Changeset in webkit [255485] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Ensure non-initial values for CSS Font properties
https://bugs.webkit.org/show_bug.cgi?id=206312

Patch by Doug Kelly <Doug Kelly> on 2020-01-30
Reviewed by Antti Koivisto.

If CSS font properties are currently initial values, set them to a normal value.

  • css/CSSFontFaceSet.cpp:

(WebCore::computeFontSelectionRequest):

9:28 PM Changeset in webkit [255484] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Crash in GraphicsLayerCA::fetchCloneLayers() when setting contents to solid color
https://bugs.webkit.org/show_bug.cgi?id=205530

Patch by Doug Kelly <Doug Kelly> on 2020-01-30
Reviewed by Ryosuke Niwa.

Change the assertion in fetchCloneLayers() to check for null explicitly to ensure contentsLayer is valid.

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):

8:21 PM Changeset in webkit [255483] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

REGRESSION: [Mac wk1] imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3.html is a flakey failure
https://bugs.webkit.org/show_bug.cgi?id=205168
<rdar://problem/57880452>

Removed the flaky test expectation now that the test is no longer flaky.

  • platform/mac-wk1/TestExpectations:
6:30 PM Changeset in webkit [255482] by mark.lam@apple.com
  • 19 edits in trunk/Source/JavaScriptCore

Some improvements to DFG and FTL dumps to improve readability and searchability.
https://bugs.webkit.org/show_bug.cgi?id=207024

Reviewed by Saam Barati.

This patch applies the following changes:

  1. Prefix Air and B2 dumps with a tierName prefix. The tierName prefix strings are as follows:

"FTL ", "DFG ", "b3 ", "Air ", "asm "

The choice to use a lowercase "b3" and "asm" with upper case "Air" is
deliberate because I found this combination to be easier to read and scan as
prefixes of the dump lines. See dump samples below.

  1. Make DFG node IDs consistently expressed as D@<node index> e.g. D@104. The definition of the node will be the id followed by a colon e.g. D@104: This makes it easy to search references to this node anywhere in the dump.

Make B3 nodes expressed as b@<node index> e.g. b@542.
This also makes it searchable since there's now no ambiguity between b@542 and
D@542.

The choice to use a lowercase "b" and an uppercase "D" is intentional because
"b@542" and "d@542" looks too similar, and I prefer to not use too much
uppercase. Plus this makes the node consistent in capitalization with the
tierName prefixes above of "b3 " and "DFG " respectively.

Here's a sample of what the dumps now look like:

DFG graph dump:
<code>

...

6 55: <-- foo#DFndCW:<0x62d0000b8140, bc#65, Call, known callee: Object: 0x62d000035920 with butterfly 0x0 (Structure %AN:Function), StructureID: 12711, numArgs+this = 1, numFixup = 0, stackOffset = -16 (loc0 maps to loc16)>

3 6 55: D@79:< 3:-> ArithAdd(Int32:Kill:D@95, Int32:D@42, Int32|PureNum|UseAsOther, Int32, CheckOverflow, Exits, bc#71, ExitValid)
4 6 55: D@3:<!0:-> KillStack(MustGen, loc7, W:Stack(loc7), ClobbersExit, bc#71, ExitInvalid)
5 6 55: D@85:<!0:-> MovHint(Check:Untyped:D@79, MustGen, loc7, W:SideState, ClobbersExit, bc#71, ExitInvalid)
6 6 55: D@102:< 1:-> CompareLess(Int32:D@79, Int32:D@89, Boolean|UseAsOther, Bool, Exits, bc#74, ExitValid)
7 6 55: D@104:<!0:-> Branch(KnownBoolean:Kill:D@102, MustGen, T:#1/w:10.000000, F:#7/w:1.000000, W:SideState, bc#74, ExitInvalid)

...

</code>

B3 graph dump:
<code>

...
b3 BB#14: ; frequency = 10.000000
b3 Predecessors: #13
b3 Int32 b@531 = CheckAdd(b@10:WarmAny, $1(b@1):WarmAny, b@64:ColdAny, b@10:ColdAny, generator = 0x606000022e80, earlyClobbered = [], lateClobbered = [], usedRegisters = [], ExitsSideways|Reads:Top, D@79)
b3 Int32 b@539 = LessThan(b@531, $100(b@578), D@102)
b3 Void b@542 = Branch(b@539, Terminal, D@104)
b3 Successors: Then:#2, Else:#15
...

</code>

Air graph dump:
<code>

...
Air BB#5: ; frequency = 10.000000
Air Predecessors: #4
Air Move -96(%rbp), %rax, b@531
Air Patch &BranchAdd32(3,ForceLateUseUnlessRecoverable)3, Overflow, $1, %rax, -104(%rbp), -96(%rbp), b@531
Air Branch32 LessThan, %rax, $100, b@542
Air Successors: #1, #6
...

</code>

FTL disassembly dump:
<code>

...
Air BB#5: ; frequency = 10.000000
Air Predecessors: #4
DFG D@42:< 2:-> JSConstant(JS|PureInt, Int32, Int32: 1, bc#0, ExitInvalid)
DFG D@79:< 3:-> ArithAdd(Int32:Kill:D@95, Int32:D@42, Int32|PureNum|UseAsOther, Int32, CheckOverflow, Exits, bc#71, ExitValid)
b3 Int32 b@1 = Const32(1)
b3 Int32 b@531 = CheckAdd(b@10:WarmAny, $1(b@1):WarmAny, b@64:ColdAny, b@10:ColdAny, generator = 0x606000022e80, earlyClobbered = [], lateClobbered = [], usedRegisters = [%rax, %rbx, %rbp, %r12], ExitsSideways|Reads:Top, D@79)
Air Move -96(%rbp), %rax, b@531
asm 0x4576b9c04712: mov -0x60(%rbp), %rax
Air Patch &BranchAdd32(3,ForceLateUseUnlessRecoverable)3, Overflow, $1, %rax, -104(%rbp), -96(%rbp), b@531
asm 0x4576b9c04716: inc %eax
asm 0x4576b9c04718: jo 0x4576b9c04861
DFG D@89:< 1:-> JSConstant(JS|PureNum|UseAsOther, NonBoolInt32, Int32: 100, bc#0, ExitInvalid)
DFG D@102:< 1:-> CompareLess(Int32:D@79, Int32:D@89, Boolean|UseAsOther, Bool, Exits, bc#74, ExitValid)
DFG D@104:<!0:-> Branch(KnownBoolean:Kill:D@102, MustGen, T:#1/w:10.000000, F:#7/w:1.000000, W:SideState, bc#74, ExitInvalid)
b3 Int32 b@578 = Const32(100, D@89)
b3 Int32 b@539 = LessThan(b@531, $100(b@578), D@102)
b3 Void b@542 = Branch(b@539, Terminal, D@104)
Air Branch32 LessThan, %rax, $100, b@542
asm 0x4576b9c0471e: cmp $0x64, %eax
asm 0x4576b9c04721: jl 0x4576b9c0462f
Air Successors: #1, #6
...

</code>

  • b3/B3BasicBlock.cpp:

(JSC::B3::BasicBlock::deepDump const):

  • b3/B3Common.cpp:
  • b3/B3Common.h:
  • b3/B3Generate.cpp:

(JSC::B3::generateToAir):

  • b3/B3Procedure.cpp:

(JSC::B3::Procedure::dump const):

  • b3/B3Value.cpp:
  • b3/air/AirBasicBlock.cpp:

(JSC::B3::Air::BasicBlock::deepDump const):
(JSC::B3::Air::BasicBlock::dumpHeader const):
(JSC::B3::Air::BasicBlock::dumpFooter const):

  • b3/air/AirCode.cpp:

(JSC::B3::Air::Code::dump const):

  • b3/air/AirCode.h:
  • b3/air/AirDisassembler.cpp:

(JSC::B3::Air::Disassembler::dump):

  • b3/air/AirGenerate.cpp:

(JSC::B3::Air::prepareForGeneration):

  • dfg/DFGCommon.cpp:
  • dfg/DFGCommon.h:
  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::dumpBlockHeader):

  • dfg/DFGNode.cpp:

(WTF::printInternal):

  • ftl/FTLCompile.cpp:

(JSC::FTL::compile):

  • ftl/FTLCompile.h:
  • ftl/FTLState.cpp:

(JSC::FTL::State::State):

6:27 PM Changeset in webkit [255481] by rniwa@webkit.org
  • 3 edits in trunk/LayoutTests

Regression: http/tests/loading/remove-child-triggers-parser.html is failing consistently on windows
https://bugs.webkit.org/show_bug.cgi?id=206992

Reviewed by Simon Fraser.

Added back html & body elements to make Windows bots happy.

  • http/tests/loading/remove-child-triggers-parser-expected.txt:
  • http/tests/loading/remove-child-triggers-parser.html:
6:22 PM Changeset in webkit [255480] by jiewen_tan@apple.com
  • 3 edits in trunk/Source/WebKit

Add logging to show the flow of AppSSO
https://bugs.webkit.org/show_bug.cgi?id=206778
<rdar://problem/58626835>

Reviewed by Brent Fulgham.

  • Platform/Logging.h:
  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:

(WebKit::SOAuthorizationSession::shouldStart):
(WebKit::SOAuthorizationSession::start):
(WebKit::SOAuthorizationSession::fallBackToWebPath):
(WebKit::SOAuthorizationSession::abort):
(WebKit::SOAuthorizationSession::complete):
(WebKit::SOAuthorizationSession::presentViewController):
(WebKit::SOAuthorizationSession::dismissViewController):

5:55 PM Changeset in webkit [255479] by Alan Coon
  • 1 copy in tags/Safari-609.1.15.3.1

Tag Safari-609.1.15.3.1.

5:54 PM Changeset in webkit [255478] by Alan Coon
  • 1 copy in tags/Safari-609.1.15.3.11

Tag Safari-609.1.15.3.11.

5:53 PM Changeset in webkit [255477] by Fujii Hironori
  • 4 edits in trunk/Source/WebCore

[Cairo] Use CAIRO_FILTER_BILINEAR for image tile painting with InterpolationQuality::Default
https://bugs.webkit.org/show_bug.cgi?id=201326

Reviewed by Carlos Garcia Campos.

Mac port is using a better image interpolation method for painting
a single image than painting tiled images.

In Cairo port, CAIRO_FILTER_GOOD was used for both cases as
default. CAIRO_FILTER_GOOD is using separable convolution filter
for down-scaling (≤ 0.75 and ≠ 0.5), and bi-linear filter
otherwise. The separable convolution filter is better quality but
quite slower than bi-linear filter.

drawSurface of CairoOperations.cpp has the code to choose a filter
based on InterpolationQuality.
<https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp?rev=254506#L966>

This change copied the code to drawPatternToCairoContext, and
changed it to use CAIRO_FILTER_BILINEAR for
InterpolationQuality::Default.

  • platform/graphics/cairo/CairoOperations.cpp:

(WebCore::Cairo::drawPattern):

  • platform/graphics/cairo/CairoUtilities.cpp:

(WebCore::drawPatternToCairoContext): Set a filter by calling
cairo_pattern_set_filter based on InterpolationQuality.

  • platform/graphics/cairo/CairoUtilities.h: Added a InterpolationQuality argument.
4:58 PM Changeset in webkit [255476] by Alan Coon
  • 2 edits in branches/safari-609.1.15.3-macOS-branch/Source/WebKitLegacy/mac

Revert r254584. rdar://problem/59045533

4:51 PM Changeset in webkit [255475] by Ross Kirsling
  • 10 edits
    1 add
    1 delete in trunk

[CMake] Add SQLite::SQLite3 target
https://bugs.webkit.org/show_bug.cgi?id=207005

Reviewed by Don Olmstead.

.:

  • Source/cmake/FindSQLite3.cmake: Added.
  • Source/cmake/FindSqlite.cmake: Removed.
  • Source/cmake/OptionsAppleWin.cmake: Actually use find_package.
  • Source/cmake/OptionsFTW.cmake: Sqlite -> SQLite3
  • Source/cmake/OptionsGTK.cmake: Sqlite -> SQLite3
  • Source/cmake/OptionsPlayStation.cmake: Sqlite -> SQLite3
  • Source/cmake/OptionsWPE.cmake: Sqlite -> SQLite3
  • Source/cmake/OptionsWinCairo.cmake: Sqlite -> SQLite3

Source/WebCore:

  • CMakeLists.txt: Use SQLite3 target.
  • PlatformPlayStation.cmake: Remove redundant entries.
4:48 PM Changeset in webkit [255474] by Alan Coon
  • 1 copy in tags/Safari-610.1.2.1

Tag Safari-610.1.2.1.

4:45 PM Changeset in webkit [255473] by Alan Coon
  • 8 edits in branches/safari-610.1.2-branch/Source

Versioning.

4:43 PM Changeset in webkit [255472] by Alan Coon
  • 1 copy in branches/safari-610.1.2-branch

New branch.

4:35 PM Changeset in webkit [255471] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ iOS Release wk2 ] imported/w3c/IndexedDB-private-browsing/idbindex_getKey6.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=206952

Unreviewed test gardening.

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

  • platform/ios-simulator-wk2/TestExpectations:
4:32 PM Changeset in webkit [255470] by Alan Coon
  • 1 copy in tags/Safari-610.1.2

Tag Safari-610.1.2.

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

Add a quirk to opt Twitter out of the non-overlaid minimized input view
https://bugs.webkit.org/show_bug.cgi?id=207021
<rdar://problem/59016252>

Reviewed by Wenson Hsieh.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldAvoidResizingWhenInputViewBoundsChange const):
Twitter has a content breakpoint that sits immediately between the size
of the Safari content area on a 11" iPad in landscape with the App Banner
visible and the same minus the height of the minimized input view that
we display when using a hardware keyboard. This breakpoint removes the
login field, causing the keyboard to dismiss, the input view to disappear,
and the page to resize to the larger size. This results in a loop,
so we must opt Twitter out of the content-avoiding input view mechanism.

4:23 PM Changeset in webkit [255468] by Justin Fan
  • 6 edits in trunk

[WebGL] Add logging statements to attempt to catch texture-upload-size.html timeout
https://bugs.webkit.org/show_bug.cgi?id=207006

Source/WebCore:

Unreviewed temporary logging additions for flaky timeout investigation.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::bindTexture):
(WebCore::WebGLRenderingContextBase::createTexture):
(WebCore::WebGLRenderingContextBase::getError):
(WebCore::WebGLRenderingContextBase::texSubImage2D):
(WebCore::WebGLRenderingContextBase::texImage2D):

  • platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:

(WebCore::GraphicsContextGLOpenGL::texImage2D):

  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(WebCore::GraphicsContextGLOpenGL::bindTexture):
(WebCore::GraphicsContextGLOpenGL::getError):
(WebCore::GraphicsContextGLOpenGL::texSubImage2D):
(WebCore::GraphicsContextGLOpenGL::createTexture):

LayoutTests:

Unreviewed temporary logging additions caused unrelated tests to time out.

4:15 PM Changeset in webkit [255467] by Conrad Shultz
  • 2 edits in trunk/Source/WTF

FALLTHROUGH macro isn't properly defined when building Objective-C files using Clang
https://bugs.webkit.org/show_bug.cgi?id=206637

Reviewed by Darin Adler.

Allow the FALLTHROUGH macro to be defined properly when building with either GCC
or Clang.

  • wtf/Compiler.h:
3:59 PM Changeset in webkit [255466] by jiewen_tan@apple.com
  • 4 edits in trunk

Unreviewed, another speculative test fix after r255041

Source/WebKit:

  • UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:

(WebKit::MockLocalConnection::getAttestation const):
Adds kSecAttrAccessible: kSecAttrAccessibleAfterFirstUnlock to secItem to bypass
potential error due to screen locks.

Tools:

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::addTestKeyToKeychain):
Adds kSecAttrAccessible: kSecAttrAccessibleAfterFirstUnlock to secItem to bypass
potential error due to screen locks.

3:26 PM Changeset in webkit [255465] by Alan Coon
  • 1 copy in tags/Safari-610.1.1.2

Tag Safari-610.1.1.2.

3:17 PM Changeset in webkit [255464] by Alan Coon
  • 8 edits in branches/safari-609.1.15.3-iOS-branch/Source

Versioning.

3:14 PM Changeset in webkit [255463] by Alan Coon
  • 1 copy in branches/safari-609.1.15.3-iOS-branch

New branch.

3:07 PM Changeset in webkit [255462] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Regression: fast/hidpi/image-srcset-relative-svg-canvas-2x.html is consistently failing on iOS EWS
https://bugs.webkit.org/show_bug.cgi?id=206993

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations: Mark test as failing.
2:53 PM Changeset in webkit [255461] by achristensen@apple.com
  • 39 edits in trunk

Add WKNavigationDelegate SPI to disable TLS 1.0 and 1.1
https://bugs.webkit.org/show_bug.cgi?id=206979

Reviewed by Brady Eidson.

Source/WebCore/PAL:

  • pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

  • NetworkProcess/NetworkCORSPreflightChecker.cpp:

(WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):

  • NetworkProcess/NetworkCORSPreflightChecker.h:
  • NetworkProcess/NetworkDataTask.h:
  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::didReceiveChallenge):

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::didReceiveChallenge):

  • NetworkProcess/PingLoad.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::didReceiveChallenge):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(processServerTrustEvaluation):
(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
(WebKit::NetworkSessionCocoa::continueDidReceiveChallenge):

  • Shared/Authentication/AuthenticationManager.cpp:

(WebKit::AuthenticationManager::didReceiveAuthenticationChallenge):

  • Shared/Authentication/AuthenticationManager.h:
  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::shouldAllowLegacyTLS):

  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::systemAllowsLegacyTLSFor):
(WebKit::NavigationState::NavigationClient::shouldAllowLegacyTLS):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):

Tools:

  • MiniBrowser/mac/SettingsController.m:
  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:

(-[TLSNavigationDelegate waitForDidFinishNavigation]):
(-[TLSNavigationDelegate waitForDidFailProvisionalNavigation]):
(-[TLSNavigationDelegate receivedShouldAllowLegacyTLS]):
(-[TLSNavigationDelegate webView:didReceiveAuthenticationChallenge:completionHandler:]):
(-[TLSNavigationDelegate webView:didFinishNavigation:]):
(-[TLSNavigationDelegate webView:didFailProvisionalNavigation:withError:]):
(-[TLSNavigationDelegate _webView:authenticationChallenge:shouldAllowLegacyTLS:]):
(TestWebKitAPI::TEST):

2:50 PM Changeset in webkit [255460] by ysuzuki@apple.com
  • 5 edits
    1 delete in trunk/Source

[WTF] Remove PackedIntVector
https://bugs.webkit.org/show_bug.cgi?id=207018

Reviewed by Mark Lam.

Source/JavaScriptCore:

  • bytecode/BytecodeBasicBlock.h:

Source/WTF:

Simply removing PackedIntVector since (1) nobody uses it, (2) it is somewhat broken (like, size()), and (3) its implementation is not so efficient.
If we want to have this feature, we can recreate it.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/PackedIntVector.h: Removed.
2:32 PM Changeset in webkit [255459] by ysuzuki@apple.com
  • 14 edits in trunk/Source/JavaScriptCore

[JSC] Remove unnecessary allocations in BytecodeBasicBlock
https://bugs.webkit.org/show_bug.cgi?id=206986

Reviewed by Mark Lam.

We know that BytecodeBasicBlock itself takes 2MB in Gmail. And each BytecodeBasicBlock has Vector<unsigned>
and Vector<BytecodeBasicBlock*>.

BytecodeBasicBlock holds all the offset per bytecode as unsigned in m_offsets. But this offset is
only used when reverse iterating a bytecode in a BytecodeBasicBlock. We can hold a length of each
bytecode instead, which is much smaller (unsigned v.s. uint8_t).

Since each BytecodeBasicBlock has index, we should hold successors in Vector<unsigned> instead of Vector<BytecodeBasicBlock*>.

We are also allocating BytecodeBasicBlock in makeUnique<> and having them in Vector<std::unique_ptr<BytecodeBasicBlock>>.
But this is not necessary since only BytecodeBasicBlock::compute can modify this vector. We should generate Vector<BytecodeBasicBlock>
from BytecodeBasicBlock::compute.

We are also planning purging BytecodeBasicBlock in UnlinkedCodeBlock if it is not used so much. But this will be done in a separate patch.

  • bytecode/BytecodeBasicBlock.cpp:

(JSC::BytecodeBasicBlock::BytecodeBasicBlock):
(JSC::BytecodeBasicBlock::addLength):
(JSC::BytecodeBasicBlock::shrinkToFit):
(JSC::BytecodeBasicBlock::computeImpl):
(JSC::BytecodeBasicBlock::compute):

  • bytecode/BytecodeBasicBlock.h:

(JSC::BytecodeBasicBlock::delta const):
(JSC::BytecodeBasicBlock::successors const):
(JSC::BytecodeBasicBlock::operator bool const):
(JSC::BytecodeBasicBlock::addSuccessor):
(JSC::BytecodeBasicBlock::offsets const): Deleted.
(JSC::BytecodeBasicBlock:: const): Deleted.
(JSC::BytecodeBasicBlock::BytecodeBasicBlock): Deleted.
(JSC::BytecodeBasicBlock::addLength): Deleted.

  • bytecode/BytecodeGeneratorification.cpp:

(JSC::BytecodeGeneratorification::BytecodeGeneratorification):

  • bytecode/BytecodeGraph.h:

(JSC::BytecodeGraph::blockContainsBytecodeOffset):
(JSC::BytecodeGraph::findBasicBlockForBytecodeOffset):
(JSC::BytecodeGraph::findBasicBlockWithLeaderOffset):
(JSC::BytecodeGraph::at const):
(JSC::BytecodeGraph::operator[] const):
(JSC::BytecodeGraph::begin):
(JSC::BytecodeGraph::end):
(JSC::BytecodeGraph::first):
(JSC::BytecodeGraph::last):
(JSC::BytecodeGraph::BytecodeGraph):
(JSC::BytecodeGraph::begin const): Deleted.
(JSC::BytecodeGraph::end const): Deleted.

  • bytecode/BytecodeLivenessAnalysis.cpp:

(JSC::BytecodeLivenessAnalysis::getLivenessInfoAtBytecodeIndex):
(JSC::BytecodeLivenessAnalysis::computeFullLiveness):
(JSC::BytecodeLivenessAnalysis::computeKills):
(JSC::BytecodeLivenessAnalysis::dumpResults):

  • bytecode/BytecodeLivenessAnalysis.h:
  • bytecode/BytecodeLivenessAnalysisInlines.h:

(JSC::BytecodeLivenessPropagation::computeLocalLivenessForBytecodeIndex):
(JSC::BytecodeLivenessPropagation::computeLocalLivenessForBlock):
(JSC::BytecodeLivenessPropagation::getLivenessInfoAtBytecodeIndex):
(JSC::BytecodeLivenessPropagation::runLivenessFixpoint):

  • bytecode/InstructionStream.h:

(JSC::InstructionStream::MutableRef::operator-> const):
(JSC::InstructionStream::MutableRef::ptr const):
(JSC::InstructionStream::MutableRef::unwrap const):

  • bytecode/Opcode.h:
  • generator/Section.rb:
  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • llint/LLIntData.cpp:

(JSC::LLInt::initialize):

  • llint/LowLevelInterpreter.cpp:

(JSC::CLoop::execute):

2:31 PM Changeset in webkit [255458] by timothy_horton@apple.com
  • 4 edits in trunk/Source/WebKit

Can still get stuck after swipe backwards with a slow server, even after r254552
https://bugs.webkit.org/show_bug.cgi?id=207017
<rdar://problem/59016256>

Reviewed by Chris Dumez.

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::unfreezeLayerTreeDueToSwipeAnimation):

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

There's a second case where you can get stuck with the "swipe gesture"
layer tree freeze reason in the web process: when doing a cross-origin
navigation where the load takes more than 3 seconds (the swipe
snapshot timeout) to commit, the provisional page will have mirrored
the original page's frozen state upon creation, but will not ever
receive the unfreeze, because it is sent while still provisional.

To fix this, just forward the unfreeze message to the provisional page.

2:13 PM Changeset in webkit [255457] by pvollan@apple.com
  • 19 edits
    4 adds in trunk

[iOS] Issue mach sandbox extension to the frontboard and icon service when the attachment element is enabled
https://bugs.webkit.org/show_bug.cgi?id=205443
Source/WebCore:

Reviewed by Brent Fulgham.

Get focus ring color in the UI process since getting this color will communicate with the frontboard daemon.

Test: fast/sandbox/ios/focus-ring-color.html

  • rendering/RenderTheme.h:
  • rendering/RenderThemeIOS.h:
  • rendering/RenderThemeIOS.mm:

(WebCore::cachedFocusRingColor):
(WebCore::RenderThemeIOS::platformFocusRingColor const):
(WebCore::RenderThemeIOS::setFocusRingColor):

  • testing/Internals.cpp:

(WebCore::Internals::focusRingColor):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit:

<rdar://problem/58074291>

Reviewed by Brent Fulgham.

When support for the html attachment element is enabled, issue a mach lookup extension to the frontboard and icon service
for the WebContent process, since these daemons are being contacted when icons for attachments are being queried. Also,
retrieve the focus ring color in the UI process, since getting this color requires access to the frontboard daemon.

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

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

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

LayoutTests:

Reviewed by Brent Fulgham.

  • fast/sandbox/ios/focus-ring-color-expected.txt: Added.
  • fast/sandbox/ios/focus-ring-color.html: Added.
  • fast/sandbox/ios/sandbox-mach-lookup-attachment-element-expected.txt: Added.
  • fast/sandbox/ios/sandbox-mach-lookup-attachment-element.html: Added.
1:52 PM Changeset in webkit [255456] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r253267): Swipe from edge on Twitter images no longer goes back
https://bugs.webkit.org/show_bug.cgi?id=207011
<rdar://problem/58966044>

Reviewed by Wenson Hsieh.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]):
The new touch-event async deferring gesture recognizer was erroneously deferring
edge swipes, which are not allowed to be blocked by touch events.
Opt them out of the new gesture gate mechanism.

1:36 PM Changeset in webkit [255455] by Jonathan Bedard
  • 18 edits in trunk

PAL: Remove old iOS version macros
https://bugs.webkit.org/show_bug.cgi?id=206905

Reviewed by Darin Adler.

Source/WebCore:

No functional changes, covered by existing tests.

  • loader/archive/cf/LegacyWebArchiveMac.mm: Remove USE(SECURE_ARCHIVER_API).
  • testing/cocoa/WebArchiveDumpSupport.mm: Ditto.

Source/WebCore/PAL:

  • pal/cocoa/AVFoundationSoftLink.mm: Remove iOS 13 version checks.
  • pal/spi/cf/CFNetworkSPI.h: Remove iOS 11 version checks.
  • pal/spi/cg/CoreGraphicsSPI.h: Use HAVE macro instead of version checks.
  • pal/spi/cocoa/IOSurfaceSPI.h: Remove iOS 11 version checks.
  • pal/spi/cocoa/NSKeyedArchiverSPI.h: Remove USE(SECURE_ARCHIVER_API) and

USE(SECURE_ARCHIVER_FOR_ATTRIBUTED_STRING).

  • pal/spi/cocoa/NSProgressSPI.h: Replace USE(NSPROGRESS_PUBLISHING_SPI) with

HAVE(NSPROGRESS_PUBLISHING_SPI).

  • pal/spi/ios/MediaPlayerSPI.h: Remove iOS 11 version checks.

Source/WebKit:

  • NetworkProcess/Downloads/cocoa/DownloadCocoa.mm: Remove USE(NSPROGRESS_PUBLISHING_SPI)
  • NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm: Ditto.

Source/WTF:

  • wtf/PlatformHave.h: Add HAVE(NSPROGRESS_PUBLISHING_SPI).

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/DownloadProgress.mm: Remove USE(NSPROGRESS_PUBLISHING_SPI)

with HAVE(NSPROGRESS_PUBLISHING_SPI)

1:35 PM Changeset in webkit [255454] by Alan Coon
  • 8 edits in branches/safari-609.1.15.3-Downlevel-branch/Source

Versioning.

1:30 PM Changeset in webkit [255453] by Alan Coon
  • 8 edits in branches/safari-609.1.15.3-macOS-branch/Source

Versioning.

1:27 PM Changeset in webkit [255452] by Alexey Shvayka
  • 12 edits in trunk

Incomplete braced quantifiers should be banned in Unicode patterns only
https://bugs.webkit.org/show_bug.cgi?id=206776

Reviewed by Darin Adler.

JSTests:

Although the change does not affect Unicode property escapes, a few
test/built-ins/RegExp/property-escapes/non-existent-property-value*.js files
are now passing because they had
p or
P instead of CharacterClassEscape.

  • test262/expectations.yaml: Mark 18 test cases as passing.

Source/JavaScriptCore:

This change adds SyntaxError for Unicode patterns, aligning JSC with
V8 and SpiderMonkey, and also capitalizes "Unicode" in error messages.

Grammar: https://tc39.es/ecma262/#prod-annexB-Term
(/u flag precludes the use of ExtendedAtom and thus InvalidBracedQuantifier)

  • yarr/YarrErrorCode.cpp:

(JSC::Yarr::errorMessage):
(JSC::Yarr::errorToThrow):

  • yarr/YarrErrorCode.h:
  • yarr/YarrParser.h:

(JSC::Yarr::Parser::parseTokens):

LayoutTests:

An error message test is added for this change and for webkit.org/b/206768.
Other tests are adjusted for capitalized "Unicode" in error messages.

  • js/regexp-named-capture-groups-expected.txt:
  • js/regexp-unicode-expected.txt:
  • js/regress-158080-expected.txt:
  • js/script-tests/regexp-named-capture-groups.js:
  • js/script-tests/regexp-unicode.js:
1:17 PM Changeset in webkit [255451] by Alan Coon
  • 1 copy in branches/safari-609.1.15.3-Downlevel-branch

New branch.

1:16 PM Changeset in webkit [255450] by Alan Coon
  • 1 copy in branches/safari-609.1.15.3-macOS-branch

New branch.

1:00 PM Changeset in webkit [255449] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Make SourceProviderCacheItem small
https://bugs.webkit.org/show_bug.cgi?id=206987

Reviewed by Mark Lam.

We know this becomes very large when parsing a large script, and it is noticeable in some of RAMification tests.
We should use PackedPtr to shrink size of SourceProviderCacheItem.

  • parser/Parser.h:

(JSC::Scope::restoreFromSourceProviderCache):

  • parser/SourceProviderCacheItem.h:

(JSC::SourceProviderCacheItem::usedVariables const):
(JSC::SourceProviderCacheItem::SourceProviderCacheItem):

12:59 PM Changeset in webkit [255448] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Crash in RenderElement::selectionPseudoStyle with detail element set to display: contents
https://bugs.webkit.org/show_bug.cgi?id=206705

Patch by Doug Kelly <Doug Kelly> on 2020-01-30
Reviewed by Zalan Bujtas.

Source/WebCore:

Check the element for a valid renderer before calling getUncachedPseudoStyle(), and if the
element is set to "display: contents", walk up to the parent element until we're at the root
or the element is not set to "display: contents".

Test: fast/css/display-contents-detail-selection.html

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::selectionPseudoStyle const):

LayoutTests:

  • fast/css/display-contents-detail-selection-expected.txt: Added.
  • fast/css/display-contents-detail-selection.html: Added.
12:02 PM Changeset in webkit [255447] by Alan Coon
  • 2 edits in branches/safari-610.1.1-branch/Source/WebKit

Revert "Cherry-pick r254874. rdar://problem/58936679"

This reverts commit r255432.

12:02 PM Changeset in webkit [255446] by Alan Coon
  • 2 edits in branches/safari-610.1.1-branch/Source/WebKit

Revert "Cherry-pick r255105. rdar://problem/58936679"

This reverts commit r255433.

12:02 PM Changeset in webkit [255445] by Alan Coon
  • 3 edits
    1 delete in branches/safari-610.1.1-branch

Revert "Cherry-pick r255337. rdar://problem/58936679"

This reverts commit r255434.

12:02 PM Changeset in webkit [255444] by Alan Coon
  • 2 edits in branches/safari-610.1.1-branch/Source/WebKit

Revert "Cherry-pick r255339. rdar://problem/58936679"

This reverts commit r255435.

11:58 AM Changeset in webkit [255443] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r255339. rdar://problem/58936679

Fix the build

  • UIProcess/ios/WKMouseGestureRecognizer.mm: (-[WKMouseGestureRecognizer touchesEnded:withEvent:]):

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

11:58 AM Changeset in webkit [255442] by Alan Coon
  • 3 edits
    1 add in branches/safari-609-branch

Cherry-pick r255337. rdar://problem/58936679

macCatalyst: Right clicking on a link follows it immediately
https://bugs.webkit.org/show_bug.cgi?id=206919
<rdar://problem/58936679>

Reviewed by Wenson Hsieh.

Source/WebKit:

  • UIProcess/ios/WKMouseGestureRecognizer.mm: (-[WKMouseGestureRecognizer createMouseEventWithType:forEvent:]): (-[WKMouseGestureRecognizer touchesBegan:withEvent:]): (-[WKMouseGestureRecognizer touchesEnded:withEvent:]): UIKit's _buttonMask does not include the currently-released button, so in order to correctly identify the released button in touchesEnded, store the mask for the length of the click.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/MacCatalystMouseSupport.mm: (TEST): Add a test ensuring that mouseup is still called with the secondary button, even if the event's buttonmask is 0.

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

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

[ Mac ] fast/history/page-cache-webdatabase-pending-transaction.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=207010

unreviewed test gardening.

  • platform/mac/TestExpectations:
11:04 AM Changeset in webkit [255440] by keith_miller@apple.com
  • 15 edits
    2 adds in trunk

Parser needs to restore unary stack state when backtracking
https://bugs.webkit.org/show_bug.cgi?id=206972

Reviewed by Saam Barati.

JSTests:

  • stress/parser-save-state-remove-stale-entries.js: Added.
  • stress/parser-syntax-checker-assignments-are-not-resolve-expressions.js: Added.

(foo):

Source/JavaScriptCore:

Previously we would try to parse possibly stale unary operator
stack entries after backtracking from a parse error. This would
cause us to think one token was a different token while reparsing
after backtracking. Additionally, this patch fixes an issue where
the syntax checker would think assignment expressions were resolve
expressions. Intrestingly, this was not tested in test262.

Lastly, I tried adding some assertions to improve help diagnose
when our source text locations are incorrect.

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::emitExpressionInfo):

  • bytecompiler/NodesCodegen.cpp:

(JSC::ThisNode::emitBytecode):
(JSC::ResolveNode::emitBytecode):
(JSC::EmptyVarExpression::emitBytecode):
(JSC::EmptyLetExpression::emitBytecode):
(JSC::ForInNode::emitLoopHeader):
(JSC::ForOfNode::emitBytecode):
(JSC::DefineFieldNode::emitBytecode):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::unaryTokenStackDepth const):
(JSC::ASTBuilder::setUnaryTokenStackDepth):

  • parser/Lexer.cpp:

(JSC::Lexer<T>::Lexer):

  • parser/Lexer.h:

(JSC::Lexer::setLineNumber):

  • parser/Nodes.cpp:

(JSC::FunctionMetadataNode::operator== const):

  • parser/Nodes.h:

(JSC::ThrowableExpressionData::ThrowableExpressionData):
(JSC::ThrowableExpressionData::setExceptionSourceCode):
(JSC::ThrowableExpressionData::checkConsistency const):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::isArrowFunctionParameters):
(JSC::Parser<LexerType>::parseSourceElements):
(JSC::Parser<LexerType>::parseModuleSourceElements):
(JSC::Parser<LexerType>::parseStatementListItem):
(JSC::Parser<LexerType>::parseAssignmentElement):
(JSC::Parser<LexerType>::parseForStatement):
(JSC::Parser<LexerType>::maybeParseAsyncFunctionDeclarationStatement):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseExportDeclaration):
(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::Parser<LexerType>::parseYieldExpression):
(JSC::Parser<LexerType>::parseProperty):
(JSC::Parser<LexerType>::parseMemberExpression):
(JSC::Parser<LexerType>::parseUnaryExpression):

  • parser/Parser.h:

(JSC::Parser::lexCurrentTokenAgainUnderCurrentContext):
(JSC::Parser::internalSaveParserState):
(JSC::Parser::restoreParserState):
(JSC::Parser::internalSaveState):
(JSC::Parser::swapSavePointForError):
(JSC::Parser::createSavePoint):
(JSC::Parser::internalRestoreState):
(JSC::Parser::restoreSavePointWithError):
(JSC::Parser::restoreSavePoint):
(JSC::Parser::createSavePointForError): Deleted.

  • parser/ParserTokens.h:

(JSC::JSTextPosition::JSTextPosition):
(JSC::JSTextPosition::checkConsistency):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::operatorStackPop):

10:57 AM Changeset in webkit [255439] by Ryan Haddad
  • 12 edits
    9 deletes in trunk

Unreviewed, rolling out r255424.

Breaks internal builds.

Reverted changeset:

"[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder"
https://bugs.webkit.org/show_bug.cgi?id=206582
https://trac.webkit.org/changeset/255424

10:54 AM Changeset in webkit [255438] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

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):

10:07 AM Changeset in webkit [255437] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Crash in RenderBlockFlow::adjustLinePositionForPagination() with complex line without root box
https://bugs.webkit.org/show_bug.cgi?id=206610

Patch by Doug Kelly <Doug Kelly> on 2020-01-30
Reviewed by Zalan Bujtas.

Source/WebCore:

Add a check for a null pointer when getting firstRootBox() -- if it is null, return early after calling setPaginationStrut().

Test: fast/text/complex-without-root-box.html

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::adjustLinePositionForPagination):

LayoutTests:

  • fast/text/complex-without-root-box-expected.txt: Added.
  • fast/text/complex-without-root-box.html: Added.
9:56 AM Changeset in webkit [255436] by Jonathan Bedard
  • 2 edits in trunk/Tools

TestWebKitAPI: Re-baseline AccessibilityTests for Catalyst
https://bugs.webkit.org/show_bug.cgi?id=206997

Reviewed by Wenson Hsieh.

  • TestWebKitAPI/Tests/ios/AccessibilityTestsIOS.mm:

(TestWebKitAPI::TEST):

9:48 AM Changeset in webkit [255435] by Alan Coon
  • 2 edits in branches/safari-610.1.1-branch/Source/WebKit

Cherry-pick r255339. rdar://problem/58936679

Fix the build

  • UIProcess/ios/WKMouseGestureRecognizer.mm: (-[WKMouseGestureRecognizer touchesEnded:withEvent:]):

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

9:48 AM Changeset in webkit [255434] by Alan Coon
  • 3 edits
    1 add in branches/safari-610.1.1-branch

Cherry-pick r255337. rdar://problem/58936679

macCatalyst: Right clicking on a link follows it immediately
https://bugs.webkit.org/show_bug.cgi?id=206919
<rdar://problem/58936679>

Reviewed by Wenson Hsieh.

Source/WebKit:

  • UIProcess/ios/WKMouseGestureRecognizer.mm: (-[WKMouseGestureRecognizer createMouseEventWithType:forEvent:]): (-[WKMouseGestureRecognizer touchesBegan:withEvent:]): (-[WKMouseGestureRecognizer touchesEnded:withEvent:]): UIKit's _buttonMask does not include the currently-released button, so in order to correctly identify the released button in touchesEnded, store the mask for the length of the click.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/MacCatalystMouseSupport.mm: (TEST): Add a test ensuring that mouseup is still called with the secondary button, even if the event's buttonmask is 0.

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

9:48 AM Changeset in webkit [255433] by Alan Coon
  • 2 edits in branches/safari-610.1.1-branch/Source/WebKit

Cherry-pick r255105. rdar://problem/58936679

macCatalyst: Right clicking on links follows the link, but shouldn't
https://bugs.webkit.org/show_bug.cgi?id=206777
<rdar://problem/56586280>

Reviewed by Wenson Hsieh.

  • UIProcess/ios/WKMouseGestureRecognizer.mm: (-[WKMouseGestureRecognizer createMouseEventWithType:forEvent:]): (-[WKMouseGestureRecognizer touchesEnded:withEvent:]): I got 'button' and 'buttons' backwards.

'button' indicates which button the event is about, so in MouseUp,
it should still be 2.

'buttons' indicate which buttons are still down, so in MouseUp,
it should not include 2. Since we don't currently track mouse button
chording here, we'll just say "none". Leave a FIXME about that.

This makes WebCore's behavior correct, and now it doesn't follow the link.

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

9:48 AM Changeset in webkit [255432] by Alan Coon
  • 2 edits in branches/safari-610.1.1-branch/Source/WebKit

Cherry-pick r254874. rdar://problem/58936679

macCatalyst: Two-finger click is dispatched to DOM as left click
https://bugs.webkit.org/show_bug.cgi?id=206549

Reviewed by Simon Fraser.

  • UIProcess/ios/WKMouseGestureRecognizer.mm: (-[WKMouseGestureRecognizer createMouseEventWithType:forEvent:]): (-[WKMouseGestureRecognizer touchesBegan:withEvent:]): (-[WKMouseGestureRecognizer touchesMoved:withEvent:]): (-[WKMouseGestureRecognizer touchesEnded:withEvent:]): (-[WKMouseGestureRecognizer _hoverEntered:withEvent:]): (-[WKMouseGestureRecognizer _hoverMoved:withEvent:]): (-[WKMouseGestureRecognizer _hoverExited:withEvent:]): (-[WKMouseGestureRecognizer createMouseEventWithType:]): Deleted. We correctly say button=2 for ctrl-click, but not for secondary-button click.

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

9:35 AM Changeset in webkit [255431] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

REGRESSION (r252064): [ Mac iOS ] storage/websql/statement-error-callback.html is timing out flakily
https://bugs.webkit.org/show_bug.cgi?id=206291
<rdar://problem/58606666>

Unreviewed, partial rollout of r252064 which seems to have introduced the regression.

No new tests, covered by existing test

  • Modules/webdatabase/SQLTransaction.cpp:

(WebCore::SQLTransaction::notifyDatabaseThreadIsShuttingDown):

9:15 AM Changeset in webkit [255430] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-overflow.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207003

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-01-30

  • platform/mac-wk2/TestExpectations:
9:11 AM Changeset in webkit [255429] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ iOS wk2 ] imported/w3c/web-platform-tests/FileAPI/historical.https.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207002

Unreviewed test gardening.

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

  • platform/ios-simulator-wk2/TestExpectations:
9:09 AM Changeset in webkit [255428] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[iOS] Remove report rule for 'com.apple.runningboard' from the Network and GPU process sandboxes
https://bugs.webkit.org/show_bug.cgi?id=206980
<rdar://problem/58900030>

Reviewed by Maciej Stachowiak.

Remove the logging now that we have useful backtraces.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
8:56 AM Changeset in webkit [255427] by Chris Dumez
  • 4 edits in trunk/LayoutTests

[ Mac ] fast/dom/Window/post-message-crash.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=206949
<rdar://problem/58997453>

Unreviewed, fix fast/dom/Window/post-message-crash.html test to stop failing if it takes more than 50ms to run
and unskip on all platforms.

  • fast/dom/Window/post-message-crash.html:
  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
8:52 AM Changeset in webkit [255426] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] webrtc/video-autoplay.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207001

Unreviewed test gardening

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-01-30

  • platform/mac-wk2/TestExpectations:
7:42 AM Changeset in webkit [255425] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

Unreviewed. Remove the build warning since r254991 as below.
warning: base class ‘class WTF::RefCounted<WebCore::AnimationList>’
should be explicitly initialized in the copy constructor [-Wextra]

No new tests, no behavioral changes.

  • platform/animation/AnimationList.cpp:

(WebCore::AnimationList::AnimationList):

6:52 AM Changeset in webkit [255424] by youenn@apple.com
  • 13 edits
    1 copy
    8 adds in trunk

[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
https://bugs.webkit.org/show_bug.cgi?id=206582

Reviewed by Eric Carlson.

Source/WebCore:

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.
Since AVAssetWriterDelegate is Apple SDK only, keep the existing file based implementation as a fallback.

Covered by existing tests.

  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.h:
  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:

(WebCore::AudioSampleBufferCompressor::create):
(WebCore::AudioSampleBufferCompressor::AudioSampleBufferCompressor):
(WebCore::AudioSampleBufferCompressor::~AudioSampleBufferCompressor):
(WebCore::AudioSampleBufferCompressor::initialize):
(WebCore::AudioSampleBufferCompressor::finish):
(WebCore::AudioSampleBufferCompressor::audioConverterComplexInputDataProc):
(WebCore::AudioSampleBufferCompressor::initAudioConverterForSourceFormatDescription):
(WebCore::AudioSampleBufferCompressor::computeBufferSizeForAudioFormat):
(WebCore::AudioSampleBufferCompressor::attachPrimingTrimsIfNeeded):
(WebCore::AudioSampleBufferCompressor::gradualDecoderRefreshCount):
(WebCore::AudioSampleBufferCompressor::sampleBufferWithNumPackets):
(WebCore::AudioSampleBufferCompressor::processSampleBuffersUntilLowWaterTime):
(WebCore::AudioSampleBufferCompressor::provideSourceDataNumOutputPackets):
(WebCore::AudioSampleBufferCompressor::processSampleBuffer):
(WebCore::AudioSampleBufferCompressor::addSampleBuffer):
(WebCore::AudioSampleBufferCompressor::getOutputSampleBuffer):
(WebCore::AudioSampleBufferCompressor::takeOutputSampleBuffer):

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::create):
(WebCore::MediaRecorderPrivateWriter::MediaRecorderPrivateWriter):
(WebCore::MediaRecorderPrivateWriter::initialize):
(WebCore::MediaRecorderPrivateWriter::processNewCompressedVideoSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::processNewCompressedAudioSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::appendCompressedAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendCompressedVideoSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::stopRecording):

  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.h:
  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:

(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:

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:

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:

(WebKit::RemoteMediaRecorder::create):
Use new constructor.

LayoutTests:

  • 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.

6:12 AM Changeset in webkit [255423] by svillar@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Fix build with ACCELERATED_2D_CANVAS enabled
https://bugs.webkit.org/show_bug.cgi?id=206976

Reviewed by Philippe Normand.

When ACCELERATED_2D_CANVAS is enabled the MediaPlayerPrivate uses both PlatformDisplay and
GLContext that were undefined. Apart from that all the MediaPlayer::PreLoad::None enums fail
because cairo-gl.h ends up including X.h which already defines None.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
5:47 AM Changeset in webkit [255422] by graouts@webkit.org
  • 8 edits
    2 adds in trunk

[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.
5:27 AM Changeset in webkit [255421] by Carlos Garcia Campos
  • 4 edits in trunk

REGRESSION(r253636): [GTK] Mouse cursor changes using onMouseXYZ are erratic
https://bugs.webkit.org/show_bug.cgi?id=206454

Reviewed by Tim Horton.

Source/WebKit:

Since r253636 only platforms defining HAVE_NSCURSOR claim to support setting the cursor.

  • WebProcess/WebCoreSupport/WebChromeClient.h: Do not implement supportsSettingCursor() for GTK port either.

LayoutTests:

  • platform/gtk/TestExpectations:
5:10 AM Changeset in webkit [255420] by Noam Rosenthal
  • 7 edits in trunk

REGRESSION (r254406): Gmail.com star/favorite icons are not rendering
https://bugs.webkit.org/show_bug.cgi?id=206909

Reviewed by Simon Fraser.

Source/WebCore:

Make image-set parsing more conservative, for backwards compatibility:

  • Differentiate between image-set and -webkit-image-set when parsing, -webkit-image-set maintains old behavior.
  • Don't allow empty urls when using raw strings, e.g. image-set( 1x) is invalid.

Tests updated: fast/css/image-set-parsing.html.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::consumeImageSet):
(WebCore::CSSPropertyParserHelpers::consumeImage):

LayoutTests:

Added empty URLs and new syntax with prefixed image-set to invalid tests.
Modified valid image-set parsing test to separate prefixed/non-prefixed.

  • fast/css/image-set-parsing-generated.html:
  • fast/css/image-set-parsing-invalid-expected.txt:
  • fast/css/image-set-parsing-invalid.html:
  • fast/css/image-set-parsing.html:
2:27 AM Changeset in webkit [255419] by commit-queue@webkit.org
  • 7 edits
    3 moves
    3 adds
    3 deletes in trunk/LayoutTests

[css-grid] Move grid-item-alignment tests to WPT folder
https://bugs.webkit.org/show_bug.cgi?id=206831

Patch by Rossana Monteriso <rmonteriso@igalia.com> on 2020-01-30
Reviewed by Javier Fernandez.

LayoutTests/imported/w3c:

Add grid-item-alignment tests, checked and adapted, to WPT.
Add .thirdRowFirstColumn class to grid.css support file and update all tests using this class by removing the duplicated class
from their <style> section.
Imported to WPT with this PR: https://github.com/web-platform-tests/wpt/pull/21440

  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-justify-overflow.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-expected.txt: Added.
  • web-platform-tests/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-vertical-lr-expected.txt: Added.
  • web-platform-tests/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-vertical-rl-expected.txt: Added.
  • web-platform-tests/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-vertical-lr.html: Added.
  • web-platform-tests/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-vertical-rl.html: Added.
  • web-platform-tests/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows.html: Added.
  • web-platform-tests/css/support/grid.css:

(.thirdRowFirstColumn):

LayoutTests:

Remove from css-grid-layout folder some grid-item-alignment tests, that are being replaced by adapted tests in the corresponding WPT test folder.

  • fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows-expected.txt: Removed.
  • fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows-vertical-lr-expected.txt: Removed.
  • fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows-vertical-lr.html: Removed.
  • fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows-vertical-rl-expected.txt: Removed.
  • fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows-vertical-rl.html: Removed.
  • fast/css-grid-layout/grid-item-alignment-with-orthogonal-flows.html: Removed.
Note: See TracTimeline for information about the timeline view.