Timeline



Feb 9, 2020:

9:49 PM Changeset in webkit [256110] by basuke.suzuki@sony.com
  • 2 edits in trunk/Source/WebCore

Replace redundant functions with variadic template function.
https://bugs.webkit.org/show_bug.cgi?id=207413

Reviewed by Darin Adler.

No new tests. Covered by existing tests.

  • loader/TextResourceDecoder.cpp:

(WebCore::bytesEqual):

8:47 PM Changeset in webkit [256109] by commit-queue@webkit.org
  • 9 edits in trunk

[GTK][WPE] Expose allowTopNavigationToDataURL
https://bugs.webkit.org/show_bug.cgi?id=207384

Patch by Lauro Moura <Lauro Moura> on 2020-02-09
Reviewed by Adrian Perez de Castro.

Source/WebKit:

This patch exposes the new property "allow-top-navigation-to-data-urls"
from r255961 to the glib-based APIs.

  • UIProcess/API/glib/WebKitSettings.cpp:

(webKitSettingsSetProperty): Set new property.
(webKitSettingsGetProperty): Get new property.
(webkit_settings_class_init): Register new property.
(webkit_settings_get_allow_top_navigation_to_data_urls): Added.
(webkit_settings_set_allow_top_navigation_to_data_urls): Added.

  • UIProcess/API/gtk/WebKitSettings.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/wpe/WebKitSettings.h:
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:

Tools:

Updates with new "allow-top-navigation-to-data-urls" property.

  • TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:

(testWebViewAllowModalDialogs): This test requires this property to be
set.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:

(testWebKitSettings): Added tests for getter/setter.

6:04 PM Changeset in webkit [256108] by Keith Rollin
  • 20 edits in trunk/Source

Re-enable LTO for ARM builds
https://bugs.webkit.org/show_bug.cgi?id=207402
<rdar://problem/49190767>

Reviewed by Sam Weinig.

Bug 190758 re-enabled LTO for Production builds for x86-family CPUs.
Enabling it for ARM was left out due to a compiler issue. That issue
has been fixed, and so now we can re-enable LTO for ARM.

Source/bmalloc:

  • Configurations/Base.xcconfig:

Source/JavaScriptCore:

  • Configurations/Base.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/Base.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/Base.xcconfig:

Source/WebCore:

No new tests -- no new or changed functionality.

  • Configurations/Base.xcconfig:

Source/WebCore/PAL:

  • Configurations/Base.xcconfig:

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:

Source/WebKit:

  • Configurations/Base.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:

Source/WTF:

  • Configurations/Base.xcconfig:
5:51 PM Changeset in webkit [256107] by Antti Koivisto
  • 7 edits in trunk/Source/WebCore

[LFC][Integration] Support intruding floats
https://bugs.webkit.org/show_bug.cgi?id=207099

Reviewed by Zalan Bujtas.

Add support for for floats placed by the legacy render tree layout intruding to IFC flow.

This was the last frequently used feature supported by the simple line layout but not
the integrated LFC (pagination is the final missing piece).

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::remove): Deleted.

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

(WebCore::Layout::FloatingState::FloatItem::FloatItem):
(WebCore::Layout::FloatingState::FloatingState):
(WebCore::Layout::FloatingState::remove): Deleted.

Delete some unused functions.

  • layout/floats/FloatingState.h:

(WebCore::Layout::FloatingState::FloatItem::isLeftPositioned const):
(WebCore::Layout::FloatingState::clear):
(WebCore::Layout::FloatingState::FloatItem::operator== const): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::canUseFor):

Allow floats.

(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::prepareLayoutState):
(WebCore::LayoutIntegration::LineLayout::prepareFloatingState):

Translate floats from render tree to IFC float structures.

  • layout/integration/LayoutIntegrationLineLayout.h:
5:34 PM Changeset in webkit [256106] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][BFC] Move updatePositiveNegativeMarginValues out of MarginCollapse class
https://bugs.webkit.org/show_bug.cgi?id=207445
<rdar://problem/59297879>

Reviewed by Antti Koivisto.

MarginCollapse::updatePositiveNegativeMarginValues is just a static helper.
Let's split this function so that it can be just a regular member function (move the state updating to the BlockFormattingContext caller).

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):

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

(WebCore::Layout::BlockFormattingContext::MarginCollapse::resolvedPositiveNegativeMarginValues):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updatePositiveNegativeMarginValues): Deleted.

2:42 PM Changeset in webkit [256105] by wenson_hsieh@apple.com
  • 2 edits in trunk/Source/WebKit

Fix the watchOS build after <rdar://problem/56134081>
https://bugs.webkit.org/show_bug.cgi?id=207443
<rdar://problem/59295173>

Reviewed by Maciej Stachowiak.

Use the version of the SPI that's guaranteed to be available across all platforms.

  • UIProcess/ios/WKContentViewInteraction.mm:

(gestureRecognizerModifierFlags):

1:36 PM Changeset in webkit [256104] by Kate Cheney
  • 73 edits in trunk

[ Mac wk2 ] http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=207271
<rdar://problem/59190346>

Reviewed by Maciej Stachowiak.

Source/WebKit:

This patch adds a check to make sure a test is expecting a statistics
processing call before proceeding. Otherwise, this can cause
flakiness in ITP tests if data is removed/changed during the test.

  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:

(WebKit::ResourceLoadStatisticsStore::processStatisticsAndDataRecords):

LayoutTests:

This patch updates all ITP tests to follow the pattern
setEnableFeature(true) at test setup and setEnableFeature(false) when
finished. This enables/disables both ITP and the isRunningTest
parameter so tests don't have to make two calls. It also ensures that
each test which relies on statistics processing notifies the testRunner
so it knows to wait for a callback, and deletes unecessary calls
to setStatisticsNotifyPagesWhenDataRecordsWereScanned which is called
in installStatisticsDidScanDataRecordsCallback.

This will help limit flakiness by processing statistics only for ITP
tests which require it for their purpose.

  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-database.html:
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html:
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-database.html:
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html:
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-database.html:
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-database.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-database.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-to-prevalent-database.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-to-prevalent.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-database.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-database.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-to-prevalent-database.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-to-prevalent.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-unique-redirects-to-database.html:
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-unique-redirects-to.html:
  • http/tests/resourceLoadStatistics/classify-as-very-prevalent-based-on-mixed-statistics-database.html:
  • http/tests/resourceLoadStatistics/classify-as-very-prevalent-based-on-mixed-statistics.html:
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-database.html:
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour-database.html:
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour.html:
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store.html:
  • http/tests/resourceLoadStatistics/non-prevalent-resource-with-user-interaction-database.html:
  • http/tests/resourceLoadStatistics/non-prevalent-resource-with-user-interaction.html:
  • http/tests/resourceLoadStatistics/non-prevalent-resource-without-user-interaction-database.html:
  • http/tests/resourceLoadStatistics/non-prevalent-resource-without-user-interaction.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-handled-keydown-database.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-handled-keydown.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-unhandled-keydown-database.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-unhandled-keydown.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-database.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout-database.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-without-user-interaction-database.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-without-user-interaction.html:
  • http/tests/resourceLoadStatistics/prune-statistics-database.html:
  • http/tests/resourceLoadStatistics/prune-statistics.html:
  • http/tests/resourceLoadStatistics/resources/util.js:

(setEnableFeature):

  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html:
  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-ip-to-localhost-to-ip.html:
  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html:
  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-localhost-to-ip-to-localhost.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html:
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost.html:
  • http/tests/resourceLoadStatistics/telemetry-generation-advanced-functionality-database.html:
  • http/tests/resourceLoadStatistics/telemetry-generation-basic-functionality-database.html:
  • http/tests/resourceLoadStatistics/telemetry-generation.html:
  • http/tests/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame-database.html:
  • http/tests/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame.html:
12:47 PM Changeset in webkit [256103] by weinig@apple.com
  • 15 edits in trunk

Move JavaScriptCore related feature defines from FeatureDefines.xcconfig to PlatformEnableCocoa.h
https://bugs.webkit.org/show_bug.cgi?id=207436

Reviewed by Tim Horton.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Remove ENABLE_FAST_JIT_PERMISSIONS and ENABLE_FTL_JIT.

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Remove ENABLE_FAST_JIT_PERMISSIONS and ENABLE_FTL_JIT.

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Remove ENABLE_FAST_JIT_PERMISSIONS and ENABLE_FTL_JIT.

Source/WebKit:

  • Configurations/FeatureDefines.xcconfig:

Remove ENABLE_FAST_JIT_PERMISSIONS and ENABLE_FTL_JIT.

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

Remove ENABLE_FAST_JIT_PERMISSIONS and ENABLE_FTL_JIT.

Source/WTF:

  • wtf/PlatformEnable.h:

Add default values for ENABLE_FAST_JIT_PERMISSIONS and ENABLE_SEPARATED_WX_HEAP.

  • wtf/PlatformEnableCocoa.h:

Added ENABLE_FAST_JIT_PERMISSIONS (from FeatureDefines.xcconfig), ENABLE_SEPARATED_WX_HEAP
(from PlatformEnable.h) and ENABLE_FTL_JIT (from both FeatureDefines.xcconfig and PlatformEnable.h).

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

Remove ENABLE_FAST_JIT_PERMISSIONS and ENABLE_FTL_JIT.

12:24 PM WebKitGTK/2.28.x edited by Adrian Perez de Castro
(diff)
12:22 PM WebKitGTK/2.28.x edited by Adrian Perez de Castro
(diff)
9:57 AM Changeset in webkit [256102] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Optimize Style::determineChange()
https://bugs.webkit.org/show_bug.cgi?id=207438

Reviewed by Antti Koivisto.

Style::determineChange() called RenderStyle::operator!=() before the testing some other
sets of properties for inequality.

It's faster to call inheritedEqual() etc before the full style compare. Also optimize
comparing alignItems() and justifyItems() by adding a helper function that first tests
for equality of the m_rareNonInheritedData pointer. These (added in r213480) return Inherit
because align-items and justify-items affect child layout.

This is a ~4% progression on some MotionMark subtests. Time under TreeResolver::createAnimatedElementUpdate()
drops from 2.4% to 0.9%.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::descendantAffectingNonInheritedPropertiesEqual const):

  • rendering/style/RenderStyle.h:
  • style/StyleChange.cpp:

(WebCore::Style::determineChange):

9:46 AM Changeset in webkit [256101] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC] FloatingContext::constraints should take a vertical range instead of just vertical position.
https://bugs.webkit.org/show_bug.cgi?id=207440
<rdar://problem/59295022>

Reviewed by Antti Koivisto.

In an IFC, this covers the entire line when searching for intrusive float to shrink the available horizontal space.
(This fix is limited to content with fixed line height)

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::constraints const):

  • layout/floats/FloatingContext.h:
  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::constraintsForLine):

Feb 8, 2020:

8:12 PM Changeset in webkit [256100] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC][BFC] Replace "estimated" term with "precomputed"
https://bugs.webkit.org/show_bug.cgi?id=207433
<rdar://problem/59288794>

Reviewed by Antti Koivisto.

The term "pre-computed" describes better what this value is.

  • layout/MarginTypes.h:

(WebCore::Layout::EstimatedMarginBefore::usedValue const): Deleted.

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPosition):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForAncestors):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForFormattingRoot):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::setPrecomputedMarginBefore):
(WebCore::Layout::BlockFormattingContext::hasPrecomputedMarginBefore const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPosition): Deleted.
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForAncestors): Deleted.
(WebCore::Layout::BlockFormattingContext::setEstimatedMarginBefore): Deleted.
(WebCore::Layout::BlockFormattingContext::hasEstimatedMarginBefore const): Deleted.

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

(WebCore::Layout::BlockFormattingContext::MarginCollapse::hasClearance const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::updateMarginAfterForPreviousSibling):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::precomputedMarginBefore):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginBefore): Deleted.

  • layout/displaytree/DisplayBox.cpp:

(WebCore::Display::Box::Box):

  • layout/displaytree/DisplayBox.h:

(WebCore::Display::Box::setHasPrecomputedMarginBefore):
(WebCore::Display::Box::invalidatePrecomputedMarginBefore):
(WebCore::Display::Box::top const):
(WebCore::Display::Box::topLeft const):
(WebCore::Display::Box::setVerticalMargin):
(WebCore::Display::Box::setHasEstimatedMarginBefore): Deleted.
(WebCore::Display::Box::invalidateEstimatedMarginBefore): Deleted.

7:45 PM Changeset in webkit [256099] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][BFC] Pre-compute vertical position only when we really need it.
https://bugs.webkit.org/show_bug.cgi?id=207432
<rdar://problem/59288539>

Reviewed by Antti Koivisto.

Instead of pre-computing the vertical position at computeStaticVerticalPosition, let's compute it when

  1. we are about to layout a new non-float-avoider/float clear FC (e.g. so that intrusive floats can shrink the lines inside IFCs)
  2. we are about to compute the non-static vertical position of a float avoider block level box.
  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):
(WebCore::Layout::BlockFormattingContext::computeStaticVerticalPosition):
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForAncestors):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForFormattingRoot):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats):
(WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear):
(WebCore::Layout::BlockFormattingContext::computeStaticPosition): Deleted.
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFormattingRoot): Deleted.
(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFloatClear): Deleted.
(WebCore::Layout::BlockFormattingContext::hasPrecomputedMarginBefore const): Deleted.
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition): Deleted.

  • layout/blockformatting/BlockFormattingContext.h:
6:51 PM Changeset in webkit [256098] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][BFC] Remove establishesBlockFormattingContextOnly and establishesInlineFormattingContextOnly
https://bugs.webkit.org/show_bug.cgi?id=207431
<rdar://problem/59288366>

Reviewed by Antti Koivisto.

The current caller of establishesInlineFormattingContextOnly is actually interested in whether the box is float avoider
(and the debug-only caller of establishesBlockFormattingContextOnly should instead check if the box also establishes an IFC).

  • layout/LayoutContext.cpp:

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

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeEstimatedVerticalPositionForFormattingRoot):

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::establishesInlineFormattingContextOnly const): Deleted.
(WebCore::Layout::Box::establishesBlockFormattingContextOnly const): Deleted.

  • layout/layouttree/LayoutBox.h:
6:01 PM Changeset in webkit [256097] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][BFC] Adjust Box::isFloatAvoider() for Inline and Independent FCs.
https://bugs.webkit.org/show_bug.cgi?id=207430
<rdar://problem/59288236>

Reviewed by Antti Koivisto.

A block container box that establishes both BFC and IFC is not a float avoider (add support for independent formatting context too).

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isFloatAvoider const):

5:29 PM Changeset in webkit [256096] by weinig@apple.com
  • 2 edits in trunk/Source/WTF

Migrate definition of USE_PLATFORM_REGISTERS_WITH_PROFILE to PlatformUse.h
https://bugs.webkit.org/show_bug.cgi?id=207428

Reviewed by Tim Horton.

  • wtf/PlatformUse.h:

Move definition of USE_PLATFORM_REGISTERS_WITH_PROFILE from AdditionalFeatureDefines.h, where
it did not belong.

5:11 PM Changeset in webkit [256095] by Simon Fraser
  • 8 edits
    8 adds in trunk

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

Reviewed by Sam Weinig.
Source/WebCore:

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

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

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

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

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

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

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::computeExtentOfTransformAnimation const):

  • page/animation/KeyframeAnimation.cpp:

(WebCore::KeyframeAnimation::computeExtentOfTransformAnimation const):

LayoutTests:

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

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

  • compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • compositing/backing/backing-store-attachment-animating-outside-viewport.html: Added.
  • compositing/layer-creation/translate-animation-overlap-expected.txt:
  • compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport.html: Added.
  • legacy-animation-engine/compositing/layer-creation/translate-animation-overlap-expected.txt:
  • legacy-animation-engine/compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • platform/ios-wk2/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
  • platform/ios-wk2/legacy-animation-engine/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt: Added.
1:54 PM Changeset in webkit [256094] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][BFC] Box::isFloatAvoider should not check for isFloatingPositioned()
https://bugs.webkit.org/show_bug.cgi?id=207429
<rdar://problem/59288204>

Reviewed by Antti Koivisto.

Box::isFloatAvoider() already checks for establishesBlockFormattingContext() (and floats do establish BFCs).

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isFloatAvoider const):

1:50 PM Changeset in webkit [256093] by ysuzuki@apple.com
  • 4 edits in trunk

[WTF] Try using 75% load factor for HashTable
https://bugs.webkit.org/show_bug.cgi?id=207183

Reviewed by Mark Lam.

Source/WTF:

We know that hash-table is one of the most memory consuming part in WebKit.
By analyzing many production hash-table implementations[1], I found that many
of them are using 75% load-factor while our one is 50%.

This patch changes the load-factor from 50% to 75%. But we pick 75% only for
small tables which capacity is <= 1024 based on collected data by micro-benchmarking.
The collected data is telling that longer probe-length affects on performance if table
size gets larger.

[1]: LLVM DenseMap, Abseil's, rust's, and so on.

  • wtf/HashTable.h:

(WTF::HashTableCapacityForSize::shouldExpand):
(WTF::HashTableCapacityForSize::capacityForSize):
(WTF::HashTable::shouldExpand const):
(WTF::KeyTraits>::computeBestTableSize):

Tools:

  • TestWebKitAPI/Tests/WTF/HashSet.cpp:

(TestWebKitAPI::testInitialCapacity):

12:36 PM Changeset in webkit [256092] by wenson_hsieh@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r256072): ScrollViewScrollabilityTests.ScrollableWithOverflowHiddenAndInputView fails
https://bugs.webkit.org/show_bug.cgi?id=207425
Followup to <rdar://problem/56960774>

Reviewed by Tim Horton.

The failing test ScrollViewScrollabilityTests.ScrollableWithOverflowHiddenAndInputView relies on -[WKWebView
_zoomToFocusRect:...:] to modify the zoom scale of WKScrollView in order for the next layer tree transaction to
have a zoom scale not equal to the initial scale, which in turn ensures that we make the UIScrollView scrollable
after the next remote layer tree update.

The change in r256072 caused us to bail early in -_zoomToFocusRect: and -_zoomToPoint: in the case where the
scroll view is not scrollable (i.e. the page has overflow: hidden); this means that if all the following
conditions are met, we now avoid zooming into focused elements, whereas we would've zoomed before the change:

  1. The user is focusing an element on an iPhone.
  2. The document body has overflow: hidden;, or the WebKit client has called -setScrollEnabled:NO.
  3. Either an SPI client has vended an empty input view and input accessory view, or the focused element has

inputmode="none".

To fix the test and restore zooming behavior, we partially revert the change in r256072, such that we no longer
bail from WKWebView's zooming codepaths if the scrollEnabled property is NO.

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _zoomToPoint:atScale:animated:]):
(-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):

10:29 AM Changeset in webkit [256091] by weinig@apple.com
  • 26 edits in trunk

Move trivial definitions from FeatureDefines.xcconfig to PlatformEnableCocoa.h
https://bugs.webkit.org/show_bug.cgi?id=207155

Reviewed by Tim Horton.
Source/JavaScriptCore:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make has been updated to generate the list
of ENABLE_* features by directly from preprocessing Platform.h, rather than
just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources.make:

Source/WebCore:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make and generate-unified-sources.sh have been
updated to generate the list of ENABLE_* features by directly from preprocessing
Platform.h, rather than just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • Configurations/WebCore.xcconfig:
  • DerivedSources.make:
  • Scripts/generate-unified-sources.sh:

Source/WebCore/PAL:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

  • Configurations/FeatureDefines.xcconfig:
  • Configurations/PAL.xcconfig:

Remove quotes as they should not be necessary (other uses of BUILT_PRODUCTS_DIR
are not quoted) and complicate scripts that want to use HEADER_SEARCH_PATHS.

Source/WebKit:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make and generate-unified-sources.sh have been
updated to generate the list of ENABLE_* features by directly from preprocessing
Platform.h, rather than just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources.make:
  • Scripts/generate-unified-sources.sh:

Source/WebKitLegacy:

To support the move, generate-unified-sources.sh has been updated to generate
the list of ENABLE_* features by directly from preprocessing Platform.h, rather
than just getting the partial list from the xcconfig file.

  • scripts/generate-unified-sources.sh:

Source/WebKitLegacy/mac:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make has been updated to generate the list
of ENABLE_* features by directly from preprocessing Platform.h, rather than
just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • MigrateHeaders.make:

Source/WTF:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

ENABLE_INSPECTOR_TELEMETRY, ENABLE_TEXT_AUTOSIZING, ENABLE_WEBGL, ENABLE_METER_ELEMENT,
ENABLE_VIDEO_TRACK, ENABLE_WEB_AUDIO and ENABLE_CURSOR_VISIBILITY are all now always
set to 1 for Cocoa (if not defined already), as this was already the case via the xcconfig.

  • wtf/PlatformEnable.h:
  • wtf/PlatformEnableCocoa.h:

Tools:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
7:48 AM Changeset in webkit [256090] by wilander@apple.com
  • 3 edits in trunk/Source/WebKit

Resource Load Statistics: Hold off non-cookie website data deletion until an hour after user interaction
https://bugs.webkit.org/show_bug.cgi?id=207418
<rdar://problem/58550164>

Reviewed by Chris Dumez.

This change makes sure there is at least a one-hour or older timestamp
for user interaction for some website before activating deletion of
non-cookie website data for sites the user has not interacted with.
This ensures that a fresh start such as after a reset or on a new
device doesn't interpret the lack of data as lack of user interaction.

No new tests. Existing tests make sure we don't regress the functionality.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::registrableDomainsToRemoveWebsiteDataFor):

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToRemoveWebsiteDataFor):

6:10 AM Changeset in webkit [256089] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Crash in RenderTreeBuilder::Table::findOrCreateParentForChild with multicol spanner
https://bugs.webkit.org/show_bug.cgi?id=206917

Patch by Doug Kelly <dougk@apple.com> on 2020-02-08
Reviewed by Zalan Bujtas.

Source/WebCore:

During render tree construction, multi-column spanners are moved from their original tree position to
next to the enclosing anonymous fragmented flow and we mark their previous location with a spanner placeholder.
If we try to add a new renderer right before the spanner (beforeChild is the spanner renderer), we need to use
the spanner's original position as the insertion point.
This patch addresses the mismatching position issue by adjusting the spanner beforeChild right before
we start searching for the final insertion point.

Test: fast/multicol/spanner-crash-when-finding-table-parent.html

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::attach):

  • rendering/updating/RenderTreeBuilderTable.cpp:

(WebCore::RenderTreeBuilder::Table::findOrCreateParentForChild):

LayoutTests:

  • fast/multicol/spanner-crash-when-finding-table-parent-expected.txt: Added.
  • fast/multicol/spanner-crash-when-finding-table-parent.html: Added.
2:35 AM Changeset in webkit [256088] by basuke.suzuki@sony.com
  • 5 edits
    2 deletes in trunk/Source/bmalloc

[bmalloc] VMHeap can be merge into Heap
https://bugs.webkit.org/show_bug.cgi?id=207410

Reviewed by Yusuke Suzuki.

VMHeap has only one member function in it and Heap is the only client of that.
No member variable is defined. It does nothing special with its context as a class.
It is safe to merge the function into Heap.

  • CMakeLists.txt:
  • bmalloc.xcodeproj/project.pbxproj:
  • bmalloc/Heap.cpp:

(bmalloc::Heap::allocateLarge):
(bmalloc::Heap::tryAllocateLargeChunk): Moved from VMHeap.

  • bmalloc/Heap.h:
  • bmalloc/VMHeap.cpp: Removed.
  • bmalloc/VMHeap.h: Removed.

Feb 7, 2020:

10:08 PM Changeset in webkit [256087] by rmorisset@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

Throw OutOfMemory exception instead of crashing if DirectArguments/ScopedArguments can't be created
https://bugs.webkit.org/show_bug.cgi?id=207423

Reviewed by Mark Lam.

AllocationFailureMode::Assert is problematic because fuzzers keep producing spurious error reports when they generate code that tries allocating infinite amount of memory.
The right approach is to use AllocationFailureMode::ReturnNull, and throw a JS exception upon receiving null.

In this patch I fixed two functions that were using AllocationFailureMode::Assert:

DirectArguments::DirectArguments::overrideThings
GenericArguments<Type>::initModifiedArgumentsDescriptor

No test added, because the only test we have is highly non-deterministic/flaky (only triggers about 10 to 20% of the time even before the fix).

  • runtime/DirectArguments.h:
  • runtime/GenericArguments.h:
  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::deletePropertyByIndex):
(JSC::GenericArguments<Type>::defineOwnProperty):
(JSC::GenericArguments<Type>::initModifiedArgumentsDescriptor):
(JSC::GenericArguments<Type>::initModifiedArgumentsDescriptorIfNecessary):
(JSC::GenericArguments<Type>::setModifiedArgumentDescriptor):

  • runtime/ScopedArguments.h:
8:21 PM Changeset in webkit [256086] by jonlee@apple.com
  • 75 edits
    10 copies
    13 adds
    1 delete in trunk/Source

Web Inspector: Revert slim toolbar
https://bugs.webkit.org/show_bug.cgi?id=207422

Reviewed by Timothy Hatcher.

The slim toolbar needs a little more work before landing.

This patch reverts r255547, r255557, r255890, r255892, r255893, r255901, r255980.

Source/WebCore:

  • en.lproj/Localizable.strings:
  • inspector/InspectorFrontendClient.h:
  • inspector/InspectorFrontendClientLocal.cpp:
  • inspector/InspectorFrontendClientLocal.h:
  • inspector/InspectorFrontendHost.cpp:
  • inspector/InspectorFrontendHost.h:
  • inspector/InspectorFrontendHost.idl:

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Main.js:
  • UserInterface/Base/Setting.js:
  • UserInterface/Controllers/ConsoleManager.js:
  • UserInterface/Debug/Bootstrap.js:
  • UserInterface/Images/NewTab.svg: Added.
  • UserInterface/Images/NewTabPlus.svg: Added.
  • UserInterface/Images/Origin.svg:
  • UserInterface/Images/SearchResults.svg: Added.
  • UserInterface/Images/SourcesPaused.svg: Removed.
  • UserInterface/Main.html:
  • UserInterface/Models/DebuggerDashboard.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css.
  • UserInterface/Models/DefaultDashboard.js: Added.
  • UserInterface/Views/ActivateButtonToolbarItem.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css.
  • UserInterface/Views/AuditTabContentView.js:
  • UserInterface/Views/ButtonNavigationItem.css:
  • UserInterface/Views/ButtonNavigationItem.js:
  • UserInterface/Views/ButtonToolbarItem.css: Copied from Source/WebInspectorUI/UserInterface/Views/DividerNavigationItem.css.
  • UserInterface/Views/ButtonToolbarItem.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css.
  • UserInterface/Views/ConsoleTabContentView.js:
  • UserInterface/Views/ContentBrowserTabContentView.js:
  • UserInterface/Views/ControlToolbarItem.css: Copied from Source/WebInspectorUI/UserInterface/Views/DividerNavigationItem.css.
  • UserInterface/Views/ControlToolbarItem.js: Copied from Source/WebInspectorUI/UserInterface/Views/DividerNavigationItem.css.
  • UserInterface/Views/DOMTreeContentView.css:
  • UserInterface/Views/DashboardContainerView.css: Added.
  • UserInterface/Views/DashboardContainerView.js: Added.
  • UserInterface/Views/DashboardView.js: Copied from Source/WebInspectorUI/UserInterface/Views/PinnedTabBarItem.js.
  • UserInterface/Views/DebuggerDashboardView.css: Added.
  • UserInterface/Views/DebuggerDashboardView.js: Added.
  • UserInterface/Views/DefaultDashboardView.css: Added.
  • UserInterface/Views/DefaultDashboardView.js: Added.
  • UserInterface/Views/DividerNavigationItem.css:
  • UserInterface/Views/ElementsTabContentView.js:
  • UserInterface/Views/FlexibleSpaceNavigationItem.css:
  • UserInterface/Views/GeneralTabBarItem.js:
  • UserInterface/Views/GraphicsTabContentView.js:
  • UserInterface/Views/GroupNavigationItem.js:
  • UserInterface/Views/LayersTabContentView.js:
  • UserInterface/Views/LegacyTabBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/TabBar.js.
  • UserInterface/Views/Main.css:
  • UserInterface/Views/NavigationBar.js:
  • UserInterface/Views/NetworkDetailView.css:
  • UserInterface/Views/NetworkTabContentView.js:
  • UserInterface/Views/NetworkTableContentView.css:
  • UserInterface/Views/NetworkTableContentView.js:
  • UserInterface/Views/NewTabContentView.css: Copied from Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineOverviewGraph.css.
  • UserInterface/Views/NewTabContentView.js: Added.
  • UserInterface/Views/PinnedTabBarItem.js:
  • UserInterface/Views/QuickConsole.js:
  • UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
  • UserInterface/Views/SearchTabContentView.js:
  • UserInterface/Views/SettingsTabContentView.js:
  • UserInterface/Views/Sidebar.js:
  • UserInterface/Views/SizesToFitNavigationBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css.
  • UserInterface/Views/SourcesTabContentView.js:
  • UserInterface/Views/StorageTabContentView.js:
  • UserInterface/Views/TabBar.css:
  • UserInterface/Views/TabBar.js:
  • UserInterface/Views/TabBarItem.js:
  • UserInterface/Views/TabBrowser.js:
  • UserInterface/Views/TabContentView.js:
  • UserInterface/Views/TimelineOverview.css:
  • UserInterface/Views/TimelineRecordFrame.css:
  • UserInterface/Views/TimelineRuler.css:
  • UserInterface/Views/TimelineTabContentView.js:
  • UserInterface/Views/Toolbar.css: Added.
  • UserInterface/Views/Toolbar.js: Added.
  • UserInterface/Views/Variables.css:

Source/WebKit:

  • UIProcess/Inspector/RemoteWebInspectorProxy.cpp:
  • UIProcess/Inspector/RemoteWebInspectorProxy.h:
  • UIProcess/Inspector/RemoteWebInspectorProxy.messages.in:
  • UIProcess/Inspector/WebInspectorProxy.cpp:
  • UIProcess/Inspector/WebInspectorProxy.h:
  • UIProcess/Inspector/WebInspectorProxy.messages.in:
  • UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp:
  • UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp:
  • UIProcess/Inspector/mac/RemoteWebInspectorProxyMac.mm:
  • UIProcess/Inspector/mac/WebInspectorProxyMac.mm:
  • UIProcess/Inspector/win/RemoteWebInspectorProxyWin.cpp:
  • UIProcess/Inspector/win/WebInspectorProxyWin.cpp:
  • WebProcess/Inspector/RemoteWebInspectorUI.cpp:
  • WebProcess/Inspector/RemoteWebInspectorUI.h:
  • WebProcess/Inspector/WebInspectorUI.cpp:
  • WebProcess/Inspector/WebInspectorUI.h:

Source/WebKitLegacy/ios:

  • WebCoreSupport/WebInspectorClientIOS.mm:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebInspectorClient.h:
  • WebCoreSupport/WebInspectorClient.mm:
5:03 PM Changeset in webkit [256085] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

REGRESSION: ASSERTION FAILED: resetResult == 0 on regression tests in ITP code, resetting SQLite statement
https://bugs.webkit.org/show_bug.cgi?id=207269
<rdar://problem/59188891>

Reviewed by Brady Eidson.

Adds logging if ITP telemetry calculations fail to step and makes sure
not to reset the statement in this case as it will result in an error.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
4:52 PM Changeset in webkit [256084] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

[IPC Hardening] Protect against bad parameters in WebProcessProxy::getPluginProcessConnection()
https://bugs.webkit.org/show_bug.cgi?id=207416
<rdar://problem/58617244>

Reviewed by David Kilzer.

  • UIProcess/Plugins/PluginProcessManager.cpp:

(WebKit::PluginProcessManager::getPluginProcessConnection):

  • UIProcess/Plugins/PluginProcessManager.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::getPluginProcessConnection):

4:51 PM Changeset in webkit [256083] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC Hardening] Convert some debug assertions into MESSAGE_CHECKs in WebPaymentCoordinatorProxy
https://bugs.webkit.org/show_bug.cgi?id=207414
<rdar://problem/58507177>

Reviewed by Andy Estes.

  • Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:

(WebKit::WebPaymentCoordinatorProxy::canMakePaymentsWithActiveCard):
(WebKit::WebPaymentCoordinatorProxy::openPaymentSetup):
(WebKit::WebPaymentCoordinatorProxy::showPaymentUI):
(WebKit::WebPaymentCoordinatorProxy::completeMerchantValidation):
(WebKit::WebPaymentCoordinatorProxy::completeShippingMethodSelection):
(WebKit::WebPaymentCoordinatorProxy::completeShippingContactSelection):
(WebKit::WebPaymentCoordinatorProxy::completePaymentMethodSelection):

4:47 PM Changeset in webkit [256082] by Kocsen Chung
  • 1 copy in tags/Safari-610.1.1.4.2

Tag Safari-610.1.1.4.2.

4:43 PM Changeset in webkit [256081] by achristensen@apple.com
  • 4 edits in trunk/Source

Harden HashTable IPC decoders
https://bugs.webkit.org/show_bug.cgi?id=207415

Reviewed by Chris Dumez.

Source/WebKit:

  • Platform/IPC/ArgumentCoders.h:

Source/WTF:

  • wtf/HashCountedSet.h:
4:43 PM Changeset in webkit [256080] by Kocsen Chung
  • 94 edits
    6 moves
    1 add
    30 deletes in branches/safari-610.1.1.4-branch

Reverts 256046, 256050, 256049, 256047, 256048 from rdar://problem/59264302. rdar://problem/59278423

4:39 PM Changeset in webkit [256079] by wenson_hsieh@apple.com
  • 3 edits in trunk/Tools

Several iOS API tests that call -makeKeyWindow assert after r255907
https://bugs.webkit.org/show_bug.cgi?id=207411

Reviewed by Tim Horton.

r255907 asserted in -makeKeyWindow that the shared UIApplication exists. While this was guaranteed for all call
sites of -makeKeyWindow from API tests, -makeKeyWindow may also be invoked from within UIKit code; in this case,
nothing guarantees that the application has been initialized, and we end up hitting this assertion. To fix this,
replace the assertion with logic to bootstrap the shared UIApplication (if it didn't already exist).

  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

(TestWebKitAPI::TEST):
(TestWebKitAPI::overrideBundleIdentifier): Deleted.

  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(overrideBundleIdentifier):
(setOverriddenApplicationKeyWindow):

4:33 PM Changeset in webkit [256078] by Kocsen Chung
  • 8 edits in branches/safari-610.1.1.4-branch/Source

Versioning.

4:21 PM Changeset in webkit [256077] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Nullptr crash in WebCore::FontFamilySpecificationCoreText::fontRanges
https://bugs.webkit.org/show_bug.cgi?id=207236
<rdar://problem/57214193>

Patch by Jack Lee <shihchieh_lee@apple.com> on 2020-02-07
Reviewed by Ryosuke Niwa.

Add a state variable in FontDescriptionKey for tracking hash entry deletion.

  • platform/graphics/FontCache.h:

(WebCore::FontDescriptionKey::FontDescriptionKey):
(WebCore::FontDescriptionKey::operator== const):
(WebCore::FontDescriptionKey::isHashTableDeletedValue const):

4:03 PM Changeset in webkit [256076] by commit-queue@webkit.org
  • 4 edits in trunk/Source/ThirdParty/ANGLE

Try adding glBindFramebuffer flush workaround to ANGLE as remedy for flaky WebGL tests
https://bugs.webkit.org/show_bug.cgi?id=206625

Patch by Kenneth Russell <kbr@chromium.org> on 2020-02-07
Reviewed by Dean Jackson.

  • include/platform/FeaturesGL.h:
  • src/libANGLE/renderer/gl/StateManagerGL.cpp:

(rx::StateManagerGL::bindFramebuffer):

  • src/libANGLE/renderer/gl/renderergl_utils.cpp:

(rx::nativegl_gl::InitializeFeatures):

3:39 PM Changeset in webkit [256075] by Chris Dumez
  • 34 edits in trunk/Source

[Hardening] Validate Geolocation access permission on UIProcess side
https://bugs.webkit.org/show_bug.cgi?id=207393
<rdar://problem/56816051>

Reviewed by Brent Fulgham.

Source/WebCore:

Validate Geolocation access permission on UIProcess side, instead of only relying solely on the WebProcess for this.

The workflow is as follows:

  • The Geolocation objects request for permission to access location data
  • The UIProcess shows a prompt
  • If the user accepts, the UIProcess sends an authorization token (a UUID string) to the Geolocation object.
  • When the Geolocation object later asks for location updates from the UIProcess, the UIProcess validates that this is a valid authorization token (one that it previously issued for this page)
  • When the Geolocation objects gets destroyed (or resets its permission), the authorization token gets revoked so that it is no longer valid.

No new tests, no Web-facing behavior change, merely hardening.

  • Modules/geolocation/Geolocation.cpp:

(WebCore::Geolocation::~Geolocation):
(WebCore::Geolocation::resumeTimerFired):
(WebCore::Geolocation::resetAllGeolocationPermission):
(WebCore::Geolocation::stop):
(WebCore::Geolocation::setIsAllowed):
(WebCore::Geolocation::revokeAuthorizationTokenIfNecessary):
(WebCore::Geolocation::resetIsAllowed):

  • Modules/geolocation/Geolocation.h:
  • Modules/geolocation/GeolocationClient.h:

(WebCore::GeolocationClient::revokeAuthorizationToken):

  • Modules/geolocation/GeolocationController.cpp:

(WebCore::GeolocationController::addObserver):
(WebCore::GeolocationController::revokeAuthorizationToken):
(WebCore::GeolocationController::activityStateDidChange):

  • Modules/geolocation/GeolocationController.h:
  • platform/mock/GeolocationClientMock.cpp:

(WebCore::GeolocationClientMock::permissionTimerFired):
(WebCore::GeolocationClientMock::startUpdating):

  • platform/mock/GeolocationClientMock.h:

Source/WebKit:

  • UIProcess/GeolocationPermissionRequestManagerProxy.cpp:

(WebKit::GeolocationPermissionRequestManagerProxy::didReceiveGeolocationPermissionDecision):
(WebKit::GeolocationPermissionRequestManagerProxy::isValidAuthorizationToken const):
(WebKit::GeolocationPermissionRequestManagerProxy::revokeAuthorizationToken):

  • UIProcess/GeolocationPermissionRequestManagerProxy.h:
  • UIProcess/WebGeolocationManagerProxy.cpp:

(WebKit::WebGeolocationManagerProxy::startUpdating):

  • UIProcess/WebGeolocationManagerProxy.h:
  • UIProcess/WebGeolocationManagerProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::geolocationPermissionRequestManager):

  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp:

(WebKit::GeolocationPermissionRequestManager::startRequestForGeolocation):
(WebKit::GeolocationPermissionRequestManager::revokeAuthorizationToken):
(WebKit::GeolocationPermissionRequestManager::didReceiveGeolocationPermissionDecision):

  • WebProcess/Geolocation/GeolocationPermissionRequestManager.h:
  • WebProcess/Geolocation/WebGeolocationManager.cpp:

(WebKit::WebGeolocationManager::registerWebPage):

  • WebProcess/Geolocation/WebGeolocationManager.h:
  • WebProcess/WebCoreSupport/WebGeolocationClient.cpp:

(WebKit::WebGeolocationClient::startUpdating):
(WebKit::WebGeolocationClient::revokeAuthorizationToken):

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

(WebKit::WebPage::didReceiveGeolocationPermissionDecision):

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

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebGeolocationClient.h:
  • WebCoreSupport/WebGeolocationClient.mm:

(WebGeolocationClient::startUpdating):
(WebGeolocationClient::requestPermission):
(-[WebGeolocationPolicyListener allow]):
(-[WebGeolocationPolicyListener deny]):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebGeolocationClient.cpp:

(WebGeolocationClient::startUpdating):

  • WebCoreSupport/WebGeolocationClient.h:
3:38 PM Changeset in webkit [256074] by Jonathan Bedard
  • 2 edits in trunk/Tools

TestWebKitAPI: Disable legacy ActionSheet tests on Catalyst
https://bugs.webkit.org/show_bug.cgi?id=207405

Reviewed by Wenson Hsieh.

  • TestWebKitAPI/Tests/ios/ActionSheetTests.mm:
3:30 PM Changeset in webkit [256073] by achristensen@apple.com
  • 22 edits in trunk

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

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

Source/WebCore:

Covered by an API test.

  • history/CachedFrame.cpp:

(WebCore::CachedFrame::setHasInsecureContent):

  • history/CachedFrame.h:

(WebCore::CachedFrame::usedLegacyTLS const):

  • loader/EmptyFrameLoaderClient.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::receivedFirstData):
(WebCore::FrameLoader::commitProvisionalLoad):
(WebCore::FrameLoader::dispatchDidCommitLoad):

  • loader/FrameLoader.h:
  • loader/FrameLoaderClient.h:

Source/WebKit:

  • Scripts/webkit/messages.py:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::hasInsecureContent):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
(WebKit::WebFrameLoaderClient::savePlatformDataToCachedFrame):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::dispatchDidCommitLoad):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::dispatchDidCommitLoad):

  • WebCoreSupport/WebFrameLoaderClient.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:

(TestWebKitAPI::TEST):

3:25 PM Changeset in webkit [256072] by wenson_hsieh@apple.com
  • 3 edits
    2 adds in trunk

[iOS] Double tapping shouldn't scroll the page when the body has overflow: hidden
https://bugs.webkit.org/show_bug.cgi?id=207390
<rdar://problem/56960774>

Reviewed by Tim Horton and Simon Fraser.

Source/WebKit:

Bail out of several codepaths that zoom and scroll WKScrollView as a result of smart magnification gestures
(e.g. one-finger double taps), in the case where scrolling has been disabled on WKScrollView. This may occur
if the page has overflow: hidden on the body or root, but may also happen due to a WebKit client disabling
scrolling via native API, such as webView.scrollView.scrollingEnabled = NO;.

Test: fast/scrolling/ios/double-tap-to-scroll-with-scrolling-disabled.html

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _zoomToPoint:atScale:animated:]):
(-[WKWebView _scrollToRect:origin:minimumScrollDistance:]):

Drive-by fix: change some falses to NOs, and trues to YESs.

(-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):

LayoutTests:

Add a new layout test to verify that double tapping an element doesn't cause the page to scroll if `overflow:
hidden` is applied to the body.

  • fast/scrolling/ios/double-tap-to-scroll-with-scrolling-disabled-expected.txt: Added.
  • fast/scrolling/ios/double-tap-to-scroll-with-scrolling-disabled.html: Added.
3:19 PM Changeset in webkit [256071] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore/PAL

[Apple Pay] Provide a redacted billing contact during payment method selection
https://bugs.webkit.org/show_bug.cgi?id=207169

Patch by Nikos Mouchtaris <nmouchtaris@apple.com> on 2020-02-07
Reviewed by Andy Estes.

Fix for build problem.

  • pal/spi/cocoa/PassKitSPI.h:
3:03 PM Changeset in webkit [256070] by Kocsen Chung
  • 1 copy in tags/Safari-610.1.1.4.1

Tag Safari-610.1.1.4.1.

3:01 PM Changeset in webkit [256069] by Kocsen Chung
  • 1 delete in tags/Safari-610.1.1.4.1

Delete tag.

3:01 PM Changeset in webkit [256068] by timothy@apple.com
  • 2 edits in trunk/Source/WebKit

Crash under WKBundleFrameForJavaScriptContext dereferencing a NULL WebCore::Frame.
https://bugs.webkit.org/show_bug.cgi?id=207407
rdar://problem/59206599

Reviewed by Tim Horton.

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::frameForContext): Add a null check for the coreFrame.

2:52 PM Changeset in webkit [256067] by Russell Epstein
  • 1 copy in tags/Safari-609.1.17

Tag Safari-609.1.17.

2:49 PM Changeset in webkit [256066] by Ryan Haddad
  • 26 edits in trunk

Unreviewed, rolling out r256051.

Broke internal builds.

Reverted changeset:

"Move trivial definitions from FeatureDefines.xcconfig to
PlatformEnableCocoa.h"
https://bugs.webkit.org/show_bug.cgi?id=207155
https://trac.webkit.org/changeset/256051

2:45 PM Changeset in webkit [256065] by Jonathan Bedard
  • 2 edits in trunk/Tools

iPad testers failing to launch processes
https://bugs.webkit.org/show_bug.cgi?id=207401
<rdar://problem/58184777>

Unreviewed infrastructure fix.

This is a speculative fix because I've had problems reproducing this error.
The only time I managed to reproduce the problem was immediately after killing the
SimulatorTrampoline and CoreSimulator.xpc processes.

  • BuildSlaveSupport/kill-old-processes:

(main): Only kill Simulator.app, not all associated simulator processes.

2:40 PM Changeset in webkit [256064] by Kocsen Chung
  • 8 edits in branches/safari-610.1.1.4-branch/Source

Versioning.

2:29 PM Changeset in webkit [256063] by stephan.szabo@sony.com
  • 2 edits in trunk/Source/WTF

[Win] Two FileSystem API tests fail
https://bugs.webkit.org/show_bug.cgi?id=207388

Reviewed by Don Olmstead.

  • wtf/win/FileSystemWin.cpp:

Make getFinalPathName return dos path rather than nt volume path.
Change createSymbolicLink return to match CreateSymbolicLinkW
Have directoryName strip trailing slashes.

2:16 PM Changeset in webkit [256062] by jiewen_tan@apple.com
  • 9 edits
    3 copies
    1 move
    4 adds in trunk

[WebAuthn] Report CTAP Client Pin Error to clients
https://bugs.webkit.org/show_bug.cgi?id=205837
<rdar://problem/58356872>

Reviewed by Brent Fulgham.

Source/WebKit:

Authenticators could return four different errors { kCtap2ErrPinInvalid, kCtap2ErrPinBlocked, kCtap2ErrPinAuthInvalid, kCtap2ErrPinAuthBlocked }
during 1) GetPinToken or 2) MakeCredential/GetAssertion with PinAuth.

All errors should be reported to the client so that appropriate UI can be displayed to users.
For kCtap2ErrPinAuthInvalid and kCtap2ErrPinInvalid, we will restart the whole Pin process to get
another Pin from the user.

Covered by API tests.

  • UIProcess/API/APIWebAuthenticationPanelClient.h:
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:

(WebKit::wkWebAuthenticationPanelUpdate):

  • UIProcess/WebAuthentication/WebAuthenticationFlags.h:
  • UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:

(WebKit::fido::toStatus):
(WebKit::fido::isPinError):
(WebKit::CtapAuthenticator::continueMakeCredentialAfterResponseReceived):
(WebKit::CtapAuthenticator::continueGetAssertionAfterResponseReceived):
(WebKit::CtapAuthenticator::continueRequestAfterGetPinToken):
(WebKit::CtapAuthenticator::tryRestartPin):

  • UIProcess/WebAuthentication/fido/CtapAuthenticator.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(-[TestWebAuthenticationPanelDelegate panel:updateWebAuthenticationPanel:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-hid-pin-auth-blocked-error.html: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-error.html.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-hid-pin-invalid-error-retry.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-auth-blocked-error.html: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-error.html.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-pin-auth-blocked-error.html: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-error.html.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-pin-auth-invalid-error-retry.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-pin-blocked-error.html: Renamed from Tools/TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-error.html.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-get-pin-token-pin-invalid-error-retry.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-hid-pin-invalid-error-retry.html: Added.
2:08 PM Changeset in webkit [256061] by Russell Epstein
  • 1 copy in tags/Safari-610.1.1.4.1

Tag Safari-610.1.1.4.1.

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

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

Reviewed by Jer Noble.

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

  • html/HTMLMediaElement.cpp:

(WebCore::convertEnumerationToString):
(WebCore::HTMLMediaElement::configureTextTrackDisplay):

  • html/HTMLMediaElementEnums.h:

(WTF::LogArgument<WebCore::HTMLMediaElementEnums::TextTrackVisibilityCheckType>::toString):

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlTextTrackContainerElement::MediaControlTextTrackContainerElement):
(WebCore::MediaControlTextTrackContainerElement::updateDisplay):
(WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentation):
(WebCore::MediaControlTextTrackContainerElement::clearTextTrackRepresentation):
(WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentationStyle):
(WebCore::MediaControlTextTrackContainerElement::layoutIfNecessary):
(WebCore::MediaControlTextTrackContainerElement::updateVideoDisplaySize):
(WebCore::MediaControlTextTrackContainerElement::updateSizes):
(WebCore::MediaControlTextTrackContainerElement::updateCueStyles):
(WebCore::MediaControlTextTrackContainerElement::logger const):
(WebCore::MediaControlTextTrackContainerElement::logIdentifier const):
(WebCore::MediaControlTextTrackContainerElement::updateTimerFired): Deleted.
(WebCore::MediaControlTextTrackContainerElement::updateStyleForTextTrackRepresentation): Deleted.

  • platform/graphics/TextTrackRepresentation.h:
  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation):
(WebCore::MediaPlayerPrivateAVFoundation::logChannel const):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenFrame):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createImageForTimeInRect):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateAudioTracks):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoTracks):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage):
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):

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

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::mediaPlayerLogger):

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

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::logChannel const):

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

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::logChannel const):

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

(WebCore::VideoFullscreenLayerManagerObjC::VideoFullscreenLayerManagerObjC):
(WebCore::VideoFullscreenLayerManagerObjC::setVideoLayer):
(WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenLayer):
(WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenFrame):
(WebCore::VideoFullscreenLayerManagerObjC::didDestroyVideoLayer):
(WebCore::VideoFullscreenLayerManagerObjC::syncTextTrackBounds):
(WebCore::VideoFullscreenLayerManagerObjC::setTextTrackRepresentation):
(WebCore::VideoFullscreenLayerManagerObjC::logChannel const):

  • platform/graphics/cocoa/TextTrackRepresentationCocoa.h:
  • platform/graphics/cocoa/TextTrackRepresentationCocoa.mm:

(-[WebCoreTextTrackRepresentationCocoaHelper observeValueForKeyPath:ofObject:change:context:]):
(TextTrackRepresentationCocoa::setHidden const):
(TextTrackRepresentationCocoa::boundsChanged):

  • rendering/RenderMediaControlElements.cpp:

(WebCore::RenderTextTrackContainerElement::layout):

2:00 PM Changeset in webkit [256059] by Jonathan Bedard
  • 2 edits in trunk/Tools

run-safari Doesn't work with the latest Xcode version and iOS
https://bugs.webkit.org/show_bug.cgi?id=207394

Reviewed by Ryosuke Niwa.

  • Scripts/webkitdirs.pm:

(iosSimulatorRuntime): Determine the runtime from valid runtimes.
(findOrCreateSimulatorForIOSDevice): iPhone 5 is unsupported, remove code.

1:50 PM Changeset in webkit [256058] by Russell Epstein
  • 1 edit in branches/safari-610.1.1.4-branch/Source/WebKit/Shared/AuxiliaryProcess.cpp

Unreviewed build fix. rdar://problem/59264259

1:45 PM Changeset in webkit [256057] by Jonathan Bedard
  • 2 edits in trunk/Source/WebKit

Handle deprecated APIs in WKImagePreviewViewController
https://bugs.webkit.org/show_bug.cgi?id=207398

Reviewed by Tim Horton.

No new tests, build fix.

  • UIProcess/WKImagePreviewViewController.mm:

(-[WKImagePreviewViewController previewActionItems]): Add deprecation macros.

1:43 PM Changeset in webkit [256056] by Devin Rousso
  • 1 edit
    3 adds in trunk/Source/WebInspectorUI

Web Inspector: Add another Protocol Version (iOS 13.4)
https://bugs.webkit.org/show_bug.cgi?id=207213
<rdar://problem/52846208>

Reviewed by Timothy Hatcher.

  • UserInterface/Protocol/Legacy/13.4/InspectorBackendCommands.js: Added.
  • Versions/Inspector-iOS-13.4.json: Added.
1:29 PM Changeset in webkit [256055] by Kate Cheney
  • 9 edits in trunk

Regression (r256011): http/tests/resourceLoadStatistics/aggregate-sorted-data-no-storage-access.html is consistently failing
https://bugs.webkit.org/show_bug.cgi?id=207382
<rdar://problem/59259844>

Source/WebKit:

Sort the resource load statistics dumping results so they consistently
print in the same order.

Reviewed by Yusuke Suzuki.

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::dumpResourceLoadStatistics):

LayoutTests:

Reviewed by Yusuke Suzuki.

Updated test expectations to reflect new sorting.

  • http/tests/resourceLoadStatistics/aggregate-sorted-data-no-storage-access-expected.txt:
  • http/tests/resourceLoadStatistics/count-third-party-script-import-in-worker-expected.txt:
  • http/tests/resourceLoadStatistics/count-third-party-script-loads-expected.txt:
  • http/tests/resourceLoadStatistics/log-delayed-client-side-redirects-expected.txt:
  • http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-expected.txt:
  • http/tests/storageAccess/aggregate-sorted-data-with-storage-access-expected.txt:
1:16 PM Changeset in webkit [256054] by dbates@webkit.org
  • 4 edits in trunk

Legacy WebKit: Have linkedOnOrAfter() respect the NSDefault WebKitLinkedOnOrAfterEverything and opt DumpRenderTree in
https://bugs.webkit.org/show_bug.cgi?id=207366

Reviewed by Brent Fulgham.

Source/WebKitLegacy/mac:

If the user default WebKitLinkedOnOrAfterEverything is enabled then have linkedOnOrAfter()
always return true.

  • Misc/WebKitVersionChecks.mm:

(linkedOnOrAfter): Read the user default WebKitLinkedOnOrAfterEverything once and cache it.
If the default is enabled then early return true. Outside of tooling this default is unlikely
to be set.

Tools:

Enable default WebKitLinkedOnOrAfterEverything in DumpRenderTree just as we do in WebKitTestRunner.
This lets me put test results for Mac and iOS Legacy WebKit in the same cross-platform directory
as the actual test instead of under a platform-specific directory even when the tests' behavior
depends on the link-time version of WebKit.

Note that testing of pre-linked behavior can still be accomplished by test writers by exposing settings
and toggling them in a test.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(setDefaultsToConsistentValuesForTesting):

1:16 PM Changeset in webkit [256053] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] webgpu/whlsl/zero-initialize-values-2.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=207222

Unreviewed test gardening

  • platform/mac-wk2/TestExpectations: this test is an image failure not a text failure.
1:09 PM Changeset in webkit [256052] by Russell Epstein
  • 1 edit in branches/safari-610.1.1-branch/Source/WebKit/Shared/AuxiliaryProcess.cpp

Unreviewed build fix. rdar://problem/58826101

12:42 PM Changeset in webkit [256051] by weinig@apple.com
  • 26 edits in trunk

Move trivial definitions from FeatureDefines.xcconfig to PlatformEnableCocoa.h
https://bugs.webkit.org/show_bug.cgi?id=207155

Reviewed by Tim Horton.
Source/JavaScriptCore:


Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make has been updated to generate the list
of ENABLE_* features by directly from preprocessing Platform.h, rather than
just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources.make:

Source/WebCore:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make and generate-unified-sources.sh have been
updated to generate the list of ENABLE_* features by directly from preprocessing
Platform.h, rather than just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • Configurations/WebCore.xcconfig:
  • DerivedSources.make:
  • Scripts/generate-unified-sources.sh:

Source/WebCore/PAL:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

  • Configurations/FeatureDefines.xcconfig:
  • Configurations/PAL.xcconfig:

Remove quotes as they should not be necessary (other uses of BUILT_PRODUCTS_DIR
are not quoted) and complicate scripts that want to use HEADER_SEARCH_PATHS.

Source/WebKit:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make and generate-unified-sources.sh have been
updated to generate the list of ENABLE_* features by directly from preprocessing
Platform.h, rather than just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources.make:
  • Scripts/generate-unified-sources.sh:

Source/WebKitLegacy:

To support the move, generate-unified-sources.sh has been updated to generate
the list of ENABLE_* features by directly from preprocessing Platform.h, rather
than just getting the partial list from the xcconfig file.

  • scripts/generate-unified-sources.sh:

Source/WebKitLegacy/mac:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

To support the move, DerivedSources.make has been updated to generate the list
of ENABLE_* features by directly from preprocessing Platform.h, rather than
just getting the partial list from the xcconfig file.

  • Configurations/FeatureDefines.xcconfig:
  • MigrateHeaders.make:

Source/WTF:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

ENABLE_INSPECTOR_TELEMETRY, ENABLE_TEXT_AUTOSIZING, ENABLE_WEBGL, ENABLE_METER_ELEMENT,
ENABLE_VIDEO_TRACK, ENABLE_WEB_AUDIO and ENABLE_CURSOR_VISIBILITY are all now always
set to 1 for Cocoa (if not defined already), as this was already the case via the xcconfig.

  • wtf/PlatformEnable.h:
  • wtf/PlatformEnableCocoa.h:

Tools:

Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
also has a default value in PlatformEnable.h

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
11:35 AM Changeset in webkit [256050] by Russell Epstein
  • 8 edits
    2 adds in branches/safari-610.1.1.4-branch

Cherry-pick r255422. rdar://problem/59264302

[Web Animations] Changing the delay of an accelerated animation doesn't seek the animation
https://bugs.webkit.org/show_bug.cgi?id=206990
<rdar://problem/58675608>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: webanimations/seeking-by-changing-delay-accelerated.html

In order to seek an accelerated animation, we need to update the animation on the target element's backing GraphicsLayer. We do this by enqueuing an
AcceleratedAction:Seek command which is done by calling KeyframeEffect::animationDidSeek(), which we would only call from WebAnimation::setCurrentTime().
However, seeking can be performed by modifying the animation's effect's timing.

We now call WebAnimation::effectTimingDidChange() with an optional ComputedEffectTiming for call sites that want to provide timing data prior to
modifying timing properties. This allows WebAnimation::effectTimingDidChange() to compare the previous progress with the new progress to determine if the
animation was seeked, so KeyframeEffect::animationDidSeek() may be called.

There are two places where we now call WebAnimation::effectTimingDidChange() with the previous timing data. First, when updateTiming() is called
through the JavaScript API (AnimationEffect::updateTiming) and when a CSS Animation's timing has been modified by changing some of the animation CSS
properties (CSSAnimation::syncPropertiesWithBackingAnimation).

  • animation/AnimationEffect.cpp: (WebCore::AnimationEffect::updateTiming): Compute the previous timing data and provide it to WebAnimation::effectTimingDidChange().
  • animation/CSSAnimation.cpp: (WebCore::CSSAnimation::syncPropertiesWithBackingAnimation): Compute the previous timing data and provide it to WebAnimation::effectTimingDidChange().
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::computeAcceleratedPropertiesState): Drive-by fix for faulty logic introduced in a recent patch (r255383). (WebCore::KeyframeEffect::applyPendingAcceleratedActions): We need to reset the m_isRunningAccelerated flag when an animation was supposed to be stopped but couldn't be because the target's layer backing was removed prior to the accelerated action being committed.
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::effectTimingDidChange): If previous timing data was provided, check whether its progress differs from the current timing data and call KeyframeEffect::animationDidSeek().
  • animation/WebAnimation.h:

LayoutTests:

Add a new test which would fail prior to this patch where we pause an animation after it has started playing accelerated and
change its delay to check that it correctly seeks the animation.

  • webanimations/seeking-by-changing-delay-accelerated-expected.html: Added.
  • webanimations/seeking-by-changing-delay-accelerated.html: Added.
  • platform/win/TestExpectations: Mark the new test as failing.

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

11:35 AM Changeset in webkit [256049] by Russell Epstein
  • 70 edits
    3 copies
    3 moves
    22 adds in branches/safari-610.1.1.4-branch

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

Web Inspector: add instrumentation for showing existing Web Animations
https://bugs.webkit.org/show_bug.cgi?id=205434
<rdar://problem/28328087>

Reviewed by Brian Burg.

Source/JavaScriptCore:

  • inspector/protocol/Animation.json: Add types/commands/events for instrumenting the lifecycle of Animation objects, as well as commands for getting the JavaScript wrapper object and the target DOM node.

Source/WebCore:

Add types/commands/events for instrumenting the lifecycle of Animation objects, as well as
commands for getting the JavaScript wrapper object and the target DOM node.

Tests: inspector/animation/effectChanged.html

inspector/animation/lifecycle-css-animation.html
inspector/animation/lifecycle-css-transition.html
inspector/animation/lifecycle-web-animation.html
inspector/animation/requestEffectTarget.html
inspector/animation/resolveAnimation.html
inspector/animation/targetChanged.html

  • animation/WebAnimation.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::instances): Added. (WebCore::WebAnimation::instancesMutex): Added. (WebCore::WebAnimation::create): (WebCore::WebAnimation::WebAnimation): (WebCore::WebAnimation::~WebAnimation): (WebCore::WebAnimation::effectTimingDidChange): (WebCore::WebAnimation::setEffectInternal): (WebCore::WebAnimation::effectTargetDidChange):
  • animation/CSSAnimation.cpp: (WebCore::CSSAnimation::create):
  • animation/CSSTransition.cpp: (WebCore::CSSTransition::create):
  • animation/KeyframeEffect.h: (WebCore::KeyframeEffect::parsedKeyframes const): Added. (WebCore::KeyframeEffect::blendingKeyframes const): Added. (WebCore::KeyframeEffect::hasBlendingKeyframes const): Deleted. Provide a way to access the list of keyframes.
  • inspector/InspectorInstrumentation.h: (WebCore::InspectorInstrumentation::didSetWebAnimationEffect): Added. (WebCore::InspectorInstrumentation::didChangeWebAnimationEffectTiming): Added. (WebCore::InspectorInstrumentation::didChangeWebAnimationEffectTarget): Added. (WebCore::InspectorInstrumentation::didCreateWebAnimation): Added. (WebCore::InspectorInstrumentation::didChangeWebAnimationEffect): Deleted.
  • inspector/InspectorInstrumentation.cpp: (WebCore::InspectorInstrumentation::didCommitLoadImpl): (WebCore::InspectorInstrumentation::didSetWebAnimationEffectImpl): Added. (WebCore::InspectorInstrumentation::didChangeWebAnimationEffectTimingImpl): Added. (WebCore::InspectorInstrumentation::didChangeWebAnimationEffectTargetImpl): Added. (WebCore::InspectorInstrumentation::didCreateWebAnimationImpl): Added. (WebCore::InspectorInstrumentation::willDestroyWebAnimationImpl): (WebCore::InspectorInstrumentation::didChangeWebAnimationEffectImpl): Deleted.
  • inspector/InstrumentingAgents.h: (WebCore::InstrumentingAgents::enabledInspectorAnimationAgent const): Added. (WebCore::InstrumentingAgents::setEnabledInspectorAnimationAgent): Added.
  • inspector/InstrumentingAgents.cpp: (WebCore::InstrumentingAgents::reset):
  • inspector/agents/InspectorAnimationAgent.h:
  • inspector/agents/InspectorAnimationAgent.cpp: (WebCore::protocolValueForSeconds): Added. (WebCore::protocolValueForPlaybackDirection): Added. (WebCore::protocolValueForFillMode): Added. (WebCore::buildObjectForKeyframes): Added. (WebCore::buildObjectForEffect): Added. (WebCore::InspectorAnimationAgent::InspectorAnimationAgent): (WebCore::InspectorAnimationAgent::willDestroyFrontendAndBackend): (WebCore::InspectorAnimationAgent::enable): Added. (WebCore::InspectorAnimationAgent::disable): Added. (WebCore::InspectorAnimationAgent::requestEffectTarget): Added. (WebCore::InspectorAnimationAgent::resolveAnimation): Added. (WebCore::InspectorAnimationAgent::didSetWebAnimationEffect): Added. (WebCore::InspectorAnimationAgent::didChangeWebAnimationEffectTiming): Added. (WebCore::InspectorAnimationAgent::didChangeWebAnimationEffectTarget): Added. (WebCore::InspectorAnimationAgent::didCreateWebAnimation): Added. (WebCore::InspectorAnimationAgent::willDestroyWebAnimation): (WebCore::InspectorAnimationAgent::frameNavigated): (WebCore::InspectorAnimationAgent::findAnimationId): Added. (WebCore::InspectorAnimationAgent::assertAnimation): Added. (WebCore::InspectorAnimationAgent::bindAnimation): Added. (WebCore::InspectorAnimationAgent::unbindAnimation): Added. (WebCore::InspectorAnimationAgent::animationDestroyedTimerFired): Added. (WebCore::InspectorAnimationAgent::reset): Added. (WebCore::InspectorAnimationAgent::didChangeWebAnimationEffect): Deleted.
  • inspector/agents/InspectorDOMAgent.h:
  • inspector/agents/InspectorDOMAgent.cpp: (WebCore::InspectorDOMAgent::pushNodeToFrontend): (WebCore::InspectorDOMAgent::querySelector): (WebCore::InspectorDOMAgent::pushNodePathToFrontend): (WebCore::InspectorDOMAgent::setNodeName): (WebCore::InspectorDOMAgent::setOuterHTML): (WebCore::InspectorDOMAgent::moveTo): (WebCore::InspectorDOMAgent::requestNode): (WebCore::InspectorDOMAgent::pushNodeByPathToFrontend): Add an overload for pushNodePathToFrontend that exposes an ErrorString.

Source/WebInspectorUI:

  • UserInterface/Controllers/AnimationManager.js: Added. (WI.AnimationManager): (WI.AnimationManager.prototype.get domains): (WI.AnimationManager.prototype.activateExtraDomain): (WI.AnimationManager.prototype.initializeTarget): (WI.AnimationManager.prototype.get animationCollection): (WI.AnimationManager.prototype.get supported): (WI.AnimationManager.prototype.enable): (WI.AnimationManager.prototype.disable): (WI.AnimationManager.prototype.animationCreated): (WI.AnimationManager.prototype.effectChanged): (WI.AnimationManager.prototype.targetChanged): (WI.AnimationManager.prototype.animationDestroyed): (WI.AnimationManager.prototype._handleMainResourceDidChange):
  • UserInterface/Protocol/AnimationObserver.js: (WI.AnimationObserver.prototype.animationCreated): Added. (WI.AnimationObserver.prototype.effectChanged): Added. (WI.AnimationObserver.prototype.targetChanged): Added. (WI.AnimationObserver.prototype.animationDestroyed): Added.
  • UserInterface/Models/AnimationCollection.js: Added. (WI.AnimationCollection): (WI.AnimationCollection.prototype.get animationType): (WI.AnimationCollection.prototype.get displayName): (WI.AnimationCollection.prototype.objectIsRequiredType): (WI.AnimationCollection.prototype.animationCollectionForType): (WI.AnimationCollection.prototype.itemAdded): (WI.AnimationCollection.prototype.itemRemoved): (WI.AnimationCollection.prototype.itemsCleared): Similar to WI.ResourceCollection, create a subclass of WI.Collection that maintains it's own sub-WI.AnimationCollections for each type of WI.Animation.Type.
  • UserInterface/Models/Animation.js: Added. (WI.Animation): (WI.Animation.fromPayload): (WI.Animation.displayNameForAnimationType): (WI.Animation.displayNameForPlaybackDirection): (WI.Animation.displayNameForFillMode): (WI.Animation.resetUniqueDisplayNameNumbers): (WI.Animation.prototype.get animationId): (WI.Animation.prototype.get backtrace): (WI.Animation.prototype.get animationType): (WI.Animation.prototype.get startDelay): (WI.Animation.prototype.get endDelay): (WI.Animation.prototype.get iterationCount): (WI.Animation.prototype.get iterationStart): (WI.Animation.prototype.get iterationDuration): (WI.Animation.prototype.get timingFunction): (WI.Animation.prototype.get playbackDirection): (WI.Animation.prototype.get fillMode): (WI.Animation.prototype.get keyframes): (WI.Animation.prototype.get displayName): (WI.Animation.prototype.requestEffectTarget): (WI.Animation.prototype.effectChanged): (WI.Animation.prototype.targetChanged): (WI.Animation.prototype._updateEffect):
  • UserInterface/Protocol/RemoteObject.js: (WI.RemoteObject.resolveAnimation): Added.
  • UserInterface/Views/GraphicsTabContentView.js: Renamed from Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js. (WI.GraphicsTabContentView): (WI.GraphicsTabContentView.tabInfo): (WI.GraphicsTabContentView.isTabAllowed): (WI.GraphicsTabContentView.prototype.get type): (WI.GraphicsTabContentView.prototype.showRepresentedObject): Added. (WI.GraphicsTabContentView.prototype.canShowRepresentedObject): (WI.GraphicsTabContentView.prototype.closed): (WI.GraphicsTabContentView.prototype.attached): (WI.GraphicsTabContentView.prototype.detached): (WI.GraphicsTabContentView.prototype.initialLayout): Added. (WI.GraphicsTabContentView.prototype._handleOverviewTreeOutlineSelectionDidChange): Added.
  • UserInterface/Views/GraphicsTabContentView.css: Renamed from Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.css. Rename the Canvas Tab to Graphics Tab and display four sections:
    • Canvases
    • Web Animations
    • CSS Animations
    • CSS Transitions
  • UserInterface/Views/CanvasSidebarPanel.js: (WI.CanvasSidebarPanel.prototype.canShowRepresentedObject): Only appear if a WI.Canvas or WI.Recording is selected.
  • UserInterface/Views/GraphicsOverviewContentView.js: Added. (WI.GraphicsOverviewContentView): (WI.GraphicsOverviewContentView.prototype.get supplementalRepresentedObjects): (WI.GraphicsOverviewContentView.prototype.get navigationItems): (WI.GraphicsOverviewContentView.prototype.attached): (WI.GraphicsOverviewContentView.prototype.detached): (WI.GraphicsOverviewContentView.prototype.initialLayout): (WI.GraphicsOverviewContentView.prototype.dropZoneShouldAppearForDragEvent): (WI.GraphicsOverviewContentView.prototype.dropZoneHandleDrop): (WI.GraphicsOverviewContentView.prototype._handleRefreshButtonClicked): (WI.GraphicsOverviewContentView.prototype._handleShowGridButtonClicked): (WI.GraphicsOverviewContentView.prototype._handleShowImageGridSettingChanged): (WI.GraphicsOverviewContentView.prototype._handleImportButtonNavigationItemClicked): (WI.GraphicsOverviewContentView.prototype._handleOverviewViewSelectedItemChanged): (WI.GraphicsOverviewContentView.prototype._handleOverviewViewSupplementalRepresentedObjectsDidChange): (WI.GraphicsOverviewContentView.prototype._handleClick):
  • UserInterface/Views/GraphicsOverviewContentView.css: Added. (.content-view.graphics-overview): (.content-view.graphics-overview > section): (.content-view.graphics-overview > section:not(:first-child)): (.content-view.graphics-overview > section > .header): (.content-view.graphics-overview > section:not(:first-of-type) > .header): (.content-view.graphics-overview > section > .header > h1): (.content-view.graphics-overview > section > .header > .navigation-bar): (.content-view.graphics-overview > .content-view.canvas-overview): (@media (prefers-color-scheme: light) .content-view.graphics-overview): (@media (prefers-color-scheme: light) .content-view.graphics-overview > section > .header): Add sticky headers for each of the sections described above.
  • UserInterface/Views/AnimationCollectionContentView.js: Added. (WI.AnimationCollectionContentView): (WI.AnimationCollectionContentView.prototype.handleRefreshButtonClicked): (WI.AnimationCollectionContentView.prototype.contentViewAdded): (WI.AnimationCollectionContentView.prototype.contentViewRemoved): (WI.AnimationCollectionContentView.prototype.detached): (WI.AnimationCollectionContentView.prototype._handleContentViewMouseEnter): (WI.AnimationCollectionContentView.prototype._handleContentViewMouseLeave):
  • UserInterface/Views/AnimationCollectionContentView.css: Added. (.content-view.animation-collection):
  • UserInterface/Views/AnimationContentView.js: Added. (WI.AnimationContentView): (WI.AnimationContentView.get previewHeight): (WI.AnimationContentView.prototype.handleRefreshButtonClicked): (WI.AnimationContentView.prototype.initialLayout): (WI.AnimationContentView.prototype.layout): (WI.AnimationContentView.prototype.sizeDidChange): (WI.AnimationContentView.prototype.attached): (WI.AnimationContentView.prototype.detached): (WI.AnimationContentView.prototype._refreshSubtitle): (WI.AnimationContentView.prototype._refreshPreview.addTitle): (WI.AnimationContentView.prototype._refreshPreview): (WI.AnimationContentView.prototype._handleEffectChanged): (WI.AnimationContentView.prototype._handleTargetChanged): (WI.AnimationContentView.prototype._populateAnimationTargetButtonContextMenu):
  • UserInterface/Views/AnimationContentView.css: Added. (.content-view.animation): (.content-view.animation.selected): (.content-view.animation > header): (.content-view.animation > header > .titles): (.content-view.animation > header > .titles > .title): (.content-view.animation > header > .titles > .subtitle): (.content-view.animation > header > .titles > .subtitle:not(:empty)::before): (.content-view.animation > header > .navigation-bar): (.content-view.animation:hover > header > .navigation-bar): (.content-view.animation > .preview): (.content-view.animation > .preview > svg): (body[dir=rtl] .content-view.animation > .preview > svg): (.content-view.animation > .preview > svg rect): (.content-view.animation > .preview > svg > .delay line): (.content-view.animation > .preview > svg > .active path): (.content-view.animation > .preview > svg > .active circle): (.content-view.animation > .preview > svg > .active line): (.content-view.animation > .preview > span): (@media (prefers-color-scheme: dark) .content-view.animation > header > .titles > .title): (@media (prefers-color-scheme: dark) .content-view.animation > header > .titles > .subtitle): (@media (prefers-color-scheme: dark) .content-view.animation > .preview): Visualize the start/end delay and keyframes of the given animation as a series of bezier curves separated by markers.
  • UserInterface/Views/AnimationDetailsSidebarPanel.js: Added. (WI.AnimationDetailsSidebarPanel): (WI.AnimationDetailsSidebarPanel.prototype.inspect): (WI.AnimationDetailsSidebarPanel.prototype.get animation): (WI.AnimationDetailsSidebarPanel.prototype.set animation): (WI.AnimationDetailsSidebarPanel.prototype.initialLayout): (WI.AnimationDetailsSidebarPanel.prototype.layout): (WI.AnimationDetailsSidebarPanel.prototype._refreshIdentitySection): (WI.AnimationDetailsSidebarPanel.prototype._refreshEffectSection): (WI.AnimationDetailsSidebarPanel.prototype._refreshBacktraceSection): (WI.AnimationDetailsSidebarPanel.prototype._handleAnimationEffectChanged): (WI.AnimationDetailsSidebarPanel.prototype._handleAnimationTargetChanged): (WI.AnimationDetailsSidebarPanel.prototype._handleDetailsSectionCollapsedStateChanged):
  • UserInterface/Views/AnimationDetailsSidebarPanel.css: Added. (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .header > .subtitle): (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .details-section): (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .details-section .row.styles): (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .details-section .row.styles .CodeMirror): (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .details-section): Show collected information about the selected animation, its effect, and its target.
  • UserInterface/Controllers/CanvasManager.js: (WI.CanvasManager): (WI.CanvasManager.prototype.get canvasCollection): Added. (WI.CanvasManager.prototype.disable): (WI.CanvasManager.prototype.canvasAdded): (WI.CanvasManager.prototype.canvasRemoved): (WI.CanvasManager.prototype._saveRecordings): Added. (WI.CanvasManager.prototype._mainResourceDidChange): (WI.CanvasManager.prototype.get canvases): Deleted. (WI.CanvasManager.prototype._removeCanvas): Deleted. Rather than have the WI.CanvasTabContentView mainain the WI.CanvasCollection and have to listen for events from the WI.CanvasManager, just have the WI.CanvasManager hold on to it instead and provide a getter for it.
  • UserInterface/Views/CanvasOverviewContentView.js: (WI.CanvasOverviewContentView): (WI.CanvasOverviewContentView.prototype.get navigationItems): (WI.CanvasOverviewContentView.prototype.handleRefreshButtonClicked): (WI.CanvasOverviewContentView.prototype.contentViewAdded): (WI.CanvasOverviewContentView.prototype.contentViewRemoved): (WI.CanvasOverviewContentView.prototype.attached): (WI.CanvasOverviewContentView.prototype.detached): (WI.CanvasOverviewContentView.prototype._addSavedRecording): (WI.CanvasOverviewContentView.prototype.hidden): Deleted. (WI.CanvasOverviewContentView.prototype.get _itemMargin): Deleted. (WI.CanvasOverviewContentView.prototype._refreshPreviews): Deleted. (WI.CanvasOverviewContentView.prototype._updateNavigationItems): Deleted. (WI.CanvasOverviewContentView.prototype._showGridButtonClicked): Deleted. (WI.CanvasOverviewContentView.prototype._updateShowImageGrid): Deleted.
  • UserInterface/Views/CanvasOverviewContentView.css: (.content-view.canvas-overview): (.content-view.canvas-overview > .content-view.canvas): (@media (prefers-color-scheme: dark) .content-view.canvas-overview): Deleted.
  • UserInterface/Views/CanvasContentView.js: (WI.CanvasContentView): (WI.CanvasContentView.prototype.handleRefreshButtonClicked): Added. (WI.CanvasContentView.prototype.dropZoneShouldAppearForDragEvent): Added. (WI.CanvasContentView.prototype.dropZoneHandleDrop): Added. (WI.CanvasContentView.prototype.initialLayout): (WI.CanvasContentView.prototype.attached): (WI.CanvasContentView.prototype._populateCanvasElementButtonContextMenu): (WI.CanvasContentView.prototype.shown): Deleted. Move the "Log Canvas Context" to be the first item in the canvas element button context menu. Drive-by: add a WI.DropZoneView for when recording JSON files are dragged on top.
  • UserInterface/Views/CanvasContentView.css: Drive-by: drop :not(.tab) from all selectors since the Canvas Tab doesn't exist anymore.
  • UserInterface/Views/CollectionContentView.js: (WI.CollectionContentView): (WI.CollectionContentView.prototype.get selectedItem): Added. (WI.CollectionContentView.prototype.set selectedItem): Added. (WI.CollectionContentView.prototype.addContentViewForItem): (WI.CollectionContentView.prototype.removeContentViewForItem): (WI.CollectionContentView.prototype.showContentPlaceholder): (WI.CollectionContentView.prototype.initialLayout): (WI.CollectionContentView.prototype._selectItem): (WI.CollectionContentView.prototype._handleClick): Added. (WI.CollectionContentView.prototype.setSelectedItem): Deleted.
  • UserInterface/Views/CollectionContentView.css: (.content-view.collection > .placeholder:not(.message-text-view)): Added. (.content-view.collection .resource.image img): Deleted. (.content-view.collection .resource.image img:hover): Deleted. When selection is enabled, clicking outside of any of the content views should dismiss the current selection. Clients should also be able to get the currently selected item.
  • UserInterface/Views/DetailsSectionSimpleRow.js: (WI.DetailsSectionSimpleRow.prototype.set value): Ensure that 0 is considered as a valid value.
  • UserInterface/Base/Main.js: (WI.loaded): (WI.contentLoaded): (WI.tabContentViewClassForRepresentedObject):
  • UserInterface/Views/ContentView.js: (WI.ContentView.createFromRepresentedObject): (WI.ContentView.isViewable): Allow WI.Animation to be viewable.
  • UserInterface/Views/Main.css: (.navigation-item-help): Added. (.navigation-item-help > .navigation-bar): Added. (.navigation-item-help > .navigation-bar > .item): Added. (.message-text-view .navigation-item-help): Deleted. (.message-text-view .navigation-item-help .navigation-bar): Deleted. (.message-text-view .navigation-item-help .navigation-bar > .item): Deleted. Allow WI.createNavigationItemHelp to be used independently of WI.createMessageTextView.
  • UserInterface/Controllers/DOMManager.js: (WI.DOMManager.prototype.nodeForId):
  • UserInterface/Controllers/TimelineManager.js: (WI.TimelineManager.prototype.animationTrackingUpdated):
  • UserInterface/Models/AuditTestCaseResult.js: (WI.AuditTestCaseResult.async fromPayload): Add a fallback so callers don't need to.
  • UserInterface/Views/ResourceCollectionContentView.js: (WI.ResourceCollectionContentView):
  • UserInterface/Views/ResourceCollectionContentView.css: (.content-view.resource-collection > .resource.image img): Added. (.content-view.resource-collection > .resource.image img:hover): Added. Drive-by: move these styles to the right file and make them more specific.
  • UserInterface/Models/Canvas.js: (WI.Canvas.displayNameForContextType):
  • UserInterface/Models/Recording.js: (WI.Recording.displayNameForRecordingType): Added. Drive-by: fix localized strings.
  • UserInterface/Views/RecordingContentView.css: Drive-by: drop :not(.tab) from all selectors since the Recording Tab doesn't exist anymore.
  • UserInterface/Main.html:
  • UserInterface/Images/Graphics.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/Canvas.svg.
  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Test.html:
  • UserInterface/Test/Test.js: (WI.loaded):
  • UserInterface/Test/TestHarness.js: (TestHarness.prototype.expectEmpty): Added. (TestHarness.prototype.expectNotEmpty): Added. (TestHarness.prototype._expectationMessageFormat): (TestHarness.prototype._expectedValueFormat): Add utility function for checking whether the given value is empty:
    • Array length === 0
    • String length === 0
    • Set size === 0
    • Map size === 0
    • Object isEmptyObject

Any other type will automatically fail, as non-objects can't be "empty" (e.g. 42).

LayoutTests:

  • inspector/animation/effectChanged.html: Added.
  • inspector/animation/effectChanged-expected.txt: Added.
  • inspector/animation/lifecycle-css-animation.html: Added.
  • inspector/animation/lifecycle-css-animation-expected.txt: Added.
  • inspector/animation/lifecycle-css-transition.html: Added.
  • inspector/animation/lifecycle-css-transition-expected.txt: Added.
  • inspector/animation/lifecycle-web-animation.html: Added.
  • inspector/animation/lifecycle-web-animation-expected.txt: Added.
  • inspector/animation/requestEffectTarget.html: Added.
  • inspector/animation/requestEffectTarget-expected.txt: Added.
  • inspector/animation/resolveAnimation.html: Added.
  • inspector/animation/resolveAnimation-expected.txt: Added.
  • inspector/animation/targetChanged.html: Added.
  • inspector/animation/targetChanged-expected.txt: Added.
  • inspector/animation/resources/lifecycle-utilities.js: Added. (createAnimation): (destroyAnimations): (InspectorTest.AnimationLifecycleUtilities.async awaitAnimationCreated): (InspectorTest.AnimationLifecycleUtilities.async awaitAnimationDestroyed): (InspectorTest.AnimationLifecycleUtilities.async createAnimation): (InspectorTest.AnimationLifecycleUtilities.async destroyAnimations):
  • inspector/canvas/create-context-webgpu.html:
  • inspector/canvas/resources/create-context-utilities.js: (destroyCanvases): (awaitCanvasAdded): (InspectorTest.CreateContextUtilities.initializeTestSuite):
  • inspector/canvas/context-attributes.html:
  • inspector/canvas/extensions.html:
  • inspector/canvas/memory.html:
  • inspector/canvas/requestClientNodes.html:
  • inspector/canvas/requestContent-2d.html:
  • inspector/canvas/requestContent-bitmaprenderer.html:
  • inspector/canvas/requestContent-webgl.html:
  • inspector/canvas/requestContent-webgl2.html:
  • inspector/canvas/requestNode.html:
  • inspector/canvas/resolveContext-2d.html:
  • inspector/canvas/resolveContext-bitmaprenderer.html:
  • inspector/canvas/resolveContext-webgl.html:
  • inspector/canvas/resolveContext-webgl2.html:
  • inspector/canvas/resolveContext-webgpu.html:
  • inspector/canvas/recording.html:
  • inspector/canvas/setRecordingAutoCaptureFrameCount.html:
  • inspector/canvas/resources/recording-utilities.js: (window.getCanvas):
  • inspector/canvas/shaderProgram-add-remove-webgpu.html:
  • inspector/canvas/updateShader-webgpu-sharedVertexFragment.html:
  • inspector/canvas/resources/shaderProgram-utilities-webgpu.js:
  • inspector/canvas/resources/shaderProgram-utilities-webgl.js: (deleteContext): (whenProgramAdded): (window.initializeTestSuite): (window.addParentCanvasRemovedTestCase):
  • inspector/unit-tests/test-harness-expect-functions.html:
  • inspector/unit-tests/test-harness-expect-functions-expected.txt:

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

11:34 AM Changeset in webkit [256048] by Russell Epstein
  • 15 edits
    1 copy
    3 moves
    7 adds
    1 delete in branches/safari-610.1.1.4-branch

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

[Web Animations] Animations should run accelerated even if other animations targeting the same element are not accelerated
https://bugs.webkit.org/show_bug.cgi?id=206890
<rdar://problem/58961750>

Reviewed by Simon Fraser.

Source/WebCore:

Test: webanimations/width-and-opacity-separate-animation-yields-compositing.html

In the Web Animations implementation, when an element has some animated properties that can be accelerated and some that cannot be, we would never
run accelerated animations at all. However, in the "legacy" animation engine, we would animate properties that can be acclerated if possible.
We now attempt to run accelerated animations provided at least one animation is accelerated.

To do that, we now keep track of whether none, some or all of the animated properties of a given KeyframeEffect are accelerated using the new
m_acceleratedPropertiesState instance variable. We compute this property when creating the blending keyframes for the effect.

Then, as time progresses and the effect is resolved, updateAcceleratedActions() is called and we simply use the effect's phase to determine
whether we need to enqueue actions to start, pause, seek or end accelerated animations. This is an improvement over how this method used to work
since we would run accelerated animations while in their delay phase, which did not match the "legacy" animation engine's behavior.

We've also removed the single method that provided the accelerated characteristics of a KeyframeEffect, isAccelerated(), with a few more methods:

  • isRunningAccelerated(): the effect is currently running accelerated animations.
  • isAboutToRunAccelerated(): the effect has pending accelerated actions that should make it run accelerated animations when accelerated actions are updated next.
  • isCompletelyAccelerated(): the effect animates only accelerated properties.
  • isCurrentlyAffectingProperty(property, accelerated): the effect is currently animating the given property, with the option to specify whether that animation is accelerated.

We use this information in a few new places. If an effect returns true for either isRunningAccelerated() or isAboutToRunAccelerated() when
Element::applyKeyframeEffects() is called, we set the AnimationImpact::RequiresRecomposite flag. In RenderLayerCompositor::requiresCompositingForAnimation(),
if an effect returns true for isCurrentlyAffectingProperty() with the accelerated flag set to true, the method returns true, matching the logic
used by the "legacy" animation engine.

All in all, this better aligns the behavior of the "legacy" and Web Animations engines to run accelerated animations in the same circumstances.

  • animation/AnimationTimeline.cpp: (WebCore::AnimationTimeline::updateCSSTransitionsForElementAndProperty): Use KeyframeEfffect::isRunningAccelerated() instead of KeyframeEffect::isAccelerated().
  • animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::isRunningAcceleratedAnimationOnRenderer const): Use KeyframeEffect::isCurrentlyAffectingProperty() instead of checking both isRunningAccelerated() and manually looking at the effect's animated properties.
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::setBlendingKeyframes): Call computeAcceleratedPropertiesState() instead of the now-defunct computeShouldRunAccelerated(). (WebCore::KeyframeEffect::apply): Keep track of the newly computed phase so that we may use it in the new isCurrentlyAffectingProperty() without having to recompute it on each call. (WebCore::KeyframeEffect::isCurrentlyAffectingProperty const): Indicates whether a given property is currently animated (active phase) with the option to specify whether that animation is accelerated. (WebCore::KeyframeEffect::computeAcceleratedPropertiesState): Compute whether none, some or all of the animated properties of the given effect can be accelerated. (WebCore::KeyframeEffect::updateAcceleratedActions): Use the phase to determine which accelerated actions to enqueue. (WebCore::KeyframeEffect::animationDidSeek): Use the new m_isRunningAccelerated state to determine whether the animation is presently running accelerated. (WebCore::KeyframeEffect::animationWasCanceled): Use the new m_isRunningAccelerated state to determine whether the animation is presently running accelerated. (WebCore::KeyframeEffect::animationSuspensionStateDidChange): Use the new m_isRunningAccelerated state to determine whether the animation is presently running accelerated. (WebCore::KeyframeEffect::applyPendingAcceleratedActions):
  • animation/KeyframeEffect.h: (WebCore::KeyframeEffect::isRunningAccelerated const): (WebCore::KeyframeEffect::isAboutToRunAccelerated const): (WebCore::KeyframeEffect::isCompletelyAccelerated const):
  • animation/KeyframeEffectStack.cpp: (WebCore::KeyframeEffectStack::isCurrentlyAffectingProperty const): Indicates whether any of the effects in the stack animates a given property, with the option to specify whether the animation should be accelerated.
  • animation/KeyframeEffectStack.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::effectTargetDidChange): Ensure we schedule an animation update if an effect is no longer animating a given element or newly animating an element, to ensure that replaced animations may be removed. (WebCore::WebAnimation::isCompletelyAccelerated const): Convenience function to call isCompletelyAccelerated() on the animation's effect. (WebCore::WebAnimation::computeRelevance): Check the replaced state when computing relevance. (WebCore::WebAnimation::timeToNextTick const): Schedule an immediate update if a given animation is not _completely_ accelerated.
  • animation/WebAnimation.h:
  • dom/Element.cpp: (WebCore::Element::keyframeEffectStack const): (WebCore::Element::applyKeyframeEffects): Set the AnimationImpact::RequiresRecomposite flag when the animation is either currently running accelerated or expected to be in the next accelerated animation update.
  • dom/Element.h:
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::requiresCompositingForAnimation const): Use the same logic as for the "legacy" animation engine to determine whether an animation requires compositing using the new KeyframeEffect::isCurrentlyAffectingProperty() method. (WebCore::RenderLayerCompositor::isRunningTransformAnimation const): Refactor some code to use the new KeyframeEffect::isCurrentlyAffectingProperty() method.

LayoutTests:

Update some tests that assumed a mix of accelerated and non-accelerated properties would not yield accelerated animations.
We also make some WK1-specific expectation due to compositing being disabled when opacity is the only potentially-accelerated
property to be animated.

  • platform/mac-wk1/imported/w3c/web-platform-tests/css/css-color/animation/opacity-interpolation-expected.txt: Added.
  • platform/mac-wk1/webanimations/opacity-animation-yields-compositing-expected.txt: Added.
  • platform/mac-wk1/webanimations/opacity-animation-yields-compositing-span-expected.txt: Added.
  • platform/mac-wk1/webanimations/partly-accelerated-transition-by-removing-property-expected.txt: Added.
  • platform/mac-wk1/webanimations/width-and-opacity-separate-animation-yields-compositing-expected.txt: Added.
  • webanimations/left-and-opacity-animation-yields-no-compositing-expected.txt: Removed.
  • webanimations/partly-accelerated-transition-by-removing-property-expected.txt:
  • webanimations/width-and-opacity-separate-animation-yields-compositing-expected.txt: Added.
  • webanimations/width-and-opacity-separate-animation-yields-compositing.html: Renamed from LayoutTests/webanimations/left-and-opacity-animation-yields-no-compositing.html.
  • webanimations/width-and-opacity-separate-animation-yields-no-compositing-expected.txt: Removed.
  • webanimations/width-and-opacity-separate-animation-yields-no-compositing.html: Removed.

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

11:34 AM Changeset in webkit [256047] by Russell Epstein
  • 14 edits in branches/safari-610.1.1.4-branch

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

[Web Animations] Support multiple CSS Animations with the same name in animation-name
https://bugs.webkit.org/show_bug.cgi?id=206688

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark some new WPT progressions.

  • web-platform-tests/css/css-animations/Element-getAnimations-dynamic-changes.tentative-expected.txt:
  • web-platform-tests/css/css-animations/Element-getAnimations.tentative-expected.txt:
  • web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-replacement-expected.txt:

Source/WebCore:

AnimationTimeline would keep track of registered CSS Animations by name for a given element in m_elementToCSSAnimationByName which would map one CSSAnimation
per String (the animation-name) for a given Element. However, within the same animation-name property, the name of a given @keyframes rules may appear more
than once, and the CSS Animations specification explains how to handle this scenario.

We now correctly handle this by replacing m_elementToCSSAnimationByName with the new m_elementToCSSAnimationsCreatedByMarkupMap which simply maps an Element
to a ListHashSet of CSSAnimation objects. Removing the string that appeared in animation-name to create this animation requires us to keep the AnimationList
used for the last style update for sorting purposes, since having multiple instances of the same string would not allow disambiguation when sorting the
KeyframeEffectStack.

So we also replace m_cssAnimationNames, a Vector<String>, with m_cssAnimationList, a RefPtr<const AnimationList>, and use this to compare Animation objects
stored in the AnimationList against the backing animation of each CSSAnimation.

Storing the AnimationList on the KeyframeEffectStack also has the benefit of allowing us to use this as the previous state when updating CSS Animations in
AnimationTimeline::updateCSSAnimationsForElement(). We used to rely on the previous RenderStyle provided to that function, but it's possible that this style
is null and we would unnecessarily create additional CSSAnimation objects for animations that actually were retained since the last time CSS Animations were
invalidated. We now use the stored AnimationList on the invalidated element's KeyframeEffectStack and create a new animation list that will replace the old
list stored in the m_elementToCSSAnimationsCreatedByMarkupMap map for that element. We can also compare the old list with the new list to find out which
animations are no longer current.

Finally, we refactor things a bit to have some new aliases AnimationCollection and CSSAnimationCollection instead of using ListHashSet<> in our types.

  • animation/AnimationTimeline.cpp: (WebCore::AnimationTimeline::animationWasAddedToElement): Use the new AnimationCollection alias. (WebCore::AnimationTimeline::removeDeclarativeAnimationFromListsForOwningElement): We no longer need to do any work for CSSAnimation here since the m_elementToCSSAnimationByName map is no more and the m_elementToCSSAnimationsCreatedByMarkupMap that replaces it is updated in updateCSSAnimationsForElement() and elementWasRemoved(). (WebCore::AnimationTimeline::animationsForElement const): Since animations are correctly sorted accounting for their composite order in KeyframeEffectStack, call KeyframeEffectStack::sortedEffects() when we're called with Ordering::Sorted. (WebCore::AnimationTimeline::removeCSSAnimationCreatedByMarkup): New method called by elementWasRemoved() to ensure that when an element is removed, we remove its CSSAnimation objects from the new m_elementToCSSAnimationsCreatedByMarkupMap and also update the AnimationList on the relevant KeyframeEffectStack. (WebCore::AnimationTimeline::elementWasRemoved): Call the new removeCSSAnimationCreatedByMarkup() method before canceling a CSSAnimation. (WebCore::AnimationTimeline::cancelDeclarativeAnimationsForElement): Call the new removeCSSAnimationCreatedByMarkup() method before canceling a CSSAnimation. (WebCore::AnimationTimeline::updateCSSAnimationsForElement): Use the AnimationList recoreded on the relevant KeyframeEffectStack to determine which CSSAnimation objects to create, cancel or merely update depending on the AnimationList in the current style.
  • animation/AnimationTimeline.h:
  • animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::getAnimations const): Use compareAnimationsByCompositeOrder() to correctly sort CSS Animations since they are no longer guaranteed to be stored in the relevant map in the expected order.
  • animation/KeyframeEffectStack.cpp: (WebCore::KeyframeEffectStack::ensureEffectsAreSorted): Use the new m_cssAnimationList instead of the old m_cssAnimationNames when sorting effects. (WebCore::KeyframeEffectStack::setCSSAnimationList): (WebCore::KeyframeEffectStack::setCSSAnimationNames): Deleted.
  • animation/KeyframeEffectStack.h: (WebCore::KeyframeEffectStack::cssAnimationList const): (WebCore::KeyframeEffectStack::cssAnimationNames const): Deleted.
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::commitStyles): Use the new KeyframeEffectStack::cssAnimationList() instead of the old KeyframeEffectStack::cssAnimationNames().
  • animation/WebAnimationUtilities.cpp: (WebCore::compareAnimationsByCompositeOrder): Update the composite order comparison utility to use an AnimationList rather than a list of animation names.
  • animation/WebAnimationUtilities.h:
  • platform/animation/AnimationList.h: (WebCore::AnimationList::copy const):

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

11:34 AM Changeset in webkit [256046] by Russell Epstein
  • 6 edits in branches/safari-610.1.1.4-branch/Source/WebCore

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

[Web Animations] Make AnimationList ref-counted
https://bugs.webkit.org/show_bug.cgi?id=206664

Reviewed by Antti Koivisto.

  • platform/animation/AnimationList.cpp:
  • platform/animation/AnimationList.h: (WebCore::AnimationList::create): (WebCore::AnimationList::copy): (WebCore::AnimationList::AnimationList): Deleted.
  • rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::ensureAnimations): (WebCore::RenderStyle::ensureTransitions):
  • rendering/style/StyleRareNonInheritedData.cpp: (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
  • rendering/style/StyleRareNonInheritedData.h:

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

11:34 AM Changeset in webkit [256045] by Russell Epstein
  • 14 edits
    5 deletes in branches/safari-610.1.1.4-branch

Cherry-pick r255189. rdar://problem/59264259

Unreviewed, revert r253984 as it appears to be causing assertion leaks.
https://bugs.webkit.org/show_bug.cgi?id=205687

Source/WebKit:

  • Configurations/WebKit.xcconfig:
  • Platform/spi/ios/RunningBoardServicesSPI.h: Removed.
  • Scripts/process-entitlements.sh:
  • Shared/DependencyProcessAssertion.cpp: Removed.
  • Shared/DependencyProcessAssertion.h: Removed.
  • Shared/NativeWebTouchEvent.h:
  • Shared/ios/DependencyProcessAssertionIOS.mm: Removed.
  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/WebProcessProxyCocoa.mm: (WebKit::WebProcessProxy::processWasResumed):
  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeConnection):
  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::processTaskStateDidChange): (WebKit::WebProcess::releaseProcessWasResumedAssertions):

WebKitLibraries:

  • WebKitPrivateFrameworkStubs/iOS/13/RunningBoardServices.framework/RunningBoardServices.tbd: Removed.

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

11:34 AM Changeset in webkit [256044] by Russell Epstein
  • 5 edits in branches/safari-610.1.1.4-branch/Source/WebKit

Cherry-pick r255178. rdar://problem/59264259

Unreviewed, revert r254210 as it seems to be causing process assertion leaks.
https://bugs.webkit.org/show_bug.cgi?id=205836

  • Shared/AuxiliaryProcess.cpp: (WebKit::AuxiliaryProcess::initializeConnection):
  • Shared/AuxiliaryProcess.h:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeConnection):
  • WebProcess/WebProcess.h:

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

11:25 AM Changeset in webkit [256043] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ macOS ] Layout Test legacy-animation-engine/animations/suspend-resume-animation-events.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=184617

Unreviewed test gardening.

  • platform/mac/TestExpectations:
11:18 AM Changeset in webkit [256042] by Kate Cheney
  • 7 edits in trunk

Update WebView category name to be more accurate
https://bugs.webkit.org/show_bug.cgi?id=207334
<rdar://problem/59224855>

Reviewed by Brent Fulgham.

Source/WebKit:

  • Shared/WebViewCategory.h:
  • UIProcess/API/APIPageConfiguration.h:
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(toWebKitWebViewCategory):
(toWKWebViewCategory):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Configuration.mm:

(TEST):

11:04 AM Changeset in webkit [256041] by commit-queue@webkit.org
  • 16 edits
    2 adds in trunk

[Apple Pay] Provide a redacted billing contact during payment method selection
https://bugs.webkit.org/show_bug.cgi?id=207169
<rdar://problem/42737441>

Patch by Nikos Mouchtaris <nmouchtaris@apple.com> on 2020-02-07
Reviewed by Andy Estes.

Source/WebCore:

Added requestBillingAddress option to PaymentOptions, to allow merchants
to request the user's billing address prior to user authentication to allow
the calculation of taxes. Added billingAddress member to ApplePayPaymentMethod
to return the billing address in the PaymentMethodChanged callback function.

Test: http/tests/ssl/applepay/ApplePayBillingAddress.html

  • Modules/applepay/ApplePayPaymentMethod.h:
  • Modules/applepay/ApplePayPaymentMethod.idl:
  • Modules/applepay/PaymentCoordinatorClient.cpp:

(WebCore::PaymentCoordinatorClient::supportsVersion):

  • Modules/applepay/cocoa/PaymentMethodCocoa.mm:

(WebCore::convert):

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::mergePaymentOptions):

  • Modules/paymentrequest/PaymentOptions.h:
  • Modules/paymentrequest/PaymentOptions.idl:

LayoutTests:

Test that billing address field of ApplePayPaymentMethod is properly
populated in the PaymentMethodChange callback.

  • http/tests/ssl/applepay/ApplePayBillingAddress-expected.txt: Added.
  • http/tests/ssl/applepay/ApplePayBillingAddress.html: Added.
11:01 AM Changeset in webkit [256040] by Kocsen Chung
  • 14 edits
    5 deletes in branches/safari-610.1.1-branch

Cherry-pick r255189. rdar://problem/58826101

Unreviewed, revert r253984 as it appears to be causing assertion leaks.
https://bugs.webkit.org/show_bug.cgi?id=205687

Source/WebKit:

  • Configurations/WebKit.xcconfig:
  • Platform/spi/ios/RunningBoardServicesSPI.h: Removed.
  • Scripts/process-entitlements.sh:
  • Shared/DependencyProcessAssertion.cpp: Removed.
  • Shared/DependencyProcessAssertion.h: Removed.
  • Shared/NativeWebTouchEvent.h:
  • Shared/ios/DependencyProcessAssertionIOS.mm: Removed.
  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/WebProcessProxyCocoa.mm: (WebKit::WebProcessProxy::processWasResumed):
  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeConnection):
  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::processTaskStateDidChange): (WebKit::WebProcess::releaseProcessWasResumedAssertions):

WebKitLibraries:

  • WebKitPrivateFrameworkStubs/iOS/13/RunningBoardServices.framework/RunningBoardServices.tbd: Removed.

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

11:01 AM Changeset in webkit [256039] by Kocsen Chung
  • 5 edits in branches/safari-610.1.1-branch/Source/WebKit

Cherry-pick r255178. rdar://problem/58826101

Unreviewed, revert r254210 as it seems to be causing process assertion leaks.
https://bugs.webkit.org/show_bug.cgi?id=205836

  • Shared/AuxiliaryProcess.cpp: (WebKit::AuxiliaryProcess::initializeConnection):
  • Shared/AuxiliaryProcess.h:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeConnection):
  • WebProcess/WebProcess.h:

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

11:01 AM Changeset in webkit [256038] by Kocsen Chung
  • 15 edits
    1 copy
    4 adds in branches/safari-610.1.1-branch

Revert cherry-pick of r255189 to have a clean slate. Since we need to also take r255178.

10:59 AM Changeset in webkit [256037] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebCore

[Cocoa] Slightly improve performance of Font::getCFStringAttributes()
https://bugs.webkit.org/show_bug.cgi?id=207374

Reviewed by Darin Adler.

Switch from CFDictionaryCreateMutable() to CFDictionaryCreate(). Also, don't construct a CTParagraphStyle each time the function is called.

No new tests because there is no behavior change.

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::widthForSimpleText const):

  • platform/graphics/mac/SimpleFontDataCoreText.cpp:

(WebCore::Font::getCFStringAttributes const):

10:49 AM Changeset in webkit [256036] by Russell Epstein
  • 1 copy in branches/safari-610.1.1.4-branch

New branch.

10:47 AM Changeset in webkit [256035] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac Debug ] imported/w3c/web-platform-tests/workers/WorkerGlobalScope_ErrorEvent_lineno.htm is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207395

Unreviewed test gardening.

  • platform/mac/TestExpectations:
10:41 AM Changeset in webkit [256034] by youenn@apple.com
  • 6 edits in trunk

Align getDisplayMedia() with spec
https://bugs.webkit.org/show_bug.cgi?id=207191
<rdar://problem/59151017>

Reviewed by Eric Carlson.

Source/WebCore:

Update WebIDL as per spec to have the correct default values for getDisplayMedia.
Covered by updated test.

  • Modules/mediastream/MediaDevices.cpp:

(WebCore::MediaDevices::getDisplayMedia):

  • Modules/mediastream/MediaDevices.h:
  • Modules/mediastream/MediaDevices.idl:

LayoutTests:

  • fast/mediastream/screencapture-user-gesture.html:
10:26 AM Changeset in webkit [256033] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac Debug ] imported/w3c/web-platform-tests/workers/WorkerGlobalScope_ErrorEvent_message.htm is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207392

Unreviewed test gardening.

  • platform/mac/TestExpectations:
10:26 AM Changeset in webkit [256032] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

Add release logging for the case of libwebrtc being not available
https://bugs.webkit.org/show_bug.cgi?id=207383

Reviewed by Eric Carlson.

Add logging in case of no libwebrtc dylib, in case we try to create a peer connection or a libwebrtc factory.
No change of behavior.

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::createLibWebRTCPeerConnectionBackend):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

(WebCore::LibWebRTCProvider::factory):

10:13 AM Changeset in webkit [256031] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] add commit-queue build step to close the bug
https://bugs.webkit.org/show_bug.cgi?id=207387

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(BugzillaMixin.close_bug): Method to close the bugzilla bug.
(CloseBug): Build step to close bugzilla bug.

10:10 AM Changeset in webkit [256030] by youenn@apple.com
  • 2 edits in trunk/Source/WTF

Mandate UUID version 4 for mDNS ICE candidates
https://bugs.webkit.org/show_bug.cgi?id=207329
<rdar://problem/59221606>

Address post-commit comments from Darin by using isASCIIHexDigit.

Unreviewed.

  • wtf/UUID.cpp:

(WTF::isVersion4UUID):
(WTF::isHexadecimalCharacter): Deleted.

9:54 AM Changeset in webkit [256029] by Russell Epstein
  • 2 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r256017. rdar://problem/59261560

REGRESSION (r255953): [ iOS Mac ] imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=207342
<rdar://problem/59227960>

Reviewed by Youenn Fablet.

DocumentTimeline::detachFromDocument() may remove the last reference to WebAnimation objects that may, in return, remove the last reference of this
DocumentTimeline. As such, this method should make a strong reference to itself for the span of this method. However, we should not be calling it
from the destructor where the only thing matters is removing the weak reference from the Document to the DocumentTimeline.

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

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

9:45 AM Changeset in webkit [256028] by Kocsen Chung
  • 14 edits
    5 deletes in branches/safari-610.1.1-branch

Cherry-pick r255189. rdar://problem/58826101

Unreviewed, revert r253984 as it appears to be causing assertion leaks.
https://bugs.webkit.org/show_bug.cgi?id=205687

Source/WebKit:

  • Configurations/WebKit.xcconfig:
  • Platform/spi/ios/RunningBoardServicesSPI.h: Removed.
  • Scripts/process-entitlements.sh:
  • Shared/DependencyProcessAssertion.cpp: Removed.
  • Shared/DependencyProcessAssertion.h: Removed.
  • Shared/NativeWebTouchEvent.h:
  • Shared/ios/DependencyProcessAssertionIOS.mm: Removed.
  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/WebProcessProxyCocoa.mm: (WebKit::WebProcessProxy::processWasResumed):
  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeConnection):
  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::processTaskStateDidChange): (WebKit::WebProcess::releaseProcessWasResumedAssertions):

WebKitLibraries:

  • WebKitPrivateFrameworkStubs/iOS/13/RunningBoardServices.framework/RunningBoardServices.tbd: Removed.

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

9:24 AM Changeset in webkit [256027] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iOS wk2 ] imported/w3c/web-platform-tests/css/css-transitions/properties-value-002.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207386

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
9:07 AM Changeset in webkit [256026] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] add commit-queue build step to clear flags on patch
https://bugs.webkit.org/show_bug.cgi?id=206536

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(BugzillaMixin): Class for common bugzilla related methods.
(BugzillaMixin.get_bugzilla_api_key): Method to read bugzilla api key from file.
(BugzillaMixin.remove_flags_on_patch): Method to remove flags on patch.
(ValidatePatch):
(RemoveFlagsOnPatch): Class to remove flags on patch.
(RemoveFlagsOnPatch.start):
(ValidatePatch._addToLog): Moved.
(ValidatePatch.fetch_data_from_url): Moved.
(ValidatePatch.get_patch_json): Moved.
(ValidatePatch.get_bug_json): Moved.
(ValidatePatch.get_bug_id_from_patch): Moved.
(ValidatePatch._is_patch_obsolete): Moved.
(ValidatePatch._is_patch_review_denied): Moved.
(ValidatePatch._is_patch_cq_plus): Moved.
(ValidatePatch._is_bug_closed): Moved.

8:50 AM Changeset in webkit [256025] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] http/tests/paymentrequest/page-cache-completed-payment-response.https.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207385

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
8:40 AM Changeset in webkit [256024] by youenn@apple.com
  • 5 edits
    2 adds in trunk

Filter out TURN/STUN .local URLs from a RTCPeerConnection iceServers list
https://bugs.webkit.org/show_bug.cgi?id=207332

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/RTCConfiguration-iceServers-expected.txt:

Rebase tests since we are passing a few more sub tests by converting String to a Vector of one string,
as allowed by the spec and tested by this test.

Source/WebCore:

Test: webrtc/stun-server-filtering.html

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::iceServersFromConfiguration):
Ignore .local URLs for STUN/TURN servers as they are not used right now
and could be used to discover local network services.

LayoutTests:

  • webrtc/stun-server-filtering-expected.txt: Added.
  • webrtc/stun-server-filtering.html: Added.
8:34 AM Changeset in webkit [256023] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

BackgroundProcessResponsivenessTimer should not be active if running active pages and service workers
https://bugs.webkit.org/show_bug.cgi?id=207264

Reviewed by Chris Dumez.

In case a service worker is running, the process might still be foreground if a page is running in the same process.
Not observable.

  • UIProcess/BackgroundProcessResponsivenessTimer.cpp:

(WebKit::BackgroundProcessResponsivenessTimer::shouldBeActive const):

8:29 AM Changeset in webkit [256022] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Address post-landing review comments from Darin on r255989.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::terminateServiceWorkerProcess):

8:19 AM Changeset in webkit [256021] by Jonathan Bedard
  • 5 edits in trunk/Tools

EWS should run resultsdbpy tests
https://bugs.webkit.org/show_bug.cgi?id=201928

Reviewed by Aakash Jain.

  • BuildSlaveSupport/ews-build/factories.py:

(ServicesFactory.init): Add RunResultsdbpyTests.

  • BuildSlaveSupport/ews-build/factories_unittest.py:

(TestTestsFactory.test_services_factory): Add RunResultsdbpyTests.

  • BuildSlaveSupport/ews-build/steps.py:

(CheckPatchRelevance): resultsdbpy changes should trigger service tests.
(RunResultsdbpyTests): Add step which runs resultsdbpy tests.

  • BuildSlaveSupport/ews-build/steps_unittest.py:

(TestRunResultsdbpyTests):
(TestRunResultsdbpyTests.setUp):
(TestRunResultsdbpyTests.tearDown):
(TestRunResultsdbpyTests.test_success):
(TestRunResultsdbpyTests.test_failure):

8:15 AM Changeset in webkit [256020] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC hardening] Update WebPasteboardProxy methods to validate their parameters
https://bugs.webkit.org/show_bug.cgi?id=207308
<rdar://problem/58632938>

Reviewed by Brent Fulgham.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::getPasteboardPathnamesForType):
(WebKit::WebPasteboardProxy::getPasteboardStringForType):
(WebKit::WebPasteboardProxy::getPasteboardStringsForType):
(WebKit::WebPasteboardProxy::getPasteboardBufferForType):
(WebKit::WebPasteboardProxy::setPasteboardStringForType):
(WebKit::WebPasteboardProxy::setPasteboardBufferForType):
(WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite):
(WebKit::WebPasteboardProxy::readStringFromPasteboard):
(WebKit::WebPasteboardProxy::readBufferFromPasteboard):

8:12 AM Changeset in webkit [256019] by Jacob Uphoff
  • 2 edits in trunk/Tools

Adding myself to contributors.json

Unreviewed

  • Scripts/webkitpy/common/config/contributors.json:
7:54 AM Changeset in webkit [256018] by Jason_Lawrence
  • 2 edits in trunk/Tools

Adding myself to contributors.json

Unreviewed

  • Scripts/webkitpy/common/config/contributors.json:
4:53 AM Changeset in webkit [256017] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

REGRESSION (r255953): [ iOS Mac ] imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=207342
<rdar://problem/59227960>

Reviewed by Youenn Fablet.

DocumentTimeline::detachFromDocument() may remove the last reference to WebAnimation objects that may, in return, remove the last reference of this
DocumentTimeline. As such, this method should make a strong reference to itself for the span of this method. However, we should not be calling it
from the destructor where the only thing matters is removing the weak reference from the Document to the DocumentTimeline.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::~DocumentTimeline):
(WebCore::DocumentTimeline::detachFromDocument):

2:42 AM Changeset in webkit [256016] by youenn@apple.com
  • 7 edits in trunk/Source

Mandate UUID version 4 for mDNS ICE candidates
https://bugs.webkit.org/show_bug.cgi?id=207329

Reviewed by Alex Christensen.

Source/WebCore:

Ignore ICE candidates if they are mDNS but not UUID version 4.
Covered by existing tests relying on mDNS to do the connection.

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::shouldIgnoreCandidate):
(WebCore::PeerConnectionBackend::addIceCandidate):

Source/WebKit:

  • NetworkProcess/webrtc/NetworkMDNSRegister.cpp:

(WebKit::NetworkMDNSRegister::registerMDNSName):
Remove the count at the end of the mDNS name to make it a fully version 4 UUID.

Source/WTF:

Add a routine to validate version 4 UUID.

  • wtf/UUID.cpp:

(WTF::isHexadecimalCharacter):
(WTF::isVersion4UUID):

  • wtf/UUID.h:
2:06 AM Changeset in webkit [256015] by ysuzuki@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

[JSC] CodeBlock::shrinkToFit should shrink m_constantRegisters and m_constantsSourceCodeRepresentation in 64bit architectures
https://bugs.webkit.org/show_bug.cgi?id=207356

Reviewed by Mark Lam.

Only 32bit architectures are using m_constantRegisters's address. 64bit architectures are not relying on m_constantRegisters's address.
This patches fixes the thing so that CodeBlock::shrinkToFit will shrink m_constantRegisters and m_constantsSourceCodeRepresentation
regardless of whether this is EarlyShrink or not. We also move DFG/FTL's LateShrink call to the place after calling DFGCommon reallyAdd
since they can add more constant registers.

Relanding it by fixing dead-lock.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::shrinkToFit):

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

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

  • dfg/DFGJITFinalizer.cpp:

(JSC::DFG::JITFinalizer::finalizeCommon):

  • dfg/DFGPlan.cpp:

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

  • jit/JIT.cpp:

(JSC::JIT::link):

  • jit/JIT.h:
  • jit/JITInlines.h:

(JSC::JIT::emitLoadDouble):
(JSC::JIT::emitLoadInt32ToDouble): Deleted.

2:01 AM Changeset in webkit [256014] by commit-queue@webkit.org
  • 7 edits
    1 add in trunk

[OpenSSL] Implement WebCrypto APIs for AES-CBC, AES-CFB and AES-GCM
https://bugs.webkit.org/show_bug.cgi?id=207176

Patch by Tomoki Imai <Tomoki Imai> on 2020-02-07
Reviewed by Fujii Hironori.

Source/WebCore:

Add WebCrypto implementations for the following algorithms with OpenSSL.

  • AES_CBC
  • AES_CFB
  • AES_GCM

Currently we don't have AES-KW implementation, because EVP API doesn't have AES-KW implementation.

Enabled WebCrypto LayoutTests for AES-CBC, AES-CFB and AES-GCM.

  • crypto/openssl/CryptoAlgorithmAES_CBCOpenSSL.cpp:

(WebCore::aesAlgorithm): Added. Helper function to select which AES-CBC algorithm to be used by checking key size.
(WebCore::cryptEncrypt): Added. Helper function for platformEncrypt.
(WebCore::cryptDecrypt): Added. Helper function for platformDecrypt.
(WebCore::CryptoAlgorithmAES_CBC::platformEncrypt): Implemented
(WebCore::CryptoAlgorithmAES_CBC::platformDecrypt): Implemented

  • crypto/openssl/CryptoAlgorithmAES_CFBOpenSSL.cpp:

(WebCore::aesAlgorithm): Added. Helper function to select which AES-CFB algorithm to be used by checking key size.
(WebCore::cryptEncrypt): Added. Helper function for platformEncrypt.
(WebCore::cryptDecrypt): Added. Helper function for platformDecrypt.
(WebCore::CryptoAlgorithmAES_CFB::platformEncrypt): Implemented
(WebCore::CryptoAlgorithmAES_CFB::platformDecrypt): Implemented

  • crypto/openssl/CryptoAlgorithmAES_GCMOpenSSL.cpp:

(WebCore::aesAlgorithm): Added. Helper function to select which AES-GCM algorithm to be used by checking key size.
(WebCore::cryptEncrypt): Added. Helper function for platformEncrypt.
(WebCore::cryptDecrypt): Added. Helper function for platformDecrypt.
(WebCore::CryptoAlgorithmAES_GCM::platformEncrypt): Implemented
(WebCore::CryptoAlgorithmAES_GCM::platformDecrypt): Implemented

  • crypto/openssl/CryptoAlgorithmRegistryOpenSSL.cpp:

(WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms): Registered CryptoAlgorithmAES_CBC, CryptoAlgorithmAES_CFB,
and CryptoAlgorithmAES_GCM.

  • crypto/openssl/OpenSSLCryptoUniquePtr.h: Added to make sure that EVP_CIPHER_CTX is freed.

(WebCore::OpenSSLCryptoPtrDeleter<EVP_CIPHER_CTX>::operator() const):

LayoutTests:

Enabled WebCrypto LayoutTests for AES-CBC, AES-CFB and AES-GCM along with the implementation.

  • platform/wincairo/TestExpectations:
1:39 AM Changeset in webkit [256013] by Patrick Griffis
  • 16 edits in trunk

[GTK][WPE] Add same-site cookie support
https://bugs.webkit.org/show_bug.cgi?id=204137

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Implements same-site cookie support in the soup backend.

  • platform/network/HTTPParsers.cpp:

(WebCore::isSafeMethod):

  • platform/network/HTTPParsers.h:
  • platform/network/SameSiteInfo.cpp:

(WebCore::SameSiteInfo::create):

  • platform/network/SameSiteInfo.h:

(WebCore::SameSiteInfo::encode const):
(WebCore::SameSiteInfo::decode):

  • platform/network/soup/CookieSoup.cpp:

(WebCore::coreSameSitePolicy):
(WebCore::soupSameSitePolicy):
(WebCore::Cookie::Cookie):
(WebCore::Cookie::toSoupCookie const):

  • platform/network/soup/NetworkStorageSessionSoup.cpp:

(WebCore::NetworkStorageSession::getRawCookies const):
(WebCore::cookiesForSession):
(WebCore::NetworkStorageSession::cookiesForDOM const):
(WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const):

  • platform/network/soup/ResourceRequestSoup.cpp:

(WebCore::ResourceRequest::updateSoupMessageMembers const):
(WebCore::ResourceRequest::updateFromSoupMessage):

Source/WebKit:

Implements same-site cookie support in the soup backend.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):

Tools:

Update libsoup to 2.69.90 in JHBuild.

  • gtk/jhbuild.modules:
  • wpe/jhbuild.modules:

LayoutTests:

Updated GTK/WPE test expectations to pass most same-site cookie tests
matching the Apple ports.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
1:11 AM Changeset in webkit [256012] by commit-queue@webkit.org
  • 25 edits in trunk

Fix fetch/api/policies/referrer-origin-worker.html
https://bugs.webkit.org/show_bug.cgi?id=206520

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

LayoutTests/imported/w3c:

Updated improved test result.

  • web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-worker-expected.txt:
  • web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt:

Source/WebCore:

Expose referrer policy as part of the worker global scope [1] through
the new ScriptExecutionContext::referrerPolicy method.
Call it as environment settings object when starting a fetch in case
the FetchRequestInit has no referrerPolicy set [2].

Test: imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-worker.html

[1] https://html.spec.whatwg.org/multipage/workers.html#set-up-a-worker-environment-settings-object
[2] https://fetch.spec.whatwg.org/#ref-for-concept-main-fetch① (Step 2.5)

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::start):

  • dom/Document.h:

(WebCore::Document::referrerPolicy const): Deleted.

  • dom/ScriptExecutionContext.h:
  • workers/DedicatedWorkerGlobalScope.cpp:

(WebCore::DedicatedWorkerGlobalScope::create):
(WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):

  • workers/DedicatedWorkerGlobalScope.h:
  • workers/DedicatedWorkerThread.cpp:

(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope):

  • workers/DedicatedWorkerThread.h:
  • workers/Worker.cpp:

(WebCore::Worker::notifyFinished):

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::referrerPolicy const):

  • workers/WorkerGlobalScope.h:
  • workers/WorkerGlobalScopeProxy.h:
  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):

  • workers/WorkerMessagingProxy.h:
  • workers/WorkerThread.cpp:

(WebCore::WorkerParameters::isolatedCopy const):
(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::workerThread):

  • workers/WorkerThread.h:
  • workers/service/ServiceWorkerGlobalScope.cpp:

(WebCore::ServiceWorkerGlobalScope::create):
(WebCore::ServiceWorkerGlobalScope::ServiceWorkerGlobalScope):

  • workers/service/ServiceWorkerGlobalScope.h:
  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::ServiceWorkerThread):
(WebCore::ServiceWorkerThread::createWorkerGlobalScope):

  • workers/service/context/ServiceWorkerThread.h:
  • worklets/WorkletGlobalScope.cpp:

(WebCore::WorkletGlobalScope::referrerPolicy const):

  • worklets/WorkletGlobalScope.h:
12:55 AM Changeset in webkit [256011] by ysuzuki@apple.com
  • 4 edits in trunk

Unreviewed, revert 75% load-factor because of JetStream2/string-unpack-code-SP regression
https://bugs.webkit.org/show_bug.cgi?id=207183

Source/WTF:

  • wtf/HashTable.h:

(WTF::HashTable::shouldExpand const):
(WTF::KeyTraits>::computeBestTableSize):
(WTF::HashTable::shouldExpand): Deleted.
(WTF::HashTableCapacityForSize::capacityForSize): Deleted.

Tools:

  • TestWebKitAPI/Tests/WTF/HashSet.cpp:

(TestWebKitAPI::testInitialCapacity):

12:48 AM Changeset in webkit [256010] by youenn@apple.com
  • 30 edits
    1 copy
    7 adds in trunk

[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
https://bugs.webkit.org/show_bug.cgi?id=206582
Source/WebCore:

<rdar://problem/58985368>

Reviewed by Eric Carlson.

AVAssetWriterDelegate allows to grab recorded data whenever wanted.
This delegate requires passing compressed samples to AVAssetWriter.
Implement video encoding and audio encoding in dedicated classes and use these classes before adding buffers to AVAssetWriter.
These classes are AudioSampleBufferCompressor and VideoSampleBufferCompressor.
They support AAC and H264 so far and should be further improved to support more encoding options.

Instantiate real writer only for platforms supporting AVAssetWriterDelegate, since it is not supported everywhere.
The writer, doing the pacakging, is receiving compressed buffer from the audio/video compressors.
It then sends data when being request to flush to its delegate, which will send data to the MediaRecorderPrivateWriter.
The MediaRecorderPrivateWriter stores the data in a SharedBuffer until MediaRecorder asks for data.

Note that, whenever we request data, we flush the writer and insert an end of video sample to make sure video data gets flushed.
Therefore data should not be requested too fast to get adequate video compression.

Covered by existing tests.

  • Modules/mediarecorder/MediaRecorderProvider.cpp:

(WebCore::MediaRecorderProvider::createMediaRecorderPrivate):

  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::create):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.h: Added.
  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm: Added.

(WebCore::AudioSampleBufferCompressor::create):
(WebCore::AudioSampleBufferCompressor::AudioSampleBufferCompressor):
(WebCore::AudioSampleBufferCompressor::~AudioSampleBufferCompressor):
(WebCore::AudioSampleBufferCompressor::initialize):
(WebCore::AudioSampleBufferCompressor::finish):
(WebCore::AudioSampleBufferCompressor::initAudioConverterForSourceFormatDescription):
(WebCore::AudioSampleBufferCompressor::computeBufferSizeForAudioFormat):
(WebCore::AudioSampleBufferCompressor::attachPrimingTrimsIfNeeded):
(WebCore::AudioSampleBufferCompressor::gradualDecoderRefreshCount):
(WebCore::AudioSampleBufferCompressor::sampleBufferWithNumPackets):
(WebCore::AudioSampleBufferCompressor::audioConverterComplexInputDataProc):
(WebCore::AudioSampleBufferCompressor::provideSourceDataNumOutputPackets):
(WebCore::AudioSampleBufferCompressor::processSampleBuffersUntilLowWaterTime):
(WebCore::AudioSampleBufferCompressor::processSampleBuffer):
(WebCore::AudioSampleBufferCompressor::addSampleBuffer):
(WebCore::AudioSampleBufferCompressor::getOutputSampleBuffer):
(WebCore::AudioSampleBufferCompressor::takeOutputSampleBuffer):

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(-[WebAVAssetWriterDelegate initWithWriter:]):
(-[WebAVAssetWriterDelegate assetWriter:didProduceFragmentedHeaderData:]):
(-[WebAVAssetWriterDelegate assetWriter:didProduceFragmentedMediaData:fragmentedMediaDataReport:]):
(-[WebAVAssetWriterDelegate close]):
(WebCore::MediaRecorderPrivateWriter::create):
(WebCore::MediaRecorderPrivateWriter::compressedVideoOutputBufferCallback):
(WebCore::MediaRecorderPrivateWriter::compressedAudioOutputBufferCallback):
(WebCore::MediaRecorderPrivateWriter::MediaRecorderPrivateWriter):
(WebCore::MediaRecorderPrivateWriter::~MediaRecorderPrivateWriter):
(WebCore::MediaRecorderPrivateWriter::initialize):
(WebCore::MediaRecorderPrivateWriter::processNewCompressedVideoSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::processNewCompressedAudioSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::startAssetWriter):
(WebCore::MediaRecorderPrivateWriter::appendCompressedAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendCompressedVideoSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendCompressedSampleBuffers):
(WebCore::appendEndsPreviousSampleDurationMarker):
(WebCore::MediaRecorderPrivateWriter::appendEndOfVideoSampleDurationIfNeeded):
(WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::clear):
(WebCore::copySampleBufferWithCurrentTimeStamp):
(WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):
(WebCore::createAudioFormatDescription):
(WebCore::createAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::stopRecording):
(WebCore::MediaRecorderPrivateWriter::appendData):

  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.h: Copied from Source/WebCore/platform/mediarecorder/MediaRecorderPrivateAVFImpl.h.
  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm: Added.

(WebCore::VideoSampleBufferCompressor::create):
(WebCore::VideoSampleBufferCompressor::VideoSampleBufferCompressor):
(WebCore::VideoSampleBufferCompressor::~VideoSampleBufferCompressor):
(WebCore::VideoSampleBufferCompressor::initialize):
(WebCore::VideoSampleBufferCompressor::finish):
(WebCore::VideoSampleBufferCompressor::videoCompressionCallback):
(WebCore::VideoSampleBufferCompressor::initCompressionSession):
(WebCore::VideoSampleBufferCompressor::processSampleBuffer):
(WebCore::VideoSampleBufferCompressor::addSampleBuffer):
(WebCore::VideoSampleBufferCompressor::getOutputSampleBuffer):
(WebCore::VideoSampleBufferCompressor::takeOutputSampleBuffer):

Source/WebCore/PAL:

<rdar://problem/58985368>

Reviewed by Eric Carlson.

Add soft link macros for VideoToolbox and AudioToolbox.

  • PAL.xcodeproj/project.pbxproj:
  • pal/cf/AudioToolboxSoftLink.cpp: Added.
  • pal/cf/AudioToolboxSoftLink.h: Added.
  • pal/cf/CoreMediaSoftLink.cpp:
  • pal/cf/CoreMediaSoftLink.h:
  • pal/cf/VideoToolboxSoftLink.cpp: Added.
  • pal/cf/VideoToolboxSoftLink.h: Added.

Source/WebKit:

<rdar://problem/58985368>

Reviewed by Eric Carlson.

Enable RemoteMediaRecorder only for systems supporting AVAssetWriterDelegate.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::didReceiveMessage):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:
  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.cpp:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.h:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.messages.in:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.h:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:
  • WebProcess/GPU/webrtc/MediaRecorderProvider.cpp:

(WebKit::MediaRecorderProvider::createMediaRecorderPrivate):

Source/WTF:

Reviewed by Eric Carlson.

  • wtf/PlatformHave.h:

LayoutTests:

Reviewed by Eric Carlson.

Disable tests on all platforms except the ones supporting AVAssetWriterDelegate.

  • TestExpectations:
  • http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-gpuprocess.html:

Remove web audio generation since there seems to be some unstability in web audio -> stream -> media recorder.
which should be fixed as follow-up specific patches.

  • platform/mac/TestExpectations:

Enable running tests.

12:46 AM Changeset in webkit [256009] by youenn@apple.com
  • 4 edits
    3 adds in trunk

Do not process newly gathered ICE candidates if document is suspended
https://bugs.webkit.org/show_bug.cgi?id=207326
<rdar://problem/57336453>

Reviewed by Alex Christensen.

Source/WebCore:

We should not register MDNS candidates for suspended documents.
For that reason, enqueue a task when receiving a new candidate.
If document is not suspended, it will be executed immediately.
Otherwise, we will wait until document gets unsuspended.

Add a mock endpoint that delays gathering of candidates until document is suspended.

Test: webrtc/peerconnection-new-candidate-page-cache.html

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::newICECandidate):

  • testing/MockLibWebRTCPeerConnection.cpp:

(WebCore::MockLibWebRTCPeerConnection::GetTransceivers const):
(WebCore::MockLibWebRTCPeerConnectionForIceCandidates::MockLibWebRTCPeerConnectionForIceCandidates):
(WebCore::MockLibWebRTCPeerConnectionForIceCandidates::gotLocalDescription):
(WebCore::MockLibWebRTCPeerConnectionForIceCandidates::sendCandidates):
(WebCore::MockLibWebRTCPeerConnectionFactory::CreatePeerConnection):

LayoutTests:

  • fast/history/resources/page-cache-helper-100ms.html: Added.
  • webrtc/peerconnection-new-candidate-page-cache-expected.txt: Added.
  • webrtc/peerconnection-new-candidate-page-cache.html: Added.

Feb 6, 2020:

9:53 PM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
9:52 PM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
9:19 PM Changeset in webkit [256008] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r254534): 1-3% regression on PLT
https://bugs.webkit.org/show_bug.cgi?id=207244

Can't put null strings into hash maps.

Reviewed by Wenson Hsieh.

  • platform/text/cocoa/LocaleCocoa.mm:

(WebCore::LocaleCocoa::canonicalLanguageIdentifierFromString):

8:12 PM Changeset in webkit [256007] by mmaxfield@apple.com
  • 7 edits
    2 moves
    1 add in trunk/Source/WebCore

[Cocoa] Rename LocaleMac to LocaleCocoa
https://bugs.webkit.org/show_bug.cgi?id=207371

Reviewed by Simon Fraser.

It's used by all the Cocoa platforms.

No new tests because there is no behavior change.

  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.order:
  • WebCore.xcodeproj/project.pbxproj:
  • page/cocoa/MemoryReleaseCocoa.mm:

(WebCore::platformReleaseMemory):

  • platform/graphics/cocoa/FontCocoa.mm:

(WebCore::Font::applyTransforms const):

  • platform/text/cocoa/LocaleCocoa.h: Renamed from Source/WebCore/platform/text/mac/LocaleMac.h.
  • platform/text/mac/LocaleMac.mm: Removed.
7:45 PM Changeset in webkit [256006] by Fujii Hironori
  • 2 edits in trunk/Source/WebInspectorUI

[Web Inspector][WinCairo] Selecting an error message in Console causes "TypeError:​ selection.focusNode.closest is not a function."
https://bugs.webkit.org/show_bug.cgi?id=207248

Reviewed by Devin Rousso.

r242174 replaced Node.enclosingNodeOrSelfWithClass with
Element.closest. However, selection.focusNode isn't necessarily an
Element, but can be a Text node.

  • UserInterface/Views/LogContentView.js:

(WI.LogContentView.prototype._mousemove): Use selection.focusNode.parentElement.closest
if selection.focusNode is not a instance of Element.

7:30 PM Changeset in webkit [256005] by timothy_horton@apple.com
  • 6 edits in trunk/Source

macCatalyst: Unnecessary I-beam over images in editable areas
https://bugs.webkit.org/show_bug.cgi?id=207370
<rdar://problem/59235429>

Reviewed by Wenson Hsieh.

Source/WebCore:

  • dom/Position.h:

Source/WebKit:

  • Shared/ios/InteractionInformationAtPosition.h:
  • Shared/ios/InteractionInformationAtPosition.mm:

(WebKit::InteractionInformationAtPosition::encode const):
(WebKit::InteractionInformationAtPosition::decode):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::populateCaretContext):
Add a bit indicating whether the forced I-beam for editable contexts
should be used or not, based on whether it is adjacent to (or immediately
over) a replaced element.

7:27 PM Changeset in webkit [256004] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

Build entitlements into GPU Process
https://bugs.webkit.org/show_bug.cgi?id=207367
<rdar://problem/59208411>

Reviewed by Geoffrey Garen.

When the new GPU process was added, we did not update the build system to add
necessary entitlements, or to encode the sandbox name for process startup.
This patch corrects these issues.

  • Scripts/process-entitlements.sh:
7:12 PM Changeset in webkit [256003] by rmorisset@apple.com
  • 27 edits in trunk/Source/JavaScriptCore

Most of B3 and Air does not need to include CCallHelpers.h
https://bugs.webkit.org/show_bug.cgi?id=206975

Reviewed by Mark Lam.

They only do to use CCallHelpers::Jump or CCallHelpers::Label.
But CCallHelpers inherit those from MacroAssembler. And MacroAssembler.h is dramatically cheaper to include (since CCallHelpers includes AssemblyHelpers which includes CodeBlock.h which includes roughly the entire runtime).

  • b3/B3CheckSpecial.cpp:
  • b3/B3CheckSpecial.h:
  • b3/B3LowerMacros.cpp:
  • b3/B3PatchpointSpecial.cpp:

(JSC::B3::PatchpointSpecial::generate):

  • b3/B3PatchpointSpecial.h:
  • b3/B3StackmapGenerationParams.cpp:

(JSC::B3::StackmapGenerationParams::successorLabels const):

  • b3/B3StackmapGenerationParams.h:
  • b3/air/AirAllocateRegistersAndStackAndGenerateCode.h:
  • b3/air/AirCCallSpecial.cpp:
  • b3/air/AirCCallSpecial.h:
  • b3/air/AirCode.cpp:
  • b3/air/AirCode.h:

(JSC::B3::Air::Code::entrypointLabel const):

  • b3/air/AirCustom.cpp:

(JSC::B3::Air::CCallCustom::generate):
(JSC::B3::Air::ShuffleCustom::generate):
(JSC::B3::Air::WasmBoundsCheckCustom::generate):

  • b3/air/AirCustom.h:

(JSC::B3::Air::PatchCustom::generate):
(JSC::B3::Air::EntrySwitchCustom::generate):

  • b3/air/AirDisassembler.cpp:

(JSC::B3::Air::Disassembler::addInst):

  • b3/air/AirDisassembler.h:
  • b3/air/AirGenerationContext.h:
  • b3/air/AirInst.h:
  • b3/air/AirPrintSpecial.cpp:

(JSC::B3::Air::PrintSpecial::generate):

  • b3/air/AirPrintSpecial.h:
  • b3/air/AirSpecial.h:
  • b3/air/AirValidate.cpp:
  • b3/air/opcode_generator.rb:
7:08 PM Changeset in webkit [256002] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WebKit

ResourceLoadStatisticsDatabaseStore::dumpResourceLoadStatistics relies on the order of m_getAllDomainsStatement, which can be changed by HashTable's implementation
https://bugs.webkit.org/show_bug.cgi?id=207348

Reviewed by Mark Lam.

It turns out that ResourceLoadStatisticsDatabaseStore::dumpResourceLoadStatistics's output
is relying on HashTable's particular iteration order which is not guaranteed.
This patch fixes this assumption by sorting domains before dumping.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::CompletionHandler<void):

6:57 PM Changeset in webkit [256001] by jiewen_tan@apple.com
  • 5 edits in trunk

[WebAuthn] authenticatorGetAssertion should be sent without pinAuth if UV = "discouraged"
https://bugs.webkit.org/show_bug.cgi?id=206547
<rdar://problem/58768032>

Reviewed by Brent Fulgham.

Source/WebKit:

Covered by new tests within existing files.

  • UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:

(WebKit::CtapAuthenticator::makeCredential):
(WebKit::CtapAuthenticator::getAssertion):

LayoutTests:

  • http/wpt/webauthn/public-key-credential-get-success-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-success-hid.https.html:
6:54 PM Changeset in webkit [256000] by wenson_hsieh@apple.com
  • 6 edits
    1 add in trunk

WebPage::rangeForGranularityAtPoint always returns null in the case of CharacterGranularity
https://bugs.webkit.org/show_bug.cgi?id=207350
<rdar://problem/59239914>

Reviewed by Tim Horton.

Source/WebKit:

Handle the character granularity case in WebPage::rangeForGranularityAtPoint by just returning a collapsed
Range. Certain internal clients will have a need to place and update the text selection using character
granularity; see radar for more details.

Test: UIWKInteractionViewProtocol.SelectTextWithCharacterGranularity

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView supportsTextSelectionWithCharacterGranularity]):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::rangeForGranularityAtPoint):

Tools:

Add a test to exercise the corner case in the SPI.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/ios/UIWKInteractionViewProtocol.mm: Added.
6:38 PM Changeset in webkit [255999] by jiewen_tan@apple.com
  • 7 edits in trunk

Adopt new SOAuthorizationOption constants
https://bugs.webkit.org/show_bug.cgi?id=207186
<rdar://problem/48909336>

Reviewed by Brent Fulgham.

Source/WebCore/PAL:

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

Soft links the new constants.

Source/WebKit:

No change of behaviors.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:

(WebKit::SOAuthorizationSession::continueStartAfterDecidePolicy):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(checkAuthorizationOptions):

6:26 PM Changeset in webkit [255998] by beidson@apple.com
  • 11 edits
    2 moves
    1 add
    1 delete in trunk

Cleanup and promote WKContentWorld and its clients in WKWebView.
https://bugs.webkit.org/show_bug.cgi?id=207351

Reviewed by Alex Christensen.

Source/WebKit:

Renames and updated comments.

API tests updated.

  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

  • SourcesCocoa.txt:
  • UIProcess/API/Cocoa/WKContentWorld.h: Renamed from Source/WebKit/UIProcess/API/Cocoa/_WKContentWorld.h.
  • UIProcess/API/Cocoa/WKContentWorld.mm: Renamed from Source/WebKit/UIProcess/API/Cocoa/_WKContentWorld.mm.

(+[WKContentWorld pageWorld]):
(+[WKContentWorld defaultClientWorld]):
(+[WKContentWorld worldWithName:]):
(-[WKContentWorld dealloc]):
(-[WKContentWorld name]):
(-[WKContentWorld _apiObject]):

  • UIProcess/API/Cocoa/WKContentWorldInternal.h: Renamed from Source/WebKit/UIProcess/API/Cocoa/_WKContentWorldInternal.h.
  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView evaluateJavaScript:completionHandler:]):
(-[WKWebView evaluateJavaScript:inContentWorld:completionHandler:]):
(-[WKWebView callAsyncJavaScript:arguments:inContentWorld:completionHandler:]):
(-[WKWebView _evaluateJavaScript:asAsyncFunction:withArguments:forceUserGesture:completionHandler:inWorld:]):
(-[WKWebView _evaluateJavaScriptWithoutUserGesture:completionHandler:]):
(-[WKWebView _callAsyncJavaScriptFunction:withArguments:inWorld:completionHandler:]): Deleted.
(-[WKWebView _evaluateJavaScript:inWorld:completionHandler:]): Deleted.

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

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/AsyncFunction.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:

(TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[WKWebView objectByCallingAsyncFunction:withArguments:error:]):

6:09 PM Changeset in webkit [255997] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Incorrect TextTrack sorting with invalid BCP47 language
https://bugs.webkit.org/show_bug.cgi?id=207315

Patch by Doug Kelly <dougk@apple.com> on 2020-02-06
Reviewed by Jer Noble.

When comparing TextTracks, this ensures all tracks are compared based on consistent parameters, including tracks with an invalid BCP47
language attribute.

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::textTrackCompare):

6:07 PM Changeset in webkit [255996] by Antti Koivisto
  • 1 edit
    2 adds in trunk/LayoutTests

Add slot based test for the accelerated animations freezing bug (201048)
https://bugs.webkit.org/show_bug.cgi?id=207359

Reviewed by Ryosuke Niwa.

201048 had a simpler test case but it is good to add one for the original problem too.

Based on the original test by Tim Guan-tin Chien.

  • webanimations/accelerated-animation-slot-invalidation-expected.html: Added.
  • webanimations/accelerated-animation-slot-invalidation.html: Added.
5:41 PM Changeset in webkit [255995] by Fujii Hironori
  • 9 edits in trunk

[Win][MiniBrowser] Accelerator keys don't work unless the main window is focused
https://bugs.webkit.org/show_bug.cgi?id=207250

Reviewed by Alex Christensen.

Source/WebKit:

  • UIProcess/win/WebView.cpp:

(WebKit::WebView::wndProc): Bubble up unhandled WM_COMMAND to the
parent window.

Tools:

MiniBrowser has shortcut keys, Ctrl-W to close window, Ctrl-R to
reload. However, they don't work unless the main window is
focused.

Ctrl-W should be processed differently. Ctrl-W should be handled
without dispatching to WebKit, others should be handled only when
WebKit didn't consume. So, this change split the accelerator table
into two, one is for Ctrl-W, another is for other shortcut keys.

For Ctrl-W, key events are processed before dispatching to
WebView. It is converted to IDM_CLOSE_WINDOW of WM_COMMAND, and
dispatched to WebView. WebKit2 WebView bubbles up unhandled
WM_COMMAND to the parent window. Then, IDM_CLOSE_WINDOW is handled
in the main window's WndProc. However, it doesn't work for WebKit1
because this change doesn't add the bubbling up code to WebKit1
WebView.

For other shortcut keys, for example Ctrl-R, key events are
dispatched to WebView without accelerator key translations. Then,
WebKitBrowserWindow::didNotHandleKeyEvent is called back if they
aren't consumed. didNotHandleKeyEvent posts the messasge to the
main window. The message loop processed key events dispatched to
the main window with another accelerator table. However, it
doesn't work for WebKit1, because WebKit1 doesn't have a API
equivalent to didNotHandleKeyEvent.

After switching the active window by pressing Alt-Tab and
reactivating the main window, the main window got the focus. This
was the reason shortcut keys worked only after reactivating the
main window. But, this is not the desired behavior after this
change because other shortcut keys don't work if the main window
is focused. So. set the focus to the brower window when
WM_ACTIVATE of the main window.

Shortcut keys Ctrl++ (zoom in) and Ctrl+- (zoom out) were
effective only for keyboard numpad. Add VK_OEM_MINUS and
VK_OEM_PLUS for them.

Add a shortcut key Ctrl-0 to reset page zoom scale to actual.

  • MiniBrowser/win/MainWindow.cpp:

(MainWindow::isInstance):
(MainWindow::WndProc):

  • MiniBrowser/win/MainWindow.h:
  • MiniBrowser/win/MiniBrowserLib.rc: Add a new accelerator table

IDR_ACCELERATORS_PRE for Ctrl-W.

  • MiniBrowser/win/MiniBrowserLibResource.h:
  • MiniBrowser/win/WebKitBrowserWindow.cpp:

(WebKitBrowserWindow::didNotHandleKeyEvent):

  • MiniBrowser/win/WinMain.cpp:

(wWinMain):

5:32 PM Changeset in webkit [255994] by Ryan Haddad
  • 9 edits in trunk/Source/JavaScriptCore

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

JSTests failures (Requested by yusukesuzuki on #webkit).

Reverted changeset:

"[JSC] CodeBlock::shrinkToFit should shrink
m_constantRegisters and m_constantsSourceCodeRepresentation in
64bit architectures"
https://bugs.webkit.org/show_bug.cgi?id=207356
https://trac.webkit.org/changeset/255987

Patch by Commit Queue <commit-queue@webkit.org> on 2020-02-06

4:59 PM Changeset in webkit [255993] by mark.lam@apple.com
  • 2 edits in trunk/Source/WTF

Add a comment in StringView::setUnderlyingString(const StringView&) for clarification.
https://bugs.webkit.org/show_bug.cgi?id=207368
<rdar://problem/59211075>

Reviewed by Keith Miller.

Every time I read this code, I have to re-deduce why this code is thread safe.
So, I'm just going to add a comment to document it.

  • wtf/text/StringView.cpp:

(WTF::StringView::setUnderlyingString):

4:44 PM Changeset in webkit [255992] by Chris Dumez
  • 14 edits in trunk/Source/WebKit

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

Reviewed by Geoff Garen.

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

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

  • UIProcess/API/APINavigation.h:

(API::Navigation::setForegroundActivity):

  • UIProcess/API/APIPageConfiguration.cpp:

(API::PageConfiguration::copy const):

  • UIProcess/API/APIPageConfiguration.h:

(API::PageConfiguration::clientNavigationsRunAtForegroundPriority const):
(API::PageConfiguration::setClientNavigationsRunAtForegroundPriority):
(API::PageConfiguration::alwaysRunsAtForegroundPriority const):
(API::PageConfiguration::alwaysRunsAtForegroundPriority): Deleted.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _clientNavigationsRunAtForegroundPriority]):
(-[WKWebViewConfiguration _setClientNavigationsRunAtForegroundPriority:]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::loadData):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didFinishLoadForFrame):
(WebKit::WebPageProxy::didFailLoadForFrame):

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

(WebKit::PageClientImpl::isApplicationVisible):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::shouldUseForegroundPriorityForClientNavigation const):

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

[ Mac ] inspector/css/pseudo-creation.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207363

Unreviewed test gardening.

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

  • platform/mac/TestExpectations:
3:39 PM Changeset in webkit [255990] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

webgl/1.0.3/conformance/glsl/misc/shader-with-reserved-words.html is timing out on some hardware configurations
https://bugs.webkit.org/show_bug.cgi?id=205739

Patch by James Darpinian <James Darpinian> on 2020-02-06
Reviewed by Dean Jackson.

Optimize disabling ANGLE_texture_rectangle.

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::compileShader):

3:35 PM Changeset in webkit [255989] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

REGRESSION (r254706): Crash under WebProcessPool::terminateServiceWorkerProcess()
https://bugs.webkit.org/show_bug.cgi?id=207354
<rdar://problem/59184818>

Reviewed by Geoffrey Garen.

No new tests, not easily testable AFAIK since this happens on failure to send sync IPC to
the service worker when terminating it.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::terminateServiceWorkerProcess):
'auto' resolved to 'WeakPtr<WebProcessProxy>' in this method and the call to
disableServiceWorkers() could cause the process to get destroyed. We would then
do a null dereference on the next line.

3:31 PM Changeset in webkit [255988] by mmaxfield@apple.com
  • 12 edits in trunk

REGRESSION(r254534): 1-3% regression on PLT
https://bugs.webkit.org/show_bug.cgi?id=207244
<rdar://problem/58821709>

Reviewed by Simon Fraser.

Source/WebCore:

Turns out CTFontTransformGlyphsWithLanguage() is 33.7% slower than CTFontTransformGlyphs() on some OSes.
This patch changes the preprocessor guards to not use the function on those OSes.
Also, the contract of the function on the more performant OSes requires that the locale name be canonicalized,
so this patch implements a canonical locale cache inside LocaleMac.mm. It gets cleared when the low memory
warning is fired.

Marked existing tests as failing.

  • page/cocoa/MemoryReleaseCocoa.mm:

(WebCore::platformReleaseMemory):

  • platform/graphics/cocoa/FontCocoa.mm:

(WebCore::Font::applyTransforms const):

  • platform/graphics/mac/SimpleFontDataCoreText.cpp:

(WebCore::Font::getCFStringAttributes const):

  • platform/text/mac/LocaleMac.h:
  • platform/text/mac/LocaleMac.mm:

(WebCore::determineLocale):
(WebCore::canonicalLocaleMap):
(WebCore::LocaleMac::canonicalLanguageIdentifierFromString):
(WebCore::LocaleMac::releaseMemory):

Source/WTF:

CTFontTransformGlyphsWithLanguage() is only acceptable on certain OSes.

  • wtf/PlatformHave.h:

LayoutTests:

Mark the tests as failing on certain OSes.

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
3:25 PM Changeset in webkit [255987] by ysuzuki@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

[JSC] CodeBlock::shrinkToFit should shrink m_constantRegisters and m_constantsSourceCodeRepresentation in 64bit architectures
https://bugs.webkit.org/show_bug.cgi?id=207356

Reviewed by Mark Lam.

Only 32bit architectures are using m_constantRegisters's address. 64bit architectures are not relying on m_constantRegisters's address.
This patches fixes the thing so that CodeBlock::shrinkToFit will shrink m_constantRegisters and m_constantsSourceCodeRepresentation
regardless of whether this is EarlyShrink or not. We also move DFG/FTL's LateShrink call to the place after calling DFGCommon reallyAdd
since they can add more constant registers.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::shrinkToFit):

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

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

  • dfg/DFGJITFinalizer.cpp:

(JSC::DFG::JITFinalizer::finalizeCommon):

  • dfg/DFGPlan.cpp:

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

  • jit/JIT.cpp:

(JSC::JIT::link):

  • jit/JIT.h:
  • jit/JITInlines.h:

(JSC::JIT::emitLoadDouble):
(JSC::JIT::emitLoadInt32ToDouble): Deleted.

3:17 PM Changeset in webkit [255986] by Devin Rousso
  • 5 edits in trunk

Web Inspector: show JavaScript Worker terminated state as an internal property
https://bugs.webkit.org/show_bug.cgi?id=207347

Reviewed by Brian Burg.

Source/WebCore:

Test: inspector/worker/worker-create-and-terminate.html

  • inspector/WebInjectedScriptHost.cpp:

(WebCore::WebInjectedScriptHost::getInternalProperties):

  • workers/Worker.h:

(WebCore::Worker::wasTerminated): Added.

LayoutTests:

  • inspector/worker/worker-create-and-terminate.html:

Add assertions throughout the test to check that the terminated value matches what the
frontend knows.

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

Regression: fast/hidpi/image-srcset-svg-canvas-2x.html is failing consistently on iOS EWS
https://bugs.webkit.org/show_bug.cgi?id=207038

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
2:32 PM Changeset in webkit [255984] by Jonathan Bedard
  • 2 edits in trunk/Tools

results.webkitorg: Dead CI links
https://bugs.webkit.org/show_bug.cgi?id=207340

Reviewed by Alexey Proskuryakov.

  • resultsdbpy/resultsdbpy/view/static/js/configuration.js:

(Configuration.prototype.toParams): Version name and version number often duplicate the
same information, exception version number is often more specific than is useful.

2:31 PM Changeset in webkit [255983] by chris.reid@sony.com
  • 2 edits in trunk/Source/WebCore

[curl] PublicSuffixCurl should skip leading dots
https://bugs.webkit.org/show_bug.cgi?id=206954

Reviewed by Fujii Hironori.

Covered by existing tests.

Matching PublicSuffixSoup.cpp behavior to skip leading dots.

  • platform/network/curl/PublicSuffixCurl.cpp:
2:28 PM Changeset in webkit [255982] by Devin Rousso
  • 5 edits in trunk

Web Inspector: REGRESSION(r249831): Sources: endless spinner when trying to view a resource
https://bugs.webkit.org/show_bug.cgi?id=207346
<rdar://problem/59209016>

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

  • UserInterface/Workers/Formatter/HTMLParser.js:

(HTMLParser.prototype._parseAttr):
Attributes are allowed to contain "/".
https://html.spec.whatwg.org/multipage/parsing.html#before-attribute-value-state

LayoutTests:

  • inspector/formatting/resources/html-tests/attributes.html:
  • inspector/formatting/resources/html-tests/attributes-expected.html:
2:23 PM Changeset in webkit [255981] by Russell Epstein
  • 1 copy in tags/Safari-609.1.16.2

Tag Safari-609.1.16.2.

2:15 PM Changeset in webkit [255980] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(?): Search: selecting a DOM node search result switches to the Elements Tab
https://bugs.webkit.org/show_bug.cgi?id=207322

Reviewed by Timothy Hatcher.

  • UserInterface/Views/TabBrowser.js:

(WI.TabBrowser.prototype._tabBarItemSelected):
The Search Tab is marked such that it isn't saved to WI._openTabsSetting, as otherwise
more than one Search Tab could be added to the tab bar (one from the setting and one from
the default pinned tab). It is also marked as being pinned, however, meaning that we know it
will always be in the tab bar, even if we also know it won't be in WI._openTabsSetting. As
such, we should update it's position in the _recentTabContentViews list so that we can use
it when showing represented objects (if able) via bestTabContentViewForRepresentedObject.

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

Fix my mistakenly landed expectations from r255962
https://bugs.webkit.org/show_bug.cgi?id=207337

Unreviewed test gardening

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

Flaky Test: fast/performance/performance-now-timestamps.html
https://bugs.webkit.org/show_bug.cgi?id=112939

Unreviewed test gardening.

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

  • platform/mac/TestExpectations:
1:59 PM Changeset in webkit [255977] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION: [ macOS wk1 ] ASSERTION FAILED: _notifications.contains(notificationID) imported/w3c/web-platform-tests/notifications/constructor-basic.html is flaky crashing
https://bugs.webkit.org/show_bug.cgi?id=207307

Unreviewed test gardening.

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

  • platform/mac/TestExpectations:
1:40 PM Changeset in webkit [255976] by rniwa@webkit.org
  • 3 edits
    2 adds in trunk

Nullptr crash in WebCore::findPlaceForCounter with pseudo element that has display:contents host.
https://bugs.webkit.org/show_bug.cgi?id=207241

When the pseudo element's host element does not initiate a renderer
(e.g. display: contents) we need to look further in the DOM tree
for a previous-sibling-or-parent-element candidate.

Patch by Jack Lee <shihchieh_lee@apple.com> on 2020-02-06
Reviewed by Zalan Bujtas.

Source/WebCore:

Test: fast/css/counters/findPlaceForCounter-pseudo-element-display-content-host-crash.html

  • rendering/RenderCounter.cpp:

(WebCore::previousSiblingOrParentElement):

LayoutTests:

  • fast/css/counters/findPlaceForCounter-pseudo-element-display-content-host-crash-expected.txt: Added.
  • fast/css/counters/findPlaceForCounter-pseudo-element-display-content-host-crash.html: Added.
1:36 PM Changeset in webkit [255975] by Alexey Shvayka
  • 7 edits
    1 add in trunk

JavaScript string corruption using RegExp with unicode character
https://bugs.webkit.org/show_bug.cgi?id=187947

Reviewed by Yusuke Suzuki.

JSTests:

This change adds regression test for string corruption that occured after
non-BMP character was removed by String.prototype.replace.
The issue was fixed in https://trac.webkit.org/changeset/253648/webkit.

Also, this patch brings back:

  1. An out-of-order character class range test.
  2. Dangling and combined surrogates tests (as webkit.org/b/154863 is now resolved).
  • stress/regress-187947.js: Added.

LayoutTests:

Besides adding a regression test, this patch brings back:

  1. An out-of-order character class range test.
  2. Dangling and combined surrogates tests (as webkit.org/b/154863 is now resolved).
  • js/dom/regexp-range-out-of-order-expected.txt:
  • js/dom/script-tests/regexp-range-out-of-order.js:
  • js/regexp-unicode-expected.txt:
  • js/script-tests/regexp-extended-characters-match.js:
  • js/script-tests/regexp-unicode.js:
12:06 PM Changeset in webkit [255974] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed, rolling out r255955.

Caused API test failures on iOS

Reverted changeset:

"[IPC hardening] Update WebPasteboardProxy methods to validate
their parameters"
https://bugs.webkit.org/show_bug.cgi?id=207308
https://trac.webkit.org/changeset/255955

12:01 PM Changeset in webkit [255973] by Ryan Haddad
  • 30 edits
    8 deletes in trunk

Unreviewed, rolling out r255910, r255970, and r255972.
https://bugs.webkit.org/show_bug.cgi?id=207345

Broke internal builds (Requested by ryanhaddad on #webkit).

Reverted changesets:

"[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder"
https://bugs.webkit.org/show_bug.cgi?id=206582
https://trac.webkit.org/changeset/255910

"[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder"
https://bugs.webkit.org/show_bug.cgi?id=206582
https://trac.webkit.org/changeset/255970

"[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder"
https://bugs.webkit.org/show_bug.cgi?id=206582
https://trac.webkit.org/changeset/255972

Patch by Commit Queue <commit-queue@webkit.org> on 2020-02-06

11:56 AM Changeset in webkit [255972] by Ryan Haddad
  • 2 edits in trunk/Source/WTF

[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
https://bugs.webkit.org/show_bug.cgi?id=206582

Unreviewed internal build fix attempt.

  • wtf/PlatformHave.h: Fix copy / paste error.
11:54 AM Changeset in webkit [255971] by ajuma@chromium.org
  • 3 edits
    2 adds in trunk

Crash in RenderTableCol::willBeRemovedFromTree()
https://bugs.webkit.org/show_bug.cgi?id=207031

Reviewed by Antti Koivisto.

Source/WebCore:

A RenderTableCol's table() can be null during willBeRemovedFromTree. This can
happen when the RenderTableCol's table is an ancestor rather than a direct
parent. If RenderTreeBuilder::destroy is then called on an ancestor of the
the RenderTableCol's table, RenderTreeBuilder::destroy proceeds down the ancestor
chain, detaching each node along the way. By the time the RenderTableCol is
reached, the table (a non-parent ancestor) has already been detached, so
table() is null and we crash while trying to use it.

The underlying bug is that RenderTreeBuilder::destroyAndCleanUpAnonymousWrappers
is getting called on the RenderTableCol's ancestor before its descendants (including
the RenderTableCol) are destroyed.

Fix this by changing the order of operations in RenderTreeUpdater::tearDownRenderers
so that tearDownLeftoverShadowHostChildren happens before destroyAndCleanUpAnonymousWrappers.
This ensures that the RenderTableCol is destroyed before destroyAndCleanUpAnonymousWrappers is
called on its ancestor.

Test: tables/table-col-indent-crash.html

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::tearDownRenderers):

LayoutTests:

  • tables/table-col-indent-crash-expected.txt: Added.
  • tables/table-col-indent-crash.html: Added.
11:53 AM Changeset in webkit [255970] by Ryan Haddad
  • 2 edits in trunk/Source/WTF

[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
https://bugs.webkit.org/show_bug.cgi?id=206582

Unreviewed internal build fix attempt.

  • wtf/PlatformHave.h:
11:26 AM Changeset in webkit [255969] by Patrick Griffis
  • 4 edits
    2 adds in trunk/Source/WebKit

[GTK][WPE] Re-add flatpak sandbox support
https://bugs.webkit.org/show_bug.cgi?id=204732

Reviewed by Michael Catanzaro.

This brings back the Flatpak based sandbox now that upstream has added
features to their spawn portal to accomodate our needs.

  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • UIProcess/Launcher/glib/FlatpakLauncher.cpp: Added.

(WebKit::flatpakSpawn):

  • UIProcess/Launcher/glib/FlatpakLauncher.h: Added.
  • UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:

(WebKit::isFlatpakSpawnUsable):
(WebKit::isInsideFlatpak):
(WebKit::ProcessLauncher::launchProcess):

11:25 AM Changeset in webkit [255968] by Kocsen Chung
  • 8 edits in branches/safari-609.1.16-branch/Source

Versioning.

11:25 AM Changeset in webkit [255967] by Kocsen Chung
  • 3 edits in branches/safari-609.1.16-branch/Source/WebCore

Cherry-pick r255953. rdar://problem/59228071

[Web Animations] Ensure all timelines are detached from their document
https://bugs.webkit.org/show_bug.cgi?id=207331
<rdar://problem/59210306>

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

We recently added a WeakHashSet<DocumentTimeline> m_timelines member to Document and added code to ~DocumentTimeline
to remove themselves from their Document's m_timelines. However, Document::prepareForDestruction() would call
DocumentTimeline::detachFromDocument() only for the main timeline and neglect to do the same for any additional
timelines that may have been created with the DocumentTimeline constructor.

We now cleanly call DocumentTimeline::detachFromDocument() for all items in a Document's m_timelines, which has the
effect of clearing the Document <> DocumentTimeline relationship since DocumentTimeline::detachFromDocument() now
calls Document::removeTimeline().

Finally, we now call DocumentTimeline::detachFromDocument() from the DocumentTimeline destructor to ensure that timelines
that were created purely in JS but got garbage-collected are no longer referenced from the Document still.

  • animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::~DocumentTimeline): (WebCore::DocumentTimeline::detachFromDocument): (WebCore::DocumentTimeline::cacheCurrentTime):
  • dom/Document.cpp: (WebCore::Document::prepareForDestruction):

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

11:03 AM Changeset in webkit [255966] by Russell Epstein
  • 3 edits in branches/safari-610.1.1-branch/Source/WebCore

Revert "Cherry-pick r255953. rdar://problem/59228071"

This reverts commit r255965.

10:57 AM Changeset in webkit [255965] by Russell Epstein
  • 3 edits in branches/safari-610.1.1-branch/Source/WebCore

Cherry-pick r255953. rdar://problem/59228071

[Web Animations] Ensure all timelines are detached from their document
https://bugs.webkit.org/show_bug.cgi?id=207331
<rdar://problem/59210306>

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

We recently added a WeakHashSet<DocumentTimeline> m_timelines member to Document and added code to ~DocumentTimeline
to remove themselves from their Document's m_timelines. However, Document::prepareForDestruction() would call
DocumentTimeline::detachFromDocument() only for the main timeline and neglect to do the same for any additional
timelines that may have been created with the DocumentTimeline constructor.

We now cleanly call DocumentTimeline::detachFromDocument() for all items in a Document's m_timelines, which has the
effect of clearing the Document <> DocumentTimeline relationship since DocumentTimeline::detachFromDocument() now
calls Document::removeTimeline().

Finally, we now call DocumentTimeline::detachFromDocument() from the DocumentTimeline destructor to ensure that timelines
that were created purely in JS but got garbage-collected are no longer referenced from the Document still.

  • animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::~DocumentTimeline): (WebCore::DocumentTimeline::detachFromDocument): (WebCore::DocumentTimeline::cacheCurrentTime):
  • dom/Document.cpp: (WebCore::Document::prepareForDestruction):

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

10:45 AM Changeset in webkit [255964] by Russell Epstein
  • 1 edit in branches/safari-609-branch/Source/WebCore/style/StyleBuilderState.cpp

Unreviewed build fix. rdar://problem/59097775

10:35 AM Changeset in webkit [255963] by Russell Epstein
  • 3 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r255953. rdar://problem/59228071

[Web Animations] Ensure all timelines are detached from their document
https://bugs.webkit.org/show_bug.cgi?id=207331
<rdar://problem/59210306>

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

We recently added a WeakHashSet<DocumentTimeline> m_timelines member to Document and added code to ~DocumentTimeline
to remove themselves from their Document's m_timelines. However, Document::prepareForDestruction() would call
DocumentTimeline::detachFromDocument() only for the main timeline and neglect to do the same for any additional
timelines that may have been created with the DocumentTimeline constructor.

We now cleanly call DocumentTimeline::detachFromDocument() for all items in a Document's m_timelines, which has the
effect of clearing the Document <> DocumentTimeline relationship since DocumentTimeline::detachFromDocument() now
calls Document::removeTimeline().

Finally, we now call DocumentTimeline::detachFromDocument() from the DocumentTimeline destructor to ensure that timelines
that were created purely in JS but got garbage-collected are no longer referenced from the Document still.

  • animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::~DocumentTimeline): (WebCore::DocumentTimeline::detachFromDocument): (WebCore::DocumentTimeline::cacheCurrentTime):
  • dom/Document.cpp: (WebCore::Document::prepareForDestruction):

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

9:40 AM Changeset in webkit [255962] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Regression: (r255150?) [ Mac wk1 ] http/wpt/css/css-animations/start-animation-001.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207337

Unreviewed test gardening.

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

  • platform/mac-wk1/TestExpectations:
9:32 AM Changeset in webkit [255961] by Brent Fulgham
  • 43 edits
    4 adds in trunk

Prevent navigating top level frames to Data URLs
https://bugs.webkit.org/show_bug.cgi?id=206962
<rdar://problem/56770676>

Source/WebCore:

Reviewed by Youenn Fablet.

Revise our loading behavior to match Chrome and Firefox by blocking
top level frame navigations to Data URLs.

Test: fast/loader/data-url-frame-allowed.html, fast/loader/data-url-load-denied.html

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::disallowDataRequest const): Added,
(WebCore::DocumentLoader::continueAfterContentPolicy): Validate whether the load should
continue if it is a Data URL.

  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::setAllowsDataURLForMainFrame): Added.
(WebCore::DocumentLoader::allowsDataURLForMainFrame const): Added.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::load): If the main frame loader as triggered by user action, or
direct call to the client API, allow top-frame navigation to Data URLs.
(WebCore::FrameLoader::reload): If the original load allowed top-frame navigation to Data
URLs, continue to do so in the reload.

  • loader/FrameLoader.h:

Source/WebKit:

Reviewed by Youenn Fablet.

Expose a new off-by-default preference to allow top-level navigation to Data URIs.

Tests: fast/loader/data-url-frame-allowed.html, fast/loader/data-url-load-denied.html

  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetTopNavigationToDataURLsAllowed):
(WKPreferencesGetTopNavigationToDataURLsAllowed):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _setTopNavigationToDataURLsAllowed:]):
(-[WKPreferences _topNavigationToDataURLsAllowed]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _setupPageConfiguration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _allowTopNavigationToDataURLs]):
(-[WKWebViewConfiguration _setAllowTopNavigationToDataURLs:]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/Inspector/mac/WKInspectorViewController.mm:

(-[WKInspectorViewController configuration]):

Source/WebKitLegacy/mac:

Reviewed by Youenn Fablet.

Expose a new off-by-default preference to allow top-level navigation to Data URIs.

Tests: fast/loader/data-url-frame-allowed.html, fast/loader/data-url-load-denied.html

  • WebCoreSupport/WebInspectorClient.mm:

(-[WebInspectorWindowController init]):

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences allowTopNavigationToDataURLs]):
(-[WebPreferences setAllowTopNavigationToDataURLs:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKitLegacy/win:

Reviewed by Youenn Fablet.

Expose a new off-by-default preference to allow top-level navigation to Data URIs.

  • Interfaces/WebKit.idl: Touch file to trigger a build.
  • Interfaces/IWebPreferences.idl: Ditto.
  • Interfaces/IWebPreferencesPrivate.idl: Expose new API version to avoid breaking shipping binaries.
  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings): Update for new setting.
(WebPreferences::QueryInterface): Add support for IWebPreferencesPrivate8 interface.
(WebPreferences::allowTopNavigationToDataURLs): Added.
(WebPreferences::setAllowTopNavigationToDataURLs): Added.

  • WebPreferences.h:
  • WebView.cpp:

(WebView::notifyPreferencesChanged): Update to handle Data URL setting.

Tools:

Reviewed by Youenn Fablet.

Revise test running code to allow data URL navigations by default, since they are so frequently
used in testing. However, provide a flag to turn this off in tests so we can confirm proper
function.

  • DumpRenderTree/TestOptions.cpp:

(TestOptions::TestOptions):

  • DumpRenderTree/TestOptions.h:
  • DumpRenderTree/mac/DumpRenderTree.mm:

(setWebPreferencesForTestOptions):

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

(DownloadAttributeDoesNotStartDownloads): Revise configuration to allow script navigation of the main frame to a Data URL.
(StartDownloadWithDownloadAttribute): Ditto.

  • TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:

(WebViewWillPerformClientRedirect): Ditto.
(WebViewDidCancelClientRedirect): Ditto.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

(NavigateToDataURLThenBack): Ditto.
(ContentExtensionBlocksMainLoadThenReloadWithoutExtensions): Ditto.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::initializeWebViewConfiguration):
(WTR::TestController::platformCreateWebView):

LayoutTests:

Reviewed by Youenn Fablet."

Revise our loading behavior to match Chrome and Firefox by blocking
top level frame navigations to Data URLs.

  • fast/loader/data-url-frame-allowed.html: Added.
  • fast/loader/data-url-frame-allowed-expected.txt : Added.
  • fast/loader/data-url-load-denied.html: Added.
  • fast/loader/data-url-load-denied-expected.txt: Added.
9:12 AM Changeset in webkit [255960] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION: (r255821) [ iOS Mac wk1 ] imported/w3c/web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html
https://bugs.webkit.org/show_bug.cgi?id=207278

Unreviewed test gardening.

Followup to r255859 to add iOS expectations.

  • platform/ios/TestExpectations:
9:05 AM Changeset in webkit [255959] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Regression (r255810): webanimations/accelerated-animation-canceled-before-commit.html is very flaky on Windows EWS
https://bugs.webkit.org/show_bug.cgi?id=207327

Unreviewed test gardening.

  • platform/win/TestExpectations: Skip the test on Windows.
9:03 AM Changeset in webkit [255958] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebKit

Remove unused SPI WKWebViewConfiguration._treatsSHA1SignedCertificatesAsInsecure
https://bugs.webkit.org/show_bug.cgi?id=207314

Patch by Alex Christensen <achristensen@webkit.org> on 2020-02-06
Reviewed by Youenn Fablet.

The transition period is over. SHA1 certificates are insecure.

  • UIProcess/API/APIPageConfiguration.cpp:

(API::PageConfiguration::copy const):

  • UIProcess/API/APIPageConfiguration.h:

(API::PageConfiguration::treatsSHA1SignedCertificatesAsInsecure): Deleted.
(API::PageConfiguration::setTreatsSHA1SignedCertificatesAsInsecure): Deleted.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _treatsSHA1SignedCertificatesAsInsecure]): Deleted.
(-[WKWebViewConfiguration _setTreatsSHA1SignedCertificatesAsInsecure:]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::didCommitLoadForFrame):

  • UIProcess/WebPageProxy.h:
8:49 AM Changeset in webkit [255957] by cathiechen
  • 47 edits in trunk

Add support for scroll behavior relies on ScrollAnimation of the Web process
https://bugs.webkit.org/show_bug.cgi?id=204882

Reviewed by Frédéric Wang

Based on the patch by Frédéric Wang.

LayoutTests/imported/w3c:

Enable CSSOMViewSmoothScrollingEnabled on scroll behavior tests and update expectations.

  • web-platform-tests/css/cssom-view/scroll-behavior-default-css-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-default-css.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-element-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-element.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-root-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-window-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html:

Source/WebCore:

This patch introduces a programmatic smooth scrolling in WebKit from the CSSOM View
specification [1]. To use this effect, web developers can pass a behavior parameter (auto,
smooth, or instant) to Element.scroll, Element.scrollTo, Element.scrollBy,
Element.scrollIntoView, Window.scroll, Window.scrollTo or Window.scrollBy [2]. When behavior
is auto, the instant/smooth characteristic is actually taken from the value of a new CSS
scroll-behavior property [3]. Both the new CSS and DOM behavior are protected by a runtime
flag.

[1] https://drafts.csswg.org/cssom-view
[2] https://drafts.csswg.org/cssom-view/#dictdef-scrolloptions
[3] https://drafts.csswg.org/cssom-view/#propdef-scroll-behavior

Tests: imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-default-css.html

imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-element.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html

  • Sources.txt: Build ScrollAnimationSmooth.cpp on all platforms.
  • SourcesGTK.txt: Remove ScrollAnimationSmooth.cpp since it is built on all platforms now.
  • dom/Element.cpp:

(WebCore::Element::scrollIntoView): Pass scroll behavior, if any.
(WebCore::Element::scrollBy):
(WebCore::Element::scrollTo): Handle the case when scroll behavior is smooth.
(WebCore::Element::setScrollLeft): Handle the case when scroll behavior is smooth.
(WebCore::Element::setScrollTop): Handle the case when scroll behavior is smooth.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::scrollBy const):
(WebCore::DOMWindow::scrollTo const): Handle the case when scroll behavior is smooth.
The optimization of cancel (0, 0) scrolling is skipped if an animated scroll is in progress.
Otherwise, the previous scroll won't be stopped by a follow-up scroll.

  • page/FrameView.cpp:

(WebCore::FrameView::setScrollPosition):
(WebCore::FrameView::scrollToOffsetWithAnimation): Start an animated scroll.

  • page/FrameView.h:
  • platform/ScrollAnimation.h:

(WebCore::ScrollAnimation::scroll): Function to animate scrolling to a specified position.

  • platform/ScrollAnimationSmooth.cpp: Build this file on all platforms. Add a

smoothFactorForProgrammaticScroll parameter to slow down the smooth scrolling.
(WebCore::ScrollAnimationSmooth::scroll):
(WebCore::ScrollAnimationSmooth::updatePerAxisData): Scale the time parameters of the
animation so that it looks smoother.

  • platform/ScrollAnimationSmooth.h: Declare the class on all platforms.
  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::ScrollAnimator): Initialize animation member for programmatic scrolling.
(WebCore::ScrollAnimator::scrollToOffset): Animate scrolling to the specified position.
(WebCore::ScrollAnimator::cancelAnimations): Copy logic from ScrollAnimationSmooth.cpp.
(WebCore::ScrollAnimator::serviceScrollAnimations): Ditto.
(WebCore::ScrollAnimator::willEndLiveResize): Ditto.
(WebCore::ScrollAnimator::didAddVerticalScrollbar): Ditto.
(WebCore::ScrollAnimator::didAddHorizontalScrollbar): Ditto.

  • platform/ScrollAnimator.h: New animation member for smooth programmatic scrolling.

(WebCore::ScrollAnimator::ScrollAnimator::cancelAnimations): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::serviceScrollAnimations): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::willEndLiveResize): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::didAddVerticalScrollbar): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::didAddHorizontalScrollbar): Deleted.

  • platform/ScrollTypes.h: Add ScrollBehaviorStatus to indicate the status of scrolling.
  • platform/ScrollView.cpp:

(WebCore::ScrollView::setScrollPosition): Follow the CSSOM View spec: If a scroll is in
progress, we interrupt it and continue the scroll call (even when we are at the final position).

  • platform/ScrollView.h:
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::ScrollableArea):
(WebCore::ScrollableArea::scrollToOffsetWithAnimation):

  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::currentScrollBehaviorStatus const): Maintain currentScrollBehaviorStatus.
(WebCore::ScrollableArea::setScrollBehaviorStatus):

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::cancelAnimations): Call parent member to handle programmatic scrolling.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::setScrollLeft): Add flag to indicate animated or not.
(WebCore::RenderBox::setScrollTop): Ditto.
(WebCore::RenderBox::setScrollPosition):

  • rendering/RenderBox.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollToXPosition): Ditto.
(WebCore::RenderLayer::scrollToYPosition): Ditto.
(WebCore::RenderLayer::scrollToPosition):
(WebCore::RenderLayer::scrollToOffset): Follow the CSSOM View spec: If a scroll is in
progress, we interrupt it and continue the scroll call (even when we are at the final
position). It's ScrollBehaviorType::Instant scroll.
(WebCore::RenderLayer::scrollToOffsetWithAnimation): Ditto. This is similar to scrollToOffset
but animates the scroll. It's ScrollBehaviorType::Smooth scroll.
(WebCore::RenderLayer::scrollTo):
(WebCore::RenderLayer::scrollRectToVisible): Again don't do an early return if scroll is in
progress. We call scrollToOffsetWithAnimation instead of scrollToOffset when appropriate.
Note that this function may not work well for several nested scroll boxes with at least one
element with smooth behavior. It will handled in bug Follow.

  • rendering/RenderLayer.h: Add scroll behavior to ScrollTectToVisibleOptions.
  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::setScrollLeft): Add animated flag.
(WebCore::RenderListBox::setScrollTop): Ditto.

  • rendering/RenderListBox.h:
  • rendering/RenderTextControlSingleLine.cpp:

(WebCore::RenderTextControlSingleLine::setScrollLeft):
(WebCore::RenderTextControlSingleLine::setScrollTop):

  • rendering/RenderTextControlSingleLine.h:
  • testing/Internals.cpp:

(WebCore::Internals::unconstrainedScrollTo):

LayoutTests:

  • platform/mac-wk1/TestExpectations: Skip these tests on WK1 as they don't work for now.
8:28 AM Changeset in webkit [255956] by Truitt Savell
  • 2 edits in trunk/LayoutTests

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

Unreviewed test gardening.

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

  • platform/mac/TestExpectations:
8:02 AM Changeset in webkit [255955] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC hardening] Update WebPasteboardProxy methods to validate their parameters
https://bugs.webkit.org/show_bug.cgi?id=207308
<rdar://problem/58632938>

Reviewed by Alex Christensen.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::getPasteboardTypes):
(WebKit::WebPasteboardProxy::getPasteboardPathnamesForType):
(WebKit::WebPasteboardProxy::getPasteboardStringForType):
(WebKit::WebPasteboardProxy::getPasteboardStringsForType):
(WebKit::WebPasteboardProxy::getPasteboardBufferForType):
(WebKit::WebPasteboardProxy::pasteboardCopy):
(WebKit::WebPasteboardProxy::getPasteboardChangeCount):
(WebKit::WebPasteboardProxy::getPasteboardColor):
(WebKit::WebPasteboardProxy::getPasteboardURL):
(WebKit::WebPasteboardProxy::addPasteboardTypes):
(WebKit::WebPasteboardProxy::setPasteboardTypes):
(WebKit::WebPasteboardProxy::setPasteboardURL):
(WebKit::WebPasteboardProxy::setPasteboardColor):
(WebKit::WebPasteboardProxy::setPasteboardStringForType):
(WebKit::WebPasteboardProxy::setPasteboardBufferForType):
(WebKit::WebPasteboardProxy::getNumberOfFiles):
(WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite):
(WebKit::WebPasteboardProxy::writeCustomData):
(WebKit::WebPasteboardProxy::allPasteboardItemInfo):
(WebKit::WebPasteboardProxy::informationForItemAtIndex):
(WebKit::WebPasteboardProxy::getPasteboardItemsCount):
(WebKit::WebPasteboardProxy::readStringFromPasteboard):
(WebKit::WebPasteboardProxy::readURLFromPasteboard):
(WebKit::WebPasteboardProxy::readBufferFromPasteboard):
(WebKit::WebPasteboardProxy::writeURLToPasteboard):
(WebKit::WebPasteboardProxy::writeWebContentToPasteboard):
(WebKit::WebPasteboardProxy::writeImageToPasteboard):
(WebKit::WebPasteboardProxy::writeStringToPasteboard):
(WebKit::WebPasteboardProxy::updateSupportedTypeIdentifiers):

8:00 AM Changeset in webkit [255954] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC Hardening] Protect against bad identifier in WebPageProxy::DidInsertAttachmentWithIdentifier()
https://bugs.webkit.org/show_bug.cgi?id=207311
<rdar://problem/58632517>

Reviewed by Alex Christensen.

  • UIProcess/WebPageProxy.cpp:
7:56 AM Changeset in webkit [255953] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[Web Animations] Ensure all timelines are detached from their document
https://bugs.webkit.org/show_bug.cgi?id=207331
<rdar://problem/59210306>

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

We recently added a WeakHashSet<DocumentTimeline> m_timelines member to Document and added code to ~DocumentTimeline
to remove themselves from their Document's m_timelines. However, Document::prepareForDestruction() would call
DocumentTimeline::detachFromDocument() only for the main timeline and neglect to do the same for any additional
timelines that may have been created with the DocumentTimeline constructor.

We now cleanly call DocumentTimeline::detachFromDocument() for all items in a Document's m_timelines, which has the
effect of clearing the Document <> DocumentTimeline relationship since DocumentTimeline::detachFromDocument() now
calls Document::removeTimeline().

Finally, we now call DocumentTimeline::detachFromDocument() from the DocumentTimeline destructor to ensure that timelines
that were created purely in JS but got garbage-collected are no longer referenced from the Document still.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::~DocumentTimeline):
(WebCore::DocumentTimeline::detachFromDocument):
(WebCore::DocumentTimeline::cacheCurrentTime):

  • dom/Document.cpp:

(WebCore::Document::prepareForDestruction):

7:12 AM Changeset in webkit [255952] by Carlos Garcia Campos
  • 10 edits in releases/WebKitGTK/webkit-2.28/Source

Merge r255909 - ServiceWorkerProvider::registerServiceWorkerClients is no longer needed
https://bugs.webkit.org/show_bug.cgi?id=207193

Reviewed by Chris Dumez.

Source/WebCore:

registerServiceWorkerClients is no longer needed since we moved service worker handling to network process.
We no longer have to optimize creating a sw server connection since we piggy back on the webprocess to network process connection.

As can be seen from DocumentLoader, we register service worker clients in DocumentLoader::commitData.
The only documents we do not register are documents for which we exit early due to creatingInitialEmptyDocument check.

registerServiceWorkerClients was used initially when starting the first service worker process.
This is obsolete since now we split service workers according sessionID and registrable domains.

No observable change of behavior if network process does not crash.
Covered by existing service worker tests crashing network process in the middle of processing.

  • workers/service/SWClientConnection.cpp:

(WebCore::SWClientConnection::registerServiceWorkerClients):

  • workers/service/SWClientConnection.h:
  • workers/service/ServiceWorkerProvider.cpp:
  • workers/service/ServiceWorkerProvider.h:

Source/WebKit:

Remove the request from WebProcessPool to register all service worker clients at launch of the first service worker process.
This is no longer needed and does not scale since our service workers are launched in different processes nowadays.

In case network process crashes, WebProcess will need to reregister their service worker clients.
This is lazily done when WebProcess tries to reconnect to the Network Process.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::ensureNetworkProcessConnection):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
7:12 AM Changeset in webkit [255951] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r255908 - Crash when printing at WebCore: WebCore::FrameView::paintContents
<https://webkit.org/b/207313>
<rdar://problem/56675778>

Reviewed by Brent Fulgham.

  • page/PrintContext.cpp:

(WebCore::PrintContext::spoolPage):
(WebCore::PrintContext::spoolRect):

  • Add nullptr check for frame.view(). This matches similar checks in other methods.
7:12 AM Changeset in webkit [255950] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI

Merge r255901 - Web Inspector: the height of the undocked title area shouldn't change when zoomed
https://bugs.webkit.org/show_bug.cgi?id=207228

Reviewed by Timothy Hatcher.

  • UserInterface/Base/Main.js:

(WI.contentLoaded):
(WI.contentLoaded.updateZoomFactorCSSVariable): Added.
Save the zoom factor as a number in a CSS variable on the <body>.

  • UserInterface/Views/Variables.css:

(body.mac-platform:not(.docked)): Added.
(body:not(.docked)): Deleted.
Divide the default 22px by the current zoom factor so that it cancels out when rendered.
Make it so that the undocked title area is only shown on macOS <https://webkit.org/b/204627#c47>

7:12 AM Changeset in webkit [255949] by Carlos Garcia Campos
  • 9 edits in releases/WebKitGTK/webkit-2.28

Merge r255899 - [PlayStation] Miscellaneous build fixes February 2020 edition
https://bugs.webkit.org/show_bug.cgi?id=207312

Unreviewed build fix.

Source/WebCore:

  • accessibility/AccessibilityObject.h: Add missing definition for !ENABLE(ACCESSIBILITY)

(WebCore::AccessibilityObject::detachPlatformWrapper):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:
  • platform/graphics/cairo/ImageBufferCairo.cpp: Add missing include

Source/WebKit:

  • NetworkProcess/NetworkDataTaskBlob.cpp: Add missing include.
  • UIProcess/Downloads/DownloadProxyMap.h: Add missing forward declaration.

Tools:

  • TestWebKitAPI/PlatformWebView.h: Remove #elif guard and just use #else
7:11 AM Changeset in webkit [255948] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r255898 - Unreviewed build fix for Windows ports since r255875
https://bugs.webkit.org/show_bug.cgi?id=207073
<rdar://problem/59168065>

WEBCORE_TESTSUPPORT_EXPORT should be used only for WebCoreTestSupport, not for WebCore
See also Bug 203876.

  • storage/StorageNamespaceProvider.h: Replaced WEBCORE_TESTSUPPORT_EXPORT with WEBCORE_EXPORT.
7:11 AM Changeset in webkit [255947] by Carlos Garcia Campos
  • 15 edits
    3 adds in releases/WebKitGTK/webkit-2.28

Merge r255897 - Deleting a property should not turn structures into uncacheable dictionaries
https://bugs.webkit.org/show_bug.cgi?id=206430

Reviewed by Yusuke Suzuki.

JSTests:

  • microbenchmarks/delete-property-from-prototype-chain.js: Added.

(assert):
(noInline.assert.getZ):
(noInline.getZ.C):
(doTest):
(delete.C.prototype.z):

  • microbenchmarks/delete-property-keeps-cacheable-structure.js: Added.

(assert):
(C):
(doTest):

  • stress/cache-put-by-id-different-attributes.js:

(makePrototypeDict):
(set x):

  • stress/cache-put-by-id-different-offset.js:

(makePrototypeDict):
(set x):

  • stress/cache-put-by-id-poly-proto.js:

(makePrototypeDict):
(set _):

  • stress/delete-property-check-structure-transition.js: Added.

(assert):
(assert_eq):
(assert_neq):
(sd):
(sid):
(testDeleteIsNotUncacheable):
(testCanMaterializeDeletes):
(testCanFlatten):
(testDeleteWithInlineCache.Object.prototype.globalProperty.42.makeFoo):
(testDeleteWithInlineCache.noInline.doTest):
(testDeleteWithInlineCache):

  • stress/flatten-object-zero-unused-inline-properties.js:

Source/JavaScriptCore:

Right now, deleteProperty/removePropertyTransition causes a structure transition to uncacheable dictionary. Instead, we should allow it to transition to a new regular structure like adding a property does. This means that we have to:

1) Break the assumption that structure transition offsets increase monotonically

We add a new flag to tell that a structure has deleted its property, and update materializePropertyTable to use it.

2) Add a new transition map and transition kind for deletes

We cache the delete transition. We will not transition back to a previous structure if you add then immediately remove a property.

3) Find some heuristic for when we should actually transition to uncacheable dictionary.

Since deleting properties is expected to be rare, we just walk the structure list and count its size on removal.

This patch also fixes a related bug in addProperty, where we did not use a GCSafeConcurrentJSLocker, and adds an option to trigger the bug. Finally, we add some helper methods to dollarVM to test.

This gives a 24x speedup on delete-property-keeps-cacheable-structure.js, and is neutral on delete-property-from-prototype-chain.js (which was already generating code using the inline cache).

  • heap/HeapInlines.h:

(JSC::Heap::decrementDeferralDepthAndGCIfNeeded):

  • runtime/JSObject.cpp:

(JSC::JSObject::deleteProperty):

  • runtime/OptionsList.h:
  • runtime/PropertyMapHashTable.h:

(JSC::PropertyTable::get):
(JSC::PropertyTable::add):
(JSC::PropertyTable::addDeletedOffset):
(JSC::PropertyTable::reinsert):

  • runtime/Structure.cpp:

(JSC::StructureTransitionTable::contains const):
(JSC::StructureTransitionTable::get const):
(JSC::StructureTransitionTable::add):
(JSC::Structure::Structure):
(JSC::Structure::materializePropertyTable):
(JSC::Structure::addNewPropertyTransition):
(JSC::Structure::removePropertyTransition):
(JSC::Structure::removePropertyTransitionFromExistingStructure):
(JSC::Structure::removeNewPropertyTransition):
(JSC::Structure::toUncacheableDictionaryTransition):
(JSC::Structure::remove):
(JSC::Structure::visitChildren):

  • runtime/Structure.h:
  • runtime/StructureInlines.h:

(JSC::Structure::forEachPropertyConcurrently):
(JSC::Structure::add):
(JSC::Structure::remove):
(JSC::Structure::removePropertyWithoutTransition):

  • runtime/StructureTransitionTable.h:

(JSC::StructureTransitionTable::Hash::hash):

  • tools/JSDollarVM.cpp:

(JSC::JSDollarVMHelper::functionGetStructureTransitionList):
(JSC::functionGetConcurrently):
(JSC::JSDollarVM::finishCreation):

7:11 AM Changeset in webkit [255946] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI

Merge r255896 - Web Inspector: Some cookie table column headers should not be localizable
https://bugs.webkit.org/show_bug.cgi?id=206920

Reviewed by Timothy Hatcher.

Keep headers that match cookie directives always in English.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/CookieStorageContentView.js:

(WI.CookieStorageContentView.prototype.initialLayout):

7:11 AM Changeset in webkit [255945] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI

Merge r255894 - Web Inspector: slightly increase the horizontal padding around scope bar items
https://bugs.webkit.org/show_bug.cgi?id=207321

Reviewed by Timothy Hatcher.

  • UserInterface/Views/ScopeBar.css:

(.scope-bar):
(body[dir=ltr] .scope-bar > li.multiple > select):
(body[dir=rtl] .scope-bar > li.multiple > select):

  • UserInterface/Views/RadioButtonNavigationItem.css:

(.navigation-bar .item.radio.button.text-only):

7:11 AM Changeset in webkit [255944] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI

Merge r255893 - Web Inspector: Tab Bar: move window management items to the left and don't show reload/download unless remotely inspecting
https://bugs.webkit.org/show_bug.cgi?id=207318

Reviewed by Timothy Hatcher.

Move the window management buttons to the left side to match the system look/feel.

Hide the reload/download buttons when inspecting locally, as there are other ways of
reloading the inspected page or downloading a Web Archive.

  • UserInterface/Base/Main.js:

(WI.contentLoaded):
(WI._updateDockNavigationItems):
(WI._updateReloadTabBarButton):
(WI._updateDownloadTabBarButton):
(WI._updateInspectModeTabBarButton):
(WI._updateTabBarDividers): Added.
(WI._updateConsoleTabBarButtons):

  • UserInterface/Debug/Bootstrap.js:

(updateDebugUI):
(WI.runBootstrapOperations):

7:11 AM Changeset in webkit [255943] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI

Merge r255892 - Web Inspector: Network: the resource detail view cuts off the bottom statistics bar
https://bugs.webkit.org/show_bug.cgi?id=207320

Reviewed by Timothy Hatcher.

  • UserInterface/Views/Variables.css:

(:root):
Add a --network-statistics-height variable.

  • UserInterface/Views/NetworkDetailView.css:

(.network-detail):

  • UserInterface/Views/NetworkTableContentView.css:

(.network-table > .statistics):
Use the --network-statistics-height variable to make sure the statistics row and the
details view for the selected network entry don't overlap.
Drive-by: center the content of the statistics row to better match the system look/feel.

7:11 AM Changeset in webkit [255942] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI

Merge r255890 - Web Inspector: increase the height of the tab bar to match other navigation bars
https://bugs.webkit.org/show_bug.cgi?id=207317

Reviewed by Timothy Hatcher.

  • UserInterface/Views/Variables.css:

(:root):
Define --tab-bar-height in terms of --navigation-bar-height so they share the same value.

  • UserInterface/Views/TabBar.css:

(.tab-bar > .tabs > .item):
(.tab-bar > .tabs > .item.pinned):
(.tab-bar > .tabs > .item.pinned.tab-picker): Deleted.
Increase the width to match the --tab-bar-height so that pinned tab bar items are square.

7:11 AM Changeset in webkit [255941] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.28

Merge r255889 - [WTF] Try using 75% load factor for HashTable
https://bugs.webkit.org/show_bug.cgi?id=207183

Reviewed by Mark Lam.

Source/WTF:

We know that hash-table is one of the most memory consuming part in WebKit.
By analyzing many production hash-table implementations[1], I found that many
of them are using 75% load-factor while our one is 50%.

A/B test shows that 75% load-factor is performance-neutral in Speedometer2 and
JetStream2, while it offers 2~% improvement in Membuster. This means that we are
wasting too much memory for no-performance-improvement.

This patch changes the load-factor from 50% to 75%.

[1]: LLVM DenseMap, Abseil's, rust's, and so on.

  • wtf/HashTable.h:

(WTF::HashTable::shouldExpand):
(WTF::HashTable::shouldExpand const):
(WTF::HashTableCapacityForSize::capacityForSize):
(WTF::KeyTraits>::computeBestTableSize):

Tools:

Fix load-factor assumption in existing tests.

  • TestWebKitAPI/Tests/WTF/HashSet.cpp:

(TestWebKitAPI::testInitialCapacity):

LayoutTests:

It seems that this test is relying on hash-table's order.

  • http/tests/resourceLoadStatistics/aggregate-sorted-data-no-storage-access-expected.txt:
7:11 AM Changeset in webkit [255940] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI

Merge r255888 - Web Inspector: Dragging handles in the easing popover selects sidebar text
https://bugs.webkit.org/show_bug.cgi?id=207316

Reviewed by Timothy Hatcher.

  • UserInterface/Views/BezierEditor.js:

(WI.BezierEditor.prototype._handleMousedown):

7:11 AM Changeset in webkit [255939] by Carlos Garcia Campos
  • 17 edits
    3 adds in releases/WebKitGTK/webkit-2.28

Merge r255887 - Web Inspector: Sources: add a special breakpoint for controlling whether debugger statements pause
https://bugs.webkit.org/show_bug.cgi?id=206818

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • inspector/protocol/Debugger.json:
  • inspector/agents/InspectorDebuggerAgent.h:
  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::setPauseOnDebuggerStatements): Added.

  • bytecompiler/NodesCodegen.cpp:

(JSC::DebuggerStatementNode::emitBytecode):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::dumpLineColumnEntry):

  • interpreter/Interpreter.h:
  • interpreter/Interpreter.cpp:

(JSC::Interpreter::debug):
(WTF::printInternal):

  • debugger/Debugger.h:

(JSC::Debugger::setPauseOnDebuggerStatements): Added.

  • debugger/Debugger.cpp:

(JSC::Debugger::didReachDebuggerStatement): Added.
(JSC::Debugger::didReachBreakpoint): Deleted.
Replace DebugHookType::DidReachBreakpoint with DebugHookType::DidReachDebuggerStatement,
as it is only actually used for debugger; statements, not breakpoints.

Source/WebInspectorUI:

  • UserInterface/Controllers/DebuggerManager.js:

(WI.DebuggerManager):
(WI.DebuggerManager.prototype.async initializeTarget):
(WI.DebuggerManager.prototype.get debuggerStatementsBreakpoint): Added.
(WI.DebuggerManager.prototype.isBreakpointRemovable):
(WI.DebuggerManager.prototype._breakpointDisabledStateDidChange):

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

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

  • UserInterface/Views/BreakpointTreeElement.css:

(.breakpoint-debugger-statement-icon .icon): Added.

  • UserInterface/Images/DebuggerStatement.svg: Added.
  • Localizations/en.lproj/localizedStrings.js:

LayoutTests:

  • inspector/debugger/setPauseOnDebuggerStatements.html: Added.
  • inspector/debugger/setPauseOnDebuggerStatements-expected.txt: Added.
7:11 AM Changeset in webkit [255938] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI

Merge r255886 - Web Inspector: Bezier editor popover should be strictly LTR
https://bugs.webkit.org/show_bug.cgi?id=206968
<rdar://problem/59007065>

Reviewed by Timothy Hatcher.

  • Don't mirror the coordinate system.
  • Don't reverste the order of the cubic bezier values, e.g. cubic-bezier(0, 0.5, 1, 0.5).
  • UserInterface/Views/BezierEditor.css:

(90%):
(to):
(body[dir=ltr] .bezier-editor): Deleted.
(body[dir=rtl] .bezier-editor): Deleted.
(body[dir=rtl] .bezier-editor > .bezier-container): Deleted.

  • UserInterface/Views/BezierEditor.js:
7:11 AM Changeset in webkit [255937] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r255885 - Web Inspector: ensure that didClearWindowObjectInWorld is dispatched for the main world first
https://bugs.webkit.org/show_bug.cgi?id=207232

Reviewed by Timothy Hatcher.

It is necessary to order the DOMWrapperWorlds because certain callers expect the main
world to be the first item in the list, as they use the main world as an indicator of when
the page is ready to start evaluating JavaScript. For example, Web Inspector waits for the
main world change to clear any injected scripts and debugger/breakpoint state.

  • bindings/js/WebCoreJSClientData.cpp:

(WebCore::JSVMClientData::getAllWorlds):

7:10 AM Changeset in webkit [255936] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r255884 - Check for null return from AXIsolatedTree::nodeForID.
https://bugs.webkit.org/show_bug.cgi?id=207300

Reviewed by Chris Fleizach.

  • As the IsolatedTree is updated, AXIsolatedTree::nodeForID may return

nullptr for objects that have been removed from the tree. Thus,
IsolatedObjects must check the returned value when updating children
and any other operations involving cached IDs.

  • Tidying up use of auto on for and if statements.
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::detachRemoteParts):
(WebCore::AXIsolatedObject::children):
(WebCore::AXIsolatedObject::accessibilityText const):
(WebCore::AXIsolatedObject::insertMathPairs):
(WebCore::AXIsolatedObject::objectAttributeValue const):
(WebCore::AXIsolatedObject::fillChildrenVectorForProperty const):
(WebCore::AXIsolatedObject::tree const): Deleted, moved inline to the header.

  • accessibility/isolatedtree/AXIsolatedObject.h:
7:10 AM Changeset in webkit [255935] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28/Source

Merge r255876 - [IPC hardening] Fail IPC decoding of invalid ClientOrigin objects
https://bugs.webkit.org/show_bug.cgi?id=207305
<rdar://problem/58797651>

Reviewed by Brent Fulgham.

Fail IPC decoding of invalid ClientOrigin objects (empty ClientOrigin or deleted value in a HashMap).

  • page/ClientOrigin.h:

(WebCore::ClientOrigin::decode):

  • page/SecurityOriginData.h:

(WebCore::SecurityOriginData::decode):

7:10 AM Changeset in webkit [255934] by Carlos Garcia Campos
  • 15 edits
    3 adds in releases/WebKitGTK/webkit-2.28

Merge r255875 - Regression(r248734) StorageAreaMap objects are getting leaked
https://bugs.webkit.org/show_bug.cgi?id=207073
<rdar://problem/59168065>

Reviewed by Darin Adler.

Source/WebCore:

Add test infrastructure for testing this change.

Test: http/tests/storage/storage-map-leaking.html

  • storage/StorageNamespace.h:

(WebCore::StorageNamespace::storageAreaMapCountForTesting const):

  • storage/StorageNamespaceProvider.h:
  • testing/Internals.cpp:

(WebCore::Internals::storageAreaMapCount const):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit:

Make sure that StorageAreaMap objects are getting removed from the HashMap
in StorageNamespaceImpl, once they no longer have any users.

  • WebProcess/WebStorage/StorageAreaImpl.cpp:

(WebKit::StorageAreaImpl::StorageAreaImpl):
(WebKit::StorageAreaImpl::~StorageAreaImpl):

  • WebProcess/WebStorage/StorageAreaMap.cpp:

(WebKit::StorageAreaMap::incrementUseCount):
(WebKit::StorageAreaMap::decrementUseCount):

  • WebProcess/WebStorage/StorageAreaMap.h:
  • WebProcess/WebStorage/StorageNamespaceImpl.cpp:

(WebKit::StorageNamespaceImpl::destroyStorageAreaMap):
(WebKit::StorageNamespaceImpl::didDestroyStorageAreaMap): Deleted.

  • WebProcess/WebStorage/StorageNamespaceImpl.h:

(WebKit::StorageNamespaceImpl::storageType const): Deleted.
(WebKit::StorageNamespaceImpl::storageNamespaceID const): Deleted.
(WebKit::StorageNamespaceImpl::topLevelOrigin const): Deleted.
(WebKit::StorageNamespaceImpl::quotaInBytes const): Deleted.

LayoutTests:

Add layout test coverage.

  • TestExpectations:
  • http/tests/storage/resources/storage-map-leaking-iframe.html: Added.
  • http/tests/storage/storage-map-leaking-expected.txt: Added.
  • http/tests/storage/storage-map-leaking.html: Added.
  • platform/wk2/TestExpectations:
7:10 AM Changeset in webkit [255933] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255868 - [IPC hardening] Protect against bad identifier in CacheStorageEngineConnection::reference() / dereference()
https://bugs.webkit.org/show_bug.cgi?id=207302
<rdar://problem/59016099>

Reviewed by Alex Christensen.

  • NetworkProcess/cache/CacheStorageEngineConnection.cpp:

(WebKit::CacheStorageEngineConnection::reference):
(WebKit::CacheStorageEngineConnection::dereference):

7:10 AM Changeset in webkit [255932] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255867 - [IPC hardening] Protect against bad parameters in NetworkRTCProvider::createResolver()
https://bugs.webkit.org/show_bug.cgi?id=207301
<rdar://problem/59011449>

Reviewed by Alex Christensen.

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::createResolver):

7:10 AM Changeset in webkit [255931] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255865 - [GTK][WPE] Add more fontconfig paths into the sandbox
https://bugs.webkit.org/show_bug.cgi?id=207293

Reviewed by Michael Catanzaro.

These paths were reported to be used on Debian.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::bindFonts):

7:10 AM Changeset in webkit [255930] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255864 - [IPC hardening] Protect against bad originIdentifier String in WebPageProxy::reachedApplicationCacheOriginQuota() / requestGeolocationPermissionForFrame()
https://bugs.webkit.org/show_bug.cgi?id=207292
<rdar://problem/58345601>

Reviewed by David Kilzer.

  • UIProcess/WebPageProxy.cpp:
7:10 AM Changeset in webkit [255929] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255860 - [IPC Hardening] Protect against targetId String being invalid in WebPageProxy::createInspectorTarget() / destroyInspectorTarget()
https://bugs.webkit.org/show_bug.cgi?id=207288
<rdar://problem/57645953>

Reviewed by Geoffrey Garen.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::createInspectorTarget):
(WebKit::WebPageProxy::destroyInspectorTarget):

7:10 AM Changeset in webkit [255928] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255855 - [IPC hardening] Protect against m_inspectorPage being null inWebInspectorProxy::attach()
https://bugs.webkit.org/show_bug.cgi?id=207289
<rdar://problem/58419789>

Reviewed by David Kilzer.

  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::attach):

7:10 AM Changeset in webkit [255927] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255854 - [IPC Hardening] Protect against m_inspectorPage being null in WebInspectorProxy::detach()
https://bugs.webkit.org/show_bug.cgi?id=207286
<rdar://problem/55422296>

Reviewed by David Kilzer.

  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::detach):

7:10 AM Changeset in webkit [255926] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255851 - [IPC Hardening] Protect against null String under WebInspectorProxy::save() / WebInspectorProxy::append()
https://bugs.webkit.org/show_bug.cgi?id=207284
<rdar://problem/55271616>

Reviewed by David Kilzer.

  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::save):
(WebKit::WebInspectorProxy::append):

7:10 AM Changeset in webkit [255925] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255850 - [IPC Hardening] Protect against m_inspectorPage being null in WebInspectorProxy::setAttachedWindowHeight() / setAttachedWindowWidth()
https://bugs.webkit.org/show_bug.cgi?id=207287
<rdar://problem/55422919>

Reviewed by Geoffrey Garen.

  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::setAttachedWindowHeight):
(WebKit::WebInspectorProxy::setAttachedWindowWidth):

7:10 AM Changeset in webkit [255924] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255849 - [IPC Hardening] Protect against m_inspectedPage / m_inspectorPage being null in WebInspectorProxy::resetState()
https://bugs.webkit.org/show_bug.cgi?id=207285
<rdar://problem/55420035>

Reviewed by David Kilzer.

  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::resetState):

7:10 AM Changeset in webkit [255923] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255848 - [IPC Hardening] Protect against bad RegistrableDomain under WebProcessProxy::didCollectPrewarmInformation()
https://bugs.webkit.org/show_bug.cgi?id=207281
<rdar://problem/55318108>

Reviewed by Geoffrey Garen.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didCollectPrewarmInformation):

7:09 AM Changeset in webkit [255922] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255847 - [IPC Hardening] Protect against bad ClientOrigin under Engine::readCachesFromDisk()
https://bugs.webkit.org/show_bug.cgi?id=207280
<rdar://problem/59013832>

Reviewed by Geoffrey Garen.

Protect against bad ClientOrigin under Engine::readCachesFromDisk(), as it is coming from
IPC from the WebContent process.

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::readCachesFromDisk):

7:09 AM Changeset in webkit [255921] by Carlos Garcia Campos
  • 38 edits in releases/WebKitGTK/webkit-2.28

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

Reviewed by Chris Dumez.

Source/WebCore:

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::includeCertificateInfo const):

  • platform/network/ResourceResponseBase.h:

(WebCore::ResourceResponseBase::usedLegacyTLS const):
(WebCore::ResourceResponseBase::encode const):
(WebCore::ResourceResponseBase::decode):

Source/WebKit:

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

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

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

Covered by new API tests.

  • NetworkProcess/NetworkCORSPreflightChecker.cpp:

(WebKit::NetworkCORSPreflightChecker::didReceiveResponse):

  • NetworkProcess/NetworkCORSPreflightChecker.h:
  • NetworkProcess/NetworkDataTask.cpp:

(WebKit::NetworkDataTask::didReceiveResponse):
(WebKit::NetworkDataTask::negotiatedLegacyTLS const): Deleted.

  • NetworkProcess/NetworkDataTask.h:

(WebKit::NetworkDataTaskClient::negotiatedLegacyTLS const): Deleted.

  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::didReceiveResponse):
(WebKit::NetworkLoad::notifyDidReceiveResponse):
(WebKit::NetworkLoad::throttleDelayCompleted):
(WebKit::NetworkLoad::negotiatedLegacyTLS const): Deleted.

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::didReceiveResponse):

  • NetworkProcess/PingLoad.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::didReceiveResponse):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):

  • NetworkProcess/curl/NetworkDataTaskCurl.cpp:

(WebKit::NetworkDataTaskCurl::invokeDidReceiveResponse):

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse):

  • UIProcess/PageLoadState.cpp:

(WebKit::PageLoadState::didCommitLoad):

  • UIProcess/PageLoadState.h:
  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::didCommitLoadForFrame):

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

(WebKit::WebPageProxy::commitProvisionalPage):
(WebKit::WebPageProxy::didCommitLoadForFrame):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):

Source/WTF:

  • wtf/persistence/PersistentDecoder.cpp:

(WTF::Persistence::Decoder::decode):

  • wtf/persistence/PersistentDecoder.h:
  • wtf/persistence/PersistentEncoder.cpp:

(WTF::Persistence::Encoder::encode):

  • wtf/persistence/PersistentEncoder.h:

Tools:

HTTPServer now supports HTTPS. Tell your friends!

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:

(testCertificate):
(testIdentity):
(credentialWithIdentity):

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:

(TestWebKitAPI::webViewWithNavigationDelegate):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/HTTPServer.h:
  • TestWebKitAPI/cocoa/HTTPServer.mm:

(TestWebKitAPI::HTTPServer::HTTPServer):
(TestWebKitAPI::HTTPServer::request const):

7:09 AM Changeset in webkit [255920] by Carlos Garcia Campos
  • 2 edits
    1 add in releases/WebKitGTK/webkit-2.28/Tools

Merge r255831 - [GTK] Fix dependencies build
https://bugs.webkit.org/show_bug.cgi?id=207273

Reviewed by Carlos Garcia Campos.

  • gtk/jhbuild.modules: Bumped wpebackend-fdo version to 1.4.1 and

added mesa as one of its deps. Added the xserver patch as well.

  • gtk/patches/xserver-gl-version.patch: Added.
7:09 AM Changeset in webkit [255919] by Carlos Garcia Campos
  • 2 edits
    8 adds in releases/WebKitGTK/webkit-2.28/LayoutTests

Merge r255830 - [GTK] Gardening, new baselines and update TestExpectations
https://bugs.webkit.org/show_bug.cgi?id=207259

Unreviewed gardening.

  • platform/gtk/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/css/css-color/animation/opacity-interpolation-expected.txt: Added.
  • platform/gtk/inspector/css/shadow-scoped-style-expected.txt: Added.
  • platform/gtk/webanimations/opacity-animation-yields-compositing-expected.txt: Added.
  • platform/gtk/webanimations/partly-accelerated-transition-by-removing-property-expected.txt: Added.
  • platform/gtk/webanimations/width-and-opacity-separate-animation-yields-compositing-expected.txt: Added.
7:09 AM Changeset in webkit [255918] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r255824 - [GTK] Cannot perform most local loads with sandbox enabled
https://bugs.webkit.org/show_bug.cgi?id=202071

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-02-05
Reviewed by Carlos Garcia Campos.

SecurityOrigin::canDisplay is improperly checking whether the target file URL points to a
file on the same "volume" (mount point) as the source file. That can't happen here because
this code is running in the web process, but only the network process has access to the
unsandboxed filesystem. This code can only check whether the target file exists within the
sandbox's mount namespace, but that's not what we want to do because we're not going to load
that file, we're going to ask the network process to load the file with the same path
outside the mount namespace.

We can probably live without this check. But if bringing it back is desired, it has to be
done someplace totally different, in network process code rather than web process code.

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::canDisplay const):

7:09 AM Changeset in webkit [255917] by Carlos Garcia Campos
  • 110 edits
    2 copies
    1 move
    32 adds
    5 deletes in releases/WebKitGTK/webkit-2.28/LayoutTests

Merge r255821 - [Web Animations] Update snapshot of Web Animations, CSS Animations and CSS Transitions WPT tests
https://bugs.webkit.org/show_bug.cgi?id=207263

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • resources/resource-files.json:
  • web-platform-tests/css/css-animations/AnimationEffect-getComputedTiming.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-canceling.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative-expected.txt: Added.
  • web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html: Added.
  • web-platform-tests/css/css-animations/CSSAnimation-effect.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-finished.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-getCurrentTime.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-id.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-playState.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-ready.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-startTime.tentative.html:
  • web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative-expected.txt: Removed.
  • web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative.html: Removed.
  • web-platform-tests/css/css-animations/Document-getAnimations.tentative-expected.txt:
  • web-platform-tests/css/css-animations/Document-getAnimations.tentative.html:
  • web-platform-tests/css/css-animations/Element-getAnimations-dynamic-changes.tentative.html:
  • web-platform-tests/css/css-animations/Element-getAnimations.tentative-expected.txt:
  • web-platform-tests/css/css-animations/Element-getAnimations.tentative.html:
  • web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html:
  • web-platform-tests/css/css-animations/KeyframeEffect-target.tentative.html:
  • web-platform-tests/css/css-animations/animation-before-initial-box-construction-001-expected.txt: Added.
  • web-platform-tests/css/css-animations/animation-before-initial-box-construction-001.html: Added.
  • web-platform-tests/css/css-animations/animationevent-interface.js:

(test):

  • web-platform-tests/css/css-animations/keyframes-remove-documentElement-crash.html:
  • web-platform-tests/css/css-animations/support/empty-sheet.css: Added.
  • web-platform-tests/css/css-animations/support/w3c-import.log:
  • web-platform-tests/css/css-animations/w3c-import.log:
  • web-platform-tests/css/css-backgrounds/animations/border-bottom-left-radius-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-bottom-right-radius-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-bottom-width-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-image-outset-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-image-slice-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-image-width-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-left-width-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-right-width-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-top-left-radius-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-top-right-radius-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-top-width-composition-expected.txt:
  • web-platform-tests/css/css-fonts/animations/font-variation-settings-composition-expected.txt:
  • web-platform-tests/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html:
  • web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative-expected.txt: Removed.
  • web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative.html: Removed.
  • web-platform-tests/css/css-transitions/CSSTransition-canceling.tentative.html:
  • web-platform-tests/css/css-transitions/CSSTransition-currentTime.tentative.html:
  • web-platform-tests/css/css-transitions/CSSTransition-effect.tentative.html:
  • web-platform-tests/css/css-transitions/CSSTransition-finished.tentative.html:
  • web-platform-tests/css/css-transitions/CSSTransition-ready.tentative.html:
  • web-platform-tests/css/css-transitions/CSSTransition-startTime.tentative.html:
  • web-platform-tests/css/css-transitions/Document-getAnimations.tentative-expected.txt:
  • web-platform-tests/css/css-transitions/Document-getAnimations.tentative.html:
  • web-platform-tests/css/css-transitions/Element-getAnimations.tentative.html:
  • web-platform-tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html:
  • web-platform-tests/css/css-transitions/KeyframeEffect-target.tentative.html:
  • web-platform-tests/css/css-transitions/README.md:
  • web-platform-tests/css/css-transitions/animations/text-shadow-composition-expected.txt: Added.
  • web-platform-tests/css/css-transitions/animations/text-shadow-composition.html: Added.
  • web-platform-tests/css/css-transitions/animations/text-shadow-interpolation-expected.txt: Added.
  • web-platform-tests/css/css-transitions/animations/text-shadow-interpolation.html: Added.
  • web-platform-tests/css/css-transitions/animations/vertical-align-composition-expected.txt: Added.
  • web-platform-tests/css/css-transitions/animations/vertical-align-composition.html: Added.
  • web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt: Added.
  • web-platform-tests/css/css-transitions/animations/vertical-align-interpolation.html: Added.
  • web-platform-tests/css/css-transitions/animations/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/combining-effects/w3c-import.log.
  • web-platform-tests/css/css-transitions/animations/z-index-interpolation-expected.txt: Added.
  • web-platform-tests/css/css-transitions/animations/z-index-interpolation.html: Added.
  • web-platform-tests/css/css-transitions/before-load-001.html:
  • web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed-expected.txt:
  • web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html:
  • web-platform-tests/css/css-transitions/properties-value-001.html:
  • web-platform-tests/css/css-transitions/properties-value-002.html:
  • web-platform-tests/css/css-transitions/properties-value-003.html:
  • web-platform-tests/css/css-transitions/properties-value-auto-001.html:
  • web-platform-tests/css/css-transitions/properties-value-implicit-001.html:
  • web-platform-tests/css/css-transitions/properties-value-inherit-001.html:
  • web-platform-tests/css/css-transitions/properties-value-inherit-002.html:
  • web-platform-tests/css/css-transitions/properties-value-inherit-003.html:
  • web-platform-tests/css/css-transitions/pseudo-elements-001.html:
  • web-platform-tests/css/css-transitions/transition-001.html:
  • web-platform-tests/css/css-transitions/transition-delay-001.html:
  • web-platform-tests/css/css-transitions/transition-duration-001.html:
  • web-platform-tests/css/css-transitions/transition-property-001.html:
  • web-platform-tests/css/css-transitions/transition-property-002.html:
  • web-platform-tests/css/css-transitions/transitionevent-interface.html:
  • web-platform-tests/css/css-transitions/w3c-import.log:
  • web-platform-tests/css/support/interpolation-testcommon.js:

(cssAnimationsInterpolation.isSupported):
(cssTransitionsInterpolation.isSupported):
(cssTransitionAllInterpolation.isSupported):
(webAnimationsInterpolation.isSupported):
(webAnimationsInterpolation.interpolateComposite):
(createInterpolationTestTargets):
(create_tests):
(test_interpolation):

  • web-platform-tests/web-animations/README.md:
  • web-platform-tests/web-animations/animation-model/animation-types/property-list.js:

(testAnimationSamplesWithAnyOrder):

  • web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform-expected.txt: Added.
  • web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform.html: Added.
  • web-platform-tests/web-animations/animation-model/combining-effects/w3c-import.log:
  • web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animatable/animate.html:
  • web-platform-tests/web-animations/interfaces/Animation/commitStyles-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animation/commitStyles.html:
  • web-platform-tests/web-animations/interfaces/Animation/onremove-expected.txt: Added.
  • web-platform-tests/web-animations/interfaces/Animation/onremove.html: Added.
  • web-platform-tests/web-animations/interfaces/Animation/pause.html:
  • web-platform-tests/web-animations/interfaces/Animation/play.html:
  • web-platform-tests/web-animations/interfaces/Animation/w3c-import.log:
  • web-platform-tests/web-animations/interfaces/AnimationEffect/updateTiming.html:
  • web-platform-tests/web-animations/interfaces/AnimationPlaybackEvent/w3c-import.log:
  • web-platform-tests/web-animations/interfaces/Document/getAnimations-expected.txt: Removed.
  • web-platform-tests/web-animations/interfaces/Document/w3c-import.log:
  • web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations-expected.txt: Added.
  • web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Document/getAnimations.html.
  • web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-animations/support/w3c-import.log.
  • web-platform-tests/web-animations/interfaces/DocumentTimeline/w3c-import.log:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor.html:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-002.html:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/setKeyframes.html:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events-expected.txt:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events.html:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/target.html:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/w3c-import.log:
  • web-platform-tests/web-animations/testcommon.js:

(cubicBezier): Deleted.

  • web-platform-tests/web-animations/timing-model/animations/finishing-an-animation-expected.txt:
  • web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/pausing-an-animation-expected.txt:
  • web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/playing-an-animation-expected.txt:
  • web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/reverse-running-animation-expected.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation-expected.txt:
  • web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation-expected.txt:
  • web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation-expected.txt:
  • web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/sync-start-times-expected.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/sync-start-times.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast-expected.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow-expected.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero-expected.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/w3c-import.log:
  • web-platform-tests/web-animations/w3c-import.log:

LayoutTests:

7:08 AM Changeset in webkit [255916] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255815 - Unreviewed, rolling out r255706.

Caused assertions in API tests

Reverted changeset:

"Partial revert of r248734 to fix leak of StorageAreaMaps"
https://bugs.webkit.org/show_bug.cgi?id=207073
https://trac.webkit.org/changeset/255706

7:08 AM Changeset in webkit [255915] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255814 - Unreviewed, follow-up assertion fix after r255662.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

7:08 AM Changeset in webkit [255914] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.28

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

Reviewed by Antti Koivisto.

Source/WebCore:

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

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

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::animationDidSeek):
(WebCore::KeyframeEffect::animationWasCanceled):
(WebCore::KeyframeEffect::willChangeRenderer):
(WebCore::KeyframeEffect::animationSuspensionStateDidChange):

LayoutTests:

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

  • webanimations/accelerated-animation-canceled-before-commit-expected.html: Added.
  • webanimations/accelerated-animation-canceled-before-commit.html: Added.
7:08 AM Changeset in webkit [255913] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r255790 - [GStreamer] Client-side video rendering doesn't fallback to internal compositing
https://bugs.webkit.org/show_bug.cgi?id=207208

Patch by Philippe Normand <philn@igalia.com> on 2020-02-05
Reviewed by Xabier Rodriguez-Calvar and Žan Doberšek.

Refactor the default video composition code into a self-contained
closure and invoke it if the video frame holder failed to export
the EGLImage to a valid DMABuf.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::GstVideoFrameHolder::GstVideoFrameHolder):
(WebCore::GstVideoFrameHolder::hasDMABuf const):
(WebCore::MediaPlayerPrivateGStreamer::pushTextureToCompositor):

3:23 AM Changeset in webkit [255912] by Carlos Garcia Campos
  • 2 edits in trunk

Unreviewed. [GTK] Use radio buttons instead of a combo for text direction in theme test

  • ManualTests/gtk/theme.html:
12:47 AM Changeset in webkit [255911] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebCore

[Cairo] Do not use old-style GNU field initializers
https://bugs.webkit.org/show_bug.cgi?id=207309

Reviewed by Carlos Garcia Campos.

No new tests needed.

  • platform/graphics/cairo/GradientCairo.cpp:

(WebCore::addConicSector): Use the standard named field initializer syntax instead.

12:34 AM Changeset in webkit [255910] by youenn@apple.com
  • 30 edits
    1 copy
    7 adds in trunk

[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
https://bugs.webkit.org/show_bug.cgi?id=206582
Source/WebCore:

<rdar://problem/58985368>

Reviewed by Eric Carlson.

AVAssetWriterDelegate allows to grab recorded data whenever wanted.
This delegate requires passing compressed samples to AVAssetWriter.
Implement video encoding and audio encoding in dedicated classes and use these classes before adding buffers to AVAssetWriter.
These classes are AudioSampleBufferCompressor and VideoSampleBufferCompressor.
They support AAC and H264 so far and should be further improved to support more encoding options.

Instantiate real writer only for platforms supporting AVAssetWriterDelegate, since it is not supported everywhere.
The writer, doing the pacakging, is receiving compressed buffer from the audio/video compressors.
It then sends data when being request to flush to its delegate, which will send data to the MediaRecorderPrivateWriter.
The MediaRecorderPrivateWriter stores the data in a SharedBuffer until MediaRecorder asks for data.

Note that, whenever we request data, we flush the writer and insert an end of video sample to make sure video data gets flushed.
Therefore data should not be requested too fast to get adequate video compression.

Covered by existing tests.

  • Modules/mediarecorder/MediaRecorderProvider.cpp:

(WebCore::MediaRecorderProvider::createMediaRecorderPrivate):

  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::create):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.h: Added.
  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm: Added.

(WebCore::AudioSampleBufferCompressor::create):
(WebCore::AudioSampleBufferCompressor::AudioSampleBufferCompressor):
(WebCore::AudioSampleBufferCompressor::~AudioSampleBufferCompressor):
(WebCore::AudioSampleBufferCompressor::initialize):
(WebCore::AudioSampleBufferCompressor::finish):
(WebCore::AudioSampleBufferCompressor::initAudioConverterForSourceFormatDescription):
(WebCore::AudioSampleBufferCompressor::computeBufferSizeForAudioFormat):
(WebCore::AudioSampleBufferCompressor::attachPrimingTrimsIfNeeded):
(WebCore::AudioSampleBufferCompressor::gradualDecoderRefreshCount):
(WebCore::AudioSampleBufferCompressor::sampleBufferWithNumPackets):
(WebCore::AudioSampleBufferCompressor::audioConverterComplexInputDataProc):
(WebCore::AudioSampleBufferCompressor::provideSourceDataNumOutputPackets):
(WebCore::AudioSampleBufferCompressor::processSampleBuffersUntilLowWaterTime):
(WebCore::AudioSampleBufferCompressor::processSampleBuffer):
(WebCore::AudioSampleBufferCompressor::addSampleBuffer):
(WebCore::AudioSampleBufferCompressor::getOutputSampleBuffer):
(WebCore::AudioSampleBufferCompressor::takeOutputSampleBuffer):

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(-[WebAVAssetWriterDelegate initWithWriter:]):
(-[WebAVAssetWriterDelegate assetWriter:didProduceFragmentedHeaderData:]):
(-[WebAVAssetWriterDelegate assetWriter:didProduceFragmentedMediaData:fragmentedMediaDataReport:]):
(-[WebAVAssetWriterDelegate close]):
(WebCore::MediaRecorderPrivateWriter::create):
(WebCore::MediaRecorderPrivateWriter::compressedVideoOutputBufferCallback):
(WebCore::MediaRecorderPrivateWriter::compressedAudioOutputBufferCallback):
(WebCore::MediaRecorderPrivateWriter::MediaRecorderPrivateWriter):
(WebCore::MediaRecorderPrivateWriter::~MediaRecorderPrivateWriter):
(WebCore::MediaRecorderPrivateWriter::initialize):
(WebCore::MediaRecorderPrivateWriter::processNewCompressedVideoSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::processNewCompressedAudioSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::startAssetWriter):
(WebCore::MediaRecorderPrivateWriter::appendCompressedAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendCompressedVideoSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendCompressedSampleBuffers):
(WebCore::appendEndsPreviousSampleDurationMarker):
(WebCore::MediaRecorderPrivateWriter::appendEndOfVideoSampleDurationIfNeeded):
(WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::clear):
(WebCore::copySampleBufferWithCurrentTimeStamp):
(WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):
(WebCore::createAudioFormatDescription):
(WebCore::createAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::stopRecording):
(WebCore::MediaRecorderPrivateWriter::appendData):

  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.h: Copied from Source/WebCore/platform/mediarecorder/MediaRecorderPrivateAVFImpl.h.
  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm: Added.

(WebCore::VideoSampleBufferCompressor::create):
(WebCore::VideoSampleBufferCompressor::VideoSampleBufferCompressor):
(WebCore::VideoSampleBufferCompressor::~VideoSampleBufferCompressor):
(WebCore::VideoSampleBufferCompressor::initialize):
(WebCore::VideoSampleBufferCompressor::finish):
(WebCore::VideoSampleBufferCompressor::videoCompressionCallback):
(WebCore::VideoSampleBufferCompressor::initCompressionSession):
(WebCore::VideoSampleBufferCompressor::processSampleBuffer):
(WebCore::VideoSampleBufferCompressor::addSampleBuffer):
(WebCore::VideoSampleBufferCompressor::getOutputSampleBuffer):
(WebCore::VideoSampleBufferCompressor::takeOutputSampleBuffer):

Source/WebCore/PAL:

<rdar://problem/58985368>

Reviewed by Eric Carlson.

Add soft link macros for VideoToolbox and AudioToolbox.

  • PAL.xcodeproj/project.pbxproj:
  • pal/cf/AudioToolboxSoftLink.cpp: Added.
  • pal/cf/AudioToolboxSoftLink.h: Added.
  • pal/cf/CoreMediaSoftLink.cpp:
  • pal/cf/CoreMediaSoftLink.h:
  • pal/cf/VideoToolboxSoftLink.cpp: Added.
  • pal/cf/VideoToolboxSoftLink.h: Added.

Source/WebKit:

<rdar://problem/58985368>

Reviewed by Eric Carlson.

Enable RemoteMediaRecorder only for systems supporting AVAssetWriterDelegate.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::didReceiveMessage):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:
  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.cpp:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.h:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.messages.in:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.h:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:
  • WebProcess/GPU/webrtc/MediaRecorderProvider.cpp:

(WebKit::MediaRecorderProvider::createMediaRecorderPrivate):

Source/WTF:

Reviewed by Eric Carlson.

  • wtf/PlatformHave.h:

LayoutTests:

Reviewed by Eric Carlson.

Disable tests on all platforms except the ones supporting AVAssetWriterDelegate.

  • TestExpectations:
  • http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-gpuprocess.html:

Remove web audio generation since there seems to be some unstability in web audio -> stream -> media recorder.
which should be fixed as follow-up specific patches.

  • platform/mac/TestExpectations:

Enable running tests.

12:07 AM Changeset in webkit [255909] by youenn@apple.com
  • 10 edits in trunk/Source

ServiceWorkerProvider::registerServiceWorkerClients is no longer needed
https://bugs.webkit.org/show_bug.cgi?id=207193

Reviewed by Chris Dumez.

Source/WebCore:

registerServiceWorkerClients is no longer needed since we moved service worker handling to network process.
We no longer have to optimize creating a sw server connection since we piggy back on the webprocess to network process connection.

As can be seen from DocumentLoader, we register service worker clients in DocumentLoader::commitData.
The only documents we do not register are documents for which we exit early due to creatingInitialEmptyDocument check.

registerServiceWorkerClients was used initially when starting the first service worker process.
This is obsolete since now we split service workers according sessionID and registrable domains.

No observable change of behavior if network process does not crash.
Covered by existing service worker tests crashing network process in the middle of processing.

  • workers/service/SWClientConnection.cpp:

(WebCore::SWClientConnection::registerServiceWorkerClients):

  • workers/service/SWClientConnection.h:
  • workers/service/ServiceWorkerProvider.cpp:
  • workers/service/ServiceWorkerProvider.h:

Source/WebKit:

Remove the request from WebProcessPool to register all service worker clients at launch of the first service worker process.
This is no longer needed and does not scale since our service workers are launched in different processes nowadays.

In case network process crashes, WebProcess will need to reregister their service worker clients.
This is lazily done when WebProcess tries to reconnect to the Network Process.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::ensureNetworkProcessConnection):

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

Feb 5, 2020:

11:00 PM Changeset in webkit [255908] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

Crash when printing at WebCore: WebCore::FrameView::paintContents
<https://webkit.org/b/207313>
<rdar://problem/56675778>

Reviewed by Brent Fulgham.

  • page/PrintContext.cpp:

(WebCore::PrintContext::spoolPage):
(WebCore::PrintContext::spoolRect):

  • Add nullptr check for frame.view(). This matches similar checks in other methods.
10:44 PM Changeset in webkit [255907] by wenson_hsieh@apple.com
  • 8 edits in trunk

[iOS] Provide a way to suppress software keyboards on WKWebView's WKContentView
https://bugs.webkit.org/show_bug.cgi?id=207272
<rdar://problem/59190828>

Reviewed by Tim Horton.

Source/WebKit:

Allow SPI clients to suppress the software keyboard using -_setSuppressSoftwareKeyboard: on WKWebView by
propagating the call to the WKContentView, which is the view that actually becomes first responder when an
element (e.g. a form control) is focused.

Test: KeyboardInputTests.SuppressSoftwareKeyboard

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _setSuppressSoftwareKeyboard:]):

Tools:

Add an API test to verify (through UIKeyboardImpl) that the software keyboard should be suppressed when setting
-_setSuppressSoftwareKeyboard: on the web view. This involves making -makeKeyWindow "work" in the API testing
environment on iOS, by swizzling out both -[NSBundle bundleIdentifier] and -[UIApplication keyWindow].

  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

(TestWebKitAPI::overrideBundleIdentifier):

  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(setOverriddenApplicationKeyWindow):
(applicationKeyWindowOverride):
(-[TestWKWebViewHostWindow makeKeyWindow]):

  • TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:
  • TestWebKitAPI/ios/UIKitSPI.h:

Also move the UIResponder (UIKitSPI) category from the internal section to the SPI section; this is redundant
when using the internal SDK to build, since these methods are already declared in UIResponder_Private.h.

10:39 PM Changeset in webkit [255906] by Russell Epstein
  • 1 edit in branches/safari-609-branch/Source/WebKit/WebProcess/WebPage/WebPage.h

Unreviewed build fix, rdar://problem/58942727

9:46 PM Changeset in webkit [255905] by don.olmstead@sony.com
  • 8 edits in trunk

[PlayStation] Build a shared JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=198446

Reviewed by Fujii Hironori.

.:

Compile bmalloc and WTF as OBJECT libraries that are then linked into a shared
JavaScriptCore. Using OBJECT libraries is a modern CMake way to have the behavior
of --whole-archive.

  • Source/cmake/OptionsPlayStation.cmake:

Source/JavaScriptCore:

Add TARGET_OBJECTS for bmalloc and WTF so JavaScriptCore links. Add bmalloc and
WTF compile definitions so exports are exposed.

  • PlatformPlayStation.cmake:

Source/WTF:

Add bmalloc definition when compiling WTF. Remove LanguageUnix.cpp since
LanguagePlayStation.cpp is present which results in duplicate symbol definitions.

  • wtf/PlatformPlayStation.cmake:

Tools:

Add TARGET_OBJECTS for bmalloc and WTF so TestWTF links.

  • TestWebKitAPI/PlatformPlayStation.cmake:
9:12 PM Changeset in webkit [255904] by Russell Epstein
  • 11 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r254873. rdar://problem/59161343

Revert suppressesConnectionTerminationOnSystemChange part of r254081
https://bugs.webkit.org/show_bug.cgi?id=205751
<rdar://problem/58725096>

There was an API client that still hadn't migrated to the replacement SPI.

  • NetworkProcess/NetworkProcess.h: (WebKit::NetworkProcess::suppressesConnectionTerminationOnSystemChange const):
  • NetworkProcess/NetworkProcessCreationParameters.cpp: (WebKit::NetworkProcessCreationParameters::encode const): (WebKit::NetworkProcessCreationParameters::decode):
  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm: (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
  • UIProcess/API/APIProcessPoolConfiguration.cpp: (API::ProcessPoolConfiguration::copy):
  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: (-[_WKProcessPoolConfiguration suppressesConnectionTerminationOnSystemChange]): (-[_WKProcessPoolConfiguration setSuppressesConnectionTerminationOnSystemChange:]):
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeNetworkProcess):

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

9:11 PM Changeset in webkit [255903] by Russell Epstein
  • 13 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r254081. rdar://problem/59161343

Remove _WKProcessPoolConfiguration.CTDataConnectionServiceType and suppressesConnectionTerminationOnSystemChange
https://bugs.webkit.org/show_bug.cgi?id=205751

Patch by Alex Christensen <achristensen@webkit.org> on 2020-01-06
Reviewed by Darin Adler.

Their replacements on _WKWebViewConfiguration have been adopted.

  • NetworkProcess/NetworkProcess.h: (WebKit::NetworkProcess::suppressesConnectionTerminationOnSystemChange const): Deleted.
  • NetworkProcess/NetworkProcessCreationParameters.cpp: (WebKit::NetworkProcessCreationParameters::encode const): (WebKit::NetworkProcessCreationParameters::decode):
  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm: (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::NetworkSessionCocoa::dataConnectionServiceType const): (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): (WebKit::globalCTDataConnectionServiceType): Deleted. (WebKit::NetworkSessionCocoa::setCTDataConnectionServiceType): Deleted.
  • UIProcess/API/APIProcessPoolConfiguration.cpp: (API::ProcessPoolConfiguration::copy):
  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: (-[_WKProcessPoolConfiguration suppressesConnectionTerminationOnSystemChange]): Deleted. (-[_WKProcessPoolConfiguration setSuppressesConnectionTerminationOnSystemChange:]): Deleted. (-[_WKProcessPoolConfiguration CTDataConnectionServiceType]): Deleted. (-[_WKProcessPoolConfiguration setCTDataConnectionServiceType:]): Deleted.
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeNetworkProcess):
  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::paymentCoordinatorCTDataConnectionServiceType):

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

9:11 PM Changeset in webkit [255902] by Russell Epstein
  • 2 edits in branches/safari-609-branch/Source/WebKit

Revert changes on safari-609-branch related to rdar://problem/59161343

Changes were merged incorrectly. Cleaning up.
This reverts commit r255891 and commit r255772.

9:07 PM Changeset in webkit [255901] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: the height of the undocked title area shouldn't change when zoomed
https://bugs.webkit.org/show_bug.cgi?id=207228

Reviewed by Timothy Hatcher.

  • UserInterface/Base/Main.js:

(WI.contentLoaded):
(WI.contentLoaded.updateZoomFactorCSSVariable): Added.
Save the zoom factor as a number in a CSS variable on the <body>.

  • UserInterface/Views/Variables.css:

(body.mac-platform:not(.docked)): Added.
(body:not(.docked)): Deleted.
Divide the default 22px by the current zoom factor so that it cancels out when rendered.
Make it so that the undocked title area is only shown on macOS <https://webkit.org/b/204627#c47>

8:44 PM Changeset in webkit [255900] by stephan.szabo@sony.com
  • 2 edits in trunk/Tools

[WinCairo] Set up fonts for layout tests for test bot image
https://bugs.webkit.org/show_bug.cgi?id=207223

Reviewed by Fujii Hironori.

  • WebKitTestRunner/InjectedBundle/win/ActivateFontsWin.cpp: Implement activateFonts to load fonts for test
8:29 PM Changeset in webkit [255899] by don.olmstead@sony.com
  • 9 edits in trunk

[PlayStation] Miscellaneous build fixes February 2020 edition
https://bugs.webkit.org/show_bug.cgi?id=207312

Unreviewed build fix.

Source/WebCore:

  • accessibility/AccessibilityObject.h: Add missing definition for !ENABLE(ACCESSIBILITY)

(WebCore::AccessibilityObject::detachPlatformWrapper):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:
  • platform/graphics/cairo/ImageBufferCairo.cpp: Add missing include

Source/WebKit:

  • NetworkProcess/NetworkDataTaskBlob.cpp: Add missing include.
  • UIProcess/Downloads/DownloadProxyMap.h: Add missing forward declaration.

Tools:

  • TestWebKitAPI/PlatformWebView.h: Remove #elif guard and just use #else
8:23 PM Changeset in webkit [255898] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix for Windows ports since r255875
https://bugs.webkit.org/show_bug.cgi?id=207073
<rdar://problem/59168065>

WEBCORE_TESTSUPPORT_EXPORT should be used only for WebCoreTestSupport, not for WebCore
See also Bug 203876.

  • storage/StorageNamespaceProvider.h: Replaced WEBCORE_TESTSUPPORT_EXPORT with WEBCORE_EXPORT.
7:48 PM Changeset in webkit [255897] by justin_michaud@apple.com
  • 15 edits
    3 adds in trunk

Deleting a property should not turn structures into uncacheable dictionaries
https://bugs.webkit.org/show_bug.cgi?id=206430

Reviewed by Yusuke Suzuki.

JSTests:

  • microbenchmarks/delete-property-from-prototype-chain.js: Added.

(assert):
(noInline.assert.getZ):
(noInline.getZ.C):
(doTest):
(delete.C.prototype.z):

  • microbenchmarks/delete-property-keeps-cacheable-structure.js: Added.

(assert):
(C):
(doTest):

  • stress/cache-put-by-id-different-attributes.js:

(makePrototypeDict):
(set x):

  • stress/cache-put-by-id-different-offset.js:

(makePrototypeDict):
(set x):

  • stress/cache-put-by-id-poly-proto.js:

(makePrototypeDict):
(set _):

  • stress/delete-property-check-structure-transition.js: Added.

(assert):
(assert_eq):
(assert_neq):
(sd):
(sid):
(testDeleteIsNotUncacheable):
(testCanMaterializeDeletes):
(testCanFlatten):
(testDeleteWithInlineCache.Object.prototype.globalProperty.42.makeFoo):
(testDeleteWithInlineCache.noInline.doTest):
(testDeleteWithInlineCache):

  • stress/flatten-object-zero-unused-inline-properties.js:

Source/JavaScriptCore:

Right now, deleteProperty/removePropertyTransition causes a structure transition to uncacheable dictionary. Instead, we should allow it to transition to a new regular structure like adding a property does. This means that we have to:

1) Break the assumption that structure transition offsets increase monotonically

We add a new flag to tell that a structure has deleted its property, and update materializePropertyTable to use it.

2) Add a new transition map and transition kind for deletes

We cache the delete transition. We will not transition back to a previous structure if you add then immediately remove a property.

3) Find some heuristic for when we should actually transition to uncacheable dictionary.

Since deleting properties is expected to be rare, we just walk the structure list and count its size on removal.

This patch also fixes a related bug in addProperty, where we did not use a GCSafeConcurrentJSLocker, and adds an option to trigger the bug. Finally, we add some helper methods to dollarVM to test.

This gives a 24x speedup on delete-property-keeps-cacheable-structure.js, and is neutral on delete-property-from-prototype-chain.js (which was already generating code using the inline cache).

  • heap/HeapInlines.h:

(JSC::Heap::decrementDeferralDepthAndGCIfNeeded):

  • runtime/JSObject.cpp:

(JSC::JSObject::deleteProperty):

  • runtime/OptionsList.h:
  • runtime/PropertyMapHashTable.h:

(JSC::PropertyTable::get):
(JSC::PropertyTable::add):
(JSC::PropertyTable::addDeletedOffset):
(JSC::PropertyTable::reinsert):

  • runtime/Structure.cpp:

(JSC::StructureTransitionTable::contains const):
(JSC::StructureTransitionTable::get const):
(JSC::StructureTransitionTable::add):
(JSC::Structure::Structure):
(JSC::Structure::materializePropertyTable):
(JSC::Structure::addNewPropertyTransition):
(JSC::Structure::removePropertyTransition):
(JSC::Structure::removePropertyTransitionFromExistingStructure):
(JSC::Structure::removeNewPropertyTransition):
(JSC::Structure::toUncacheableDictionaryTransition):
(JSC::Structure::remove):
(JSC::Structure::visitChildren):

  • runtime/Structure.h:
  • runtime/StructureInlines.h:

(JSC::Structure::forEachPropertyConcurrently):
(JSC::Structure::add):
(JSC::Structure::remove):
(JSC::Structure::removePropertyWithoutTransition):

  • runtime/StructureTransitionTable.h:

(JSC::StructureTransitionTable::Hash::hash):

  • tools/JSDollarVM.cpp:

(JSC::JSDollarVMHelper::functionGetStructureTransitionList):
(JSC::functionGetConcurrently):
(JSC::JSDollarVM::finishCreation):

7:36 PM Changeset in webkit [255896] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Some cookie table column headers should not be localizable
https://bugs.webkit.org/show_bug.cgi?id=206920

Reviewed by Timothy Hatcher.

Keep headers that match cookie directives always in English.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/CookieStorageContentView.js:

(WI.CookieStorageContentView.prototype.initialLayout):

7:28 PM Changeset in webkit [255895] by Devin Rousso
  • 3 edits in trunk/LayoutTests

REGRESSION (r254428): [ macOS wk1 ] inspector/canvas/recording-2d-full.html became slower, flakily times out
https://bugs.webkit.org/show_bug.cgi?id=207154
<rdar://problem/59127935>

Reviewed by Zalan Bujtas.

Rather than have a InspectorTest.log() for each line of output, collect the content into a
String/Array and do a single log to avoid lots of sequential layouts.

  • inspector/canvas/resources/create-context-utilities.js:

(TestPage.registerInitializer.awaitCanvasAdded):

  • inspector/canvas/resources/recording-utilities.js:

(TestPage.registerInitializer.log): Deleted.
(TestPage.registerInitializer.logRecording):
(TestPage.registerInitializer.logRecording.log): Added.

7:20 PM Changeset in webkit [255894] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: slightly increase the horizontal padding around scope bar items
https://bugs.webkit.org/show_bug.cgi?id=207321

Reviewed by Timothy Hatcher.

  • UserInterface/Views/ScopeBar.css:

(.scope-bar):
(body[dir=ltr] .scope-bar > li.multiple > select):
(body[dir=rtl] .scope-bar > li.multiple > select):

  • UserInterface/Views/RadioButtonNavigationItem.css:

(.navigation-bar .item.radio.button.text-only):

7:14 PM Changeset in webkit [255893] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Tab Bar: move window management items to the left and don't show reload/download unless remotely inspecting
https://bugs.webkit.org/show_bug.cgi?id=207318

Reviewed by Timothy Hatcher.

Move the window management buttons to the left side to match the system look/feel.

Hide the reload/download buttons when inspecting locally, as there are other ways of
reloading the inspected page or downloading a Web Archive.

  • UserInterface/Base/Main.js:

(WI.contentLoaded):
(WI._updateDockNavigationItems):
(WI._updateReloadTabBarButton):
(WI._updateDownloadTabBarButton):
(WI._updateInspectModeTabBarButton):
(WI._updateTabBarDividers): Added.
(WI._updateConsoleTabBarButtons):

  • UserInterface/Debug/Bootstrap.js:

(updateDebugUI):
(WI.runBootstrapOperations):

7:13 PM Changeset in webkit [255892] by Devin Rousso
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Network: the resource detail view cuts off the bottom statistics bar
https://bugs.webkit.org/show_bug.cgi?id=207320

Reviewed by Timothy Hatcher.

  • UserInterface/Views/Variables.css:

(:root):
Add a --network-statistics-height variable.

  • UserInterface/Views/NetworkDetailView.css:

(.network-detail):

  • UserInterface/Views/NetworkTableContentView.css:

(.network-table > .statistics):
Use the --network-statistics-height variable to make sure the statistics row and the
details view for the selected network entry don't overlap.
Drive-by: center the content of the statistics row to better match the system look/feel.

6:59 PM Changeset in webkit [255891] by Russell Epstein
  • 1 edit in branches/safari-609-branch/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h

Unreviewed Speculative Build-Fix, rdar://problem/59161343

6:40 PM Changeset in webkit [255890] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: increase the height of the tab bar to match other navigation bars
https://bugs.webkit.org/show_bug.cgi?id=207317

Reviewed by Timothy Hatcher.

  • UserInterface/Views/Variables.css:

(:root):
Define --tab-bar-height in terms of --navigation-bar-height so they share the same value.

  • UserInterface/Views/TabBar.css:

(.tab-bar > .tabs > .item):
(.tab-bar > .tabs > .item.pinned):
(.tab-bar > .tabs > .item.pinned.tab-picker): Deleted.
Increase the width to match the --tab-bar-height so that pinned tab bar items are square.

6:37 PM Changeset in webkit [255889] by ysuzuki@apple.com
  • 6 edits in trunk

[WTF] Try using 75% load factor for HashTable
https://bugs.webkit.org/show_bug.cgi?id=207183

Reviewed by Mark Lam.

Source/WTF:

We know that hash-table is one of the most memory consuming part in WebKit.
By analyzing many production hash-table implementations[1], I found that many
of them are using 75% load-factor while our one is 50%.

A/B test shows that 75% load-factor is performance-neutral in Speedometer2 and
JetStream2, while it offers 2~% improvement in Membuster. This means that we are
wasting too much memory for no-performance-improvement.

This patch changes the load-factor from 50% to 75%.

[1]: LLVM DenseMap, Abseil's, rust's, and so on.

  • wtf/HashTable.h:

(WTF::HashTable::shouldExpand):
(WTF::HashTable::shouldExpand const):
(WTF::HashTableCapacityForSize::capacityForSize):
(WTF::KeyTraits>::computeBestTableSize):

Tools:

Fix load-factor assumption in existing tests.

  • TestWebKitAPI/Tests/WTF/HashSet.cpp:

(TestWebKitAPI::testInitialCapacity):

LayoutTests:

It seems that this test is relying on hash-table's order.

  • http/tests/resourceLoadStatistics/aggregate-sorted-data-no-storage-access-expected.txt:
6:29 PM Changeset in webkit [255888] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Dragging handles in the easing popover selects sidebar text
https://bugs.webkit.org/show_bug.cgi?id=207316

Reviewed by Timothy Hatcher.

  • UserInterface/Views/BezierEditor.js:

(WI.BezierEditor.prototype._handleMousedown):

6:19 PM Changeset in webkit [255887] by Devin Rousso
  • 17 edits
    3 adds in trunk

Web Inspector: Sources: add a special breakpoint for controlling whether debugger statements pause
https://bugs.webkit.org/show_bug.cgi?id=206818

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • inspector/protocol/Debugger.json:
  • inspector/agents/InspectorDebuggerAgent.h:
  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::setPauseOnDebuggerStatements): Added.

  • bytecompiler/NodesCodegen.cpp:

(JSC::DebuggerStatementNode::emitBytecode):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::dumpLineColumnEntry):

  • interpreter/Interpreter.h:
  • interpreter/Interpreter.cpp:

(JSC::Interpreter::debug):
(WTF::printInternal):

  • debugger/Debugger.h:

(JSC::Debugger::setPauseOnDebuggerStatements): Added.

  • debugger/Debugger.cpp:

(JSC::Debugger::didReachDebuggerStatement): Added.
(JSC::Debugger::didReachBreakpoint): Deleted.
Replace DebugHookType::DidReachBreakpoint with DebugHookType::DidReachDebuggerStatement,
as it is only actually used for debugger; statements, not breakpoints.

Source/WebInspectorUI:

  • UserInterface/Controllers/DebuggerManager.js:

(WI.DebuggerManager):
(WI.DebuggerManager.prototype.async initializeTarget):
(WI.DebuggerManager.prototype.get debuggerStatementsBreakpoint): Added.
(WI.DebuggerManager.prototype.isBreakpointRemovable):
(WI.DebuggerManager.prototype._breakpointDisabledStateDidChange):

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

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

  • UserInterface/Views/BreakpointTreeElement.css:

(.breakpoint-debugger-statement-icon .icon): Added.

  • UserInterface/Images/DebuggerStatement.svg: Added.
  • Localizations/en.lproj/localizedStrings.js:

LayoutTests:

  • inspector/debugger/setPauseOnDebuggerStatements.html: Added.
  • inspector/debugger/setPauseOnDebuggerStatements-expected.txt: Added.
6:16 PM Changeset in webkit [255886] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Bezier editor popover should be strictly LTR
https://bugs.webkit.org/show_bug.cgi?id=206968
<rdar://problem/59007065>

Reviewed by Timothy Hatcher.

  • Don't mirror the coordinate system.
  • Don't reverste the order of the cubic bezier values, e.g. cubic-bezier(0, 0.5, 1, 0.5).
  • UserInterface/Views/BezierEditor.css:

(90%):
(to):
(body[dir=ltr] .bezier-editor): Deleted.
(body[dir=rtl] .bezier-editor): Deleted.
(body[dir=rtl] .bezier-editor > .bezier-container): Deleted.

  • UserInterface/Views/BezierEditor.js:
6:13 PM Changeset in webkit [255885] by Devin Rousso
  • 2 edits in trunk/Source/WebCore

Web Inspector: ensure that didClearWindowObjectInWorld is dispatched for the main world first
https://bugs.webkit.org/show_bug.cgi?id=207232

Reviewed by Timothy Hatcher.

It is necessary to order the DOMWrapperWorlds because certain callers expect the main
world to be the first item in the list, as they use the main world as an indicator of when
the page is ready to start evaluating JavaScript. For example, Web Inspector waits for the
main world change to clear any injected scripts and debugger/breakpoint state.

  • bindings/js/WebCoreJSClientData.cpp:

(WebCore::JSVMClientData::getAllWorlds):

5:21 PM Changeset in webkit [255884] by Andres Gonzalez
  • 3 edits in trunk/Source/WebCore

Check for null return from AXIsolatedTree::nodeForID.
https://bugs.webkit.org/show_bug.cgi?id=207300

Reviewed by Chris Fleizach.

  • As the IsolatedTree is updated, AXIsolatedTree::nodeForID may return

nullptr for objects that have been removed from the tree. Thus,
IsolatedObjects must check the returned value when updating children
and any other operations involving cached IDs.

  • Tidying up use of auto on for and if statements.
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::detachRemoteParts):
(WebCore::AXIsolatedObject::children):
(WebCore::AXIsolatedObject::accessibilityText const):
(WebCore::AXIsolatedObject::insertMathPairs):
(WebCore::AXIsolatedObject::objectAttributeValue const):
(WebCore::AXIsolatedObject::fillChildrenVectorForProperty const):
(WebCore::AXIsolatedObject::tree const): Deleted, moved inline to the header.

  • accessibility/isolatedtree/AXIsolatedObject.h:
5:13 PM Changeset in webkit [255883] by Jonathan Bedard
  • 4 edits in trunk/Tools

resulsdbpy: Fix unit tests
https://bugs.webkit.org/show_bug.cgi?id=207304

Reviewed by Aakash Jain.

  • resultsdbpy/resultsdbpy/model/configuration_context_unittest.py:

(ConfigurationContextTest.test_partition_by_configuration): Add branch to testing table.
(ConfigurationContextTest.test_partition_by_partial_configuration): Ditto.

  • resultsdbpy/resultsdbpy/model/failure_context_unittest.py:

(FailureContextTest.test_failures): Sort test failures by uuid for a predictable order in testing.
(FailureContextTest.test_unexpected_failures): Ditto.

  • resultsdbpy/resultsdbpy/model/mock_model_factory.py:

(MockModelFactory.iterate_all_commits): Do not batch requests since this function has no way
of knowing how expensive the callback may be.

5:09 PM WebKitGTK/2.26.x edited by Patrick Griffis
(diff)
5:08 PM Changeset in webkit [255882] by Russell Epstein
  • 1 edit in branches/safari-609-branch/Source/WebKit/WebProcess/WebPage/WebPage.h

Unreviewed build fix. rdar://problem/58942727

5:03 PM Changeset in webkit [255881] by jer.noble@apple.com
  • 11 edits in trunk/Source

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

Reviewed by Eric Carlson.

Source/WebCore:

  • platform/PlatformScreen.h:
  • platform/mac/PlatformScreenMac.mm:

(WebCore::setShouldOverrideScreenSupportsHighDynamicRange):

Source/WebCore/PAL:

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

Source/WebKit:

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

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::windowScreenDidChange):
(WebKit::WebPage::displayID const):

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

(WebKit::WebProcess::setScreenProperties): Deleted.

  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::setScreenProperties):
(WebKit::WebProcess::updatePageScreenProperties):

4:56 PM Changeset in webkit [255880] by Chris Dumez
  • 2 edits in trunk/Tools

Unreviewed, another build fix after r255846

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:
4:52 PM Changeset in webkit [255879] by wenson_hsieh@apple.com
  • 2 edits in trunk/Source/WebKit

[macCatalyst] Incorrect IBeam cursor when selecting text on Wikipedia
https://bugs.webkit.org/show_bug.cgi?id=207299
<rdar://problem/59200545>

Reviewed by Tim Horton.

After r255827, if EventHandler selects an IBeam cursor at the position information request location, we will
always attempt to show a caret at that location, whose height is the height of the editing caret for that
visible position. However, this means that:

  • It's possible for the caret to be incorrectly sized if the caret is before a large replaced element, such as

a table. Since the request location is also outside of any line rect, it doesn't make sense to use the caret
height for the height of the cursor. Instead, fall back to computed line height. This fixes an issue on
en.wikipedia.org where the line rect would sometimes update to an enormous size when selecting text, since
the caret would temporarily hover over an editing position that is before a large table.

  • This fallback path completely negates certain cursor behaviors; partially restore this behavior by making it

so that in the case where the cursor is in editable content and the line caret first line from the top of
the hit-tested node already contains the request point, don't bother trying to recenter the line rect to be
right over the request point.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::populateCaretContext):

4:30 PM Changeset in webkit [255878] by Alan Coon
  • 1 copy in tags/Safari-609.1.16.1

Tag Safari-609.1.16.1.

4:24 PM Changeset in webkit [255877] by Ryan Haddad
  • 2 edits in trunk/Tools

Unreviewed infrastructure fix.

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

(WebKitBuildbot): Delete entries for queues that have been removed from buildbot.

4:23 PM Changeset in webkit [255876] by Chris Dumez
  • 4 edits in trunk/Source

[IPC hardening] Fail IPC decoding of invalid ClientOrigin objects
https://bugs.webkit.org/show_bug.cgi?id=207305
<rdar://problem/58797651>

Reviewed by Brent Fulgham.

Fail IPC decoding of invalid ClientOrigin objects (empty ClientOrigin or deleted value in a HashMap).

  • page/ClientOrigin.h:

(WebCore::ClientOrigin::decode):

  • page/SecurityOriginData.h:

(WebCore::SecurityOriginData::decode):

4:11 PM Changeset in webkit [255875] by Chris Dumez
  • 15 edits
    3 adds in trunk

Regression(r248734) StorageAreaMap objects are getting leaked
https://bugs.webkit.org/show_bug.cgi?id=207073
<rdar://problem/59168065>

Reviewed by Darin Adler.

Source/WebCore:

Add test infrastructure for testing this change.

Test: http/tests/storage/storage-map-leaking.html

  • storage/StorageNamespace.h:

(WebCore::StorageNamespace::storageAreaMapCountForTesting const):

  • storage/StorageNamespaceProvider.h:
  • testing/Internals.cpp:

(WebCore::Internals::storageAreaMapCount const):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit:

Make sure that StorageAreaMap objects are getting removed from the HashMap
in StorageNamespaceImpl, once they no longer have any users.

  • WebProcess/WebStorage/StorageAreaImpl.cpp:

(WebKit::StorageAreaImpl::StorageAreaImpl):
(WebKit::StorageAreaImpl::~StorageAreaImpl):

  • WebProcess/WebStorage/StorageAreaMap.cpp:

(WebKit::StorageAreaMap::incrementUseCount):
(WebKit::StorageAreaMap::decrementUseCount):

  • WebProcess/WebStorage/StorageAreaMap.h:
  • WebProcess/WebStorage/StorageNamespaceImpl.cpp:

(WebKit::StorageNamespaceImpl::destroyStorageAreaMap):
(WebKit::StorageNamespaceImpl::didDestroyStorageAreaMap): Deleted.

  • WebProcess/WebStorage/StorageNamespaceImpl.h:

(WebKit::StorageNamespaceImpl::storageType const): Deleted.
(WebKit::StorageNamespaceImpl::storageNamespaceID const): Deleted.
(WebKit::StorageNamespaceImpl::topLevelOrigin const): Deleted.
(WebKit::StorageNamespaceImpl::quotaInBytes const): Deleted.

LayoutTests:

Add layout test coverage.

  • TestExpectations:
  • http/tests/storage/resources/storage-map-leaking-iframe.html: Added.
  • http/tests/storage/storage-map-leaking-expected.txt: Added.
  • http/tests/storage/storage-map-leaking.html: Added.
  • platform/wk2/TestExpectations:
4:06 PM Changeset in webkit [255874] by pvollan@apple.com
  • 6 edits in trunk/Source

[iOS] Do not create sandbox reports when the UI process cannot issue extensions to diagnostics service
https://bugs.webkit.org/show_bug.cgi?id=207279
<rdar://problem/59030957>
Source/WebKit:

Reviewed by Brent Fulgham.

Do not create sandbox reports when the UI process cannot issue mach extensions to the diagnostics service.
The majority of clients are capable of doing this.

No new tests, since it is not trivial to test if no sandbox reports are generated for a violation.

  • Shared/Cocoa/SandboxExtensionCocoa.mm:

(WebKit::SandboxExtensionImpl::create):
(WebKit::SandboxExtensionImpl::sandboxExtensionForType):
(WebKit::SandboxExtensionImpl::SandboxExtensionImpl):
(WebKit::SandboxExtension::createHandleForMachLookup):

  • Shared/SandboxExtension.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

Source/WTF:

Reviewed by Brent Fulgham.

Add flag which avoids generating sandbox reports.

  • wtf/spi/darwin/SandboxSPI.h:
3:57 PM Changeset in webkit [255873] by Russell Epstein
  • 2 edits in branches/safari-609-branch/Source/WebCore

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

[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

3:57 PM Changeset in webkit [255872] by Russell Epstein
  • 4 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r255260. rdar://problem/59098323

[Web Animations] Separate setting a timeline's current time from updating its animations
https://bugs.webkit.org/show_bug.cgi?id=206880

Reviewed by Dean Jackson.

While we must always update the current time of all timelines if a new animation frame has been requested,
regardless of the reason (rAF callback, animation servicing, etc.), we should only update timelines' animations
if at least one timeline has requested an update. We used to decide this at the DocumentTimeline level, but
this needs to be coordinated at the Document level to consider all timelines at once.

This is required for an upcoming patch where we make changes to the way we schedule animations to correctly
support mixed accelerated and non-accelerated properties.

No new tests since this shouldn't yield any visible behavior change.

  • animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::updateCurrentTime): (WebCore::DocumentTimeline::updateAnimationsAndSendEvents):
  • animation/DocumentTimeline.h:
  • dom/Document.cpp: (WebCore::Document::updateAnimationsAndSendEvents):

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

3:57 PM Changeset in webkit [255871] by Russell Epstein
  • 7 edits in branches/safari-609-branch

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

[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

3:57 PM Changeset in webkit [255870] by Russell Epstein
  • 4 edits in branches/safari-609-branch/Source/WebCore

Revert "Cherry-pick r255489. rdar://problem/59097788"
Revert "Cherry-pick r255260. rdar://problem/59098323"

This reverts commit r255758 and r255762.
Reverting to reland with pre-requisite patch to avoid conflicts.

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

[ macOS ] inspector/animation/lifecycle-css-animation.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207306

Unreviewed test gardening.

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

  • platform/mac/TestExpectations:
3:50 PM Changeset in webkit [255868] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC hardening] Protect against bad identifier in CacheStorageEngineConnection::reference() / dereference()
https://bugs.webkit.org/show_bug.cgi?id=207302
<rdar://problem/59016099>

Reviewed by Alex Christensen.

  • NetworkProcess/cache/CacheStorageEngineConnection.cpp:

(WebKit::CacheStorageEngineConnection::reference):
(WebKit::CacheStorageEngineConnection::dereference):

3:49 PM Changeset in webkit [255867] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC hardening] Protect against bad parameters in NetworkRTCProvider::createResolver()
https://bugs.webkit.org/show_bug.cgi?id=207301
<rdar://problem/59011449>

Reviewed by Alex Christensen.

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::createResolver):

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

ASSERTION FAILED: !needsLayout() [ macOS wk2 ] loader/stateobjects/pushstate-size-iframe.html is flaky crashing
https://bugs.webkit.org/show_bug.cgi?id=207303

Unreviewed test gardening.

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

  • platform/mac-wk2/TestExpectations:
3:24 PM Changeset in webkit [255865] by Patrick Griffis
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] Add more fontconfig paths into the sandbox
https://bugs.webkit.org/show_bug.cgi?id=207293

Reviewed by Michael Catanzaro.

These paths were reported to be used on Debian.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::bindFonts):

3:05 PM Changeset in webkit [255864] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC hardening] Protect against bad originIdentifier String in WebPageProxy::reachedApplicationCacheOriginQuota() / requestGeolocationPermissionForFrame()
https://bugs.webkit.org/show_bug.cgi?id=207292
<rdar://problem/58345601>

Reviewed by David Kilzer.

  • UIProcess/WebPageProxy.cpp:
2:55 PM Changeset in webkit [255863] by Chris Dumez
  • 2 edits in trunk/Tools

Unreviewed build fix after r255846.

  • TestWebKitAPI/cocoa/HTTPServer.h:
2:49 PM Changeset in webkit [255862] by jiewen_tan@apple.com
  • 7 edits in trunk

Defer ending AppSSO sheets til NSWindowDidDeminiaturize or NSApplicationDidUnhide
https://bugs.webkit.org/show_bug.cgi?id=207173
<rdar://problem/55669065>

Reviewed by Brent Fulgham.

Source/WebKit:

AppKit has a bug that [m_sheetWindow sheetParent] is null if the parent is minimized or the host app is hidden.
SheetParent is used to endSheet. Therefore, WebKit cannot dismiss AppSSO UIs in the above two cases if asked
by extensions.

This patch implements a workaround to detect those two cases and defer the endSheet til NSWindowDidDeminiaturize
or NSApplicationDidUnhide is received.

Covered by API tests.

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

(WebKit::SOAuthorizationSession::dismissViewController):

  • UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.mm:

(WebKit::SubFrameSOAuthorizationSession::abortInternal):
Treat abort like falling back to the web path for sub frame case given displaying an empty
iframe after aborting seems bad.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebView _setUpTestWindow:]):
Make the TestWKWebViewHostWindow miniaturizable to enable the test.

2:41 PM Changeset in webkit [255861] by Russell Epstein
  • 1 edit in branches/safari-609-branch/Source/WebCore/ChangeLog

Revert "Cherry-pick r254267. rdar://problem/58606290"

This reverts commit r255712 which was a ChangeLog only commit.

2:37 PM Changeset in webkit [255860] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC Hardening] Protect against targetId String being invalid in WebPageProxy::createInspectorTarget() / destroyInspectorTarget()
https://bugs.webkit.org/show_bug.cgi?id=207288
<rdar://problem/57645953>

Reviewed by Geoffrey Garen.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::createInspectorTarget):
(WebKit::WebPageProxy::destroyInspectorTarget):

2:13 PM Changeset in webkit [255859] by Russell Epstein
  • 70 edits
    3 copies
    3 moves
    22 adds in branches/safari-609-branch

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

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

2:13 PM Changeset in webkit [255858] by Russell Epstein
  • 1 edit in branches/safari-609-branch/Source/WebCore/animation/WebAnimation.cpp

Fix speculative merge conflict resolution. rdar://problem/59097789

2:11 PM Changeset in webkit [255857] by Jonathan Bedard
  • 2 edits in trunk/Tools

results.webkit.org: Apply ttl to archive shards
https://bugs.webkit.org/show_bug.cgi?id=207295

Rubber-stamped by Aakash Jain.

  • resultsdbpy/resultsdbpy/model/archive_context.py:

(ArchiveContext.ArchiveMetaDataByCommit): Use new table.
(ArchiveContext.ArchiveChunks): Use new table.
(ArchiveContext.register): Add ttl to archive shards.

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

REGRESSION: (r255821) [ Mac wk1 ] imported/w3c/web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html
https://bugs.webkit.org/show_bug.cgi?id=207278

Unreviewed test gardening.

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

[IPC hardening] Protect against m_inspectorPage being null inWebInspectorProxy::attach()
https://bugs.webkit.org/show_bug.cgi?id=207289
<rdar://problem/58419789>

Reviewed by David Kilzer.

  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::attach):

2:02 PM Changeset in webkit [255854] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC Hardening] Protect against m_inspectorPage being null in WebInspectorProxy::detach()
https://bugs.webkit.org/show_bug.cgi?id=207286
<rdar://problem/55422296>

Reviewed by David Kilzer.

  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::detach):

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

[ macOS wk2 ] webgpu/whlsl/dot-expressions.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207294

Unreviewed test gardening.

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

  • platform/mac-wk2/TestExpectations:
1:42 PM Changeset in webkit [255852] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

Update sandbox to allow communication with dnssd service
https://bugs.webkit.org/show_bug.cgi?id=207276
<rdar://problem/59158405>

Reviewed by Per Arne Vollan.

Testing and telemetry indicates that we need access to the DNSSD mach service in our Network Process

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
1:37 PM Changeset in webkit [255851] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC Hardening] Protect against null String under WebInspectorProxy::save() / WebInspectorProxy::append()
https://bugs.webkit.org/show_bug.cgi?id=207284
<rdar://problem/55271616>

Reviewed by David Kilzer.

  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::save):
(WebKit::WebInspectorProxy::append):

1:30 PM Changeset in webkit [255850] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC Hardening] Protect against m_inspectorPage being null in WebInspectorProxy::setAttachedWindowHeight() / setAttachedWindowWidth()
https://bugs.webkit.org/show_bug.cgi?id=207287
<rdar://problem/55422919>

Reviewed by Geoffrey Garen.

  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::setAttachedWindowHeight):
(WebKit::WebInspectorProxy::setAttachedWindowWidth):

1:28 PM Changeset in webkit [255849] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC Hardening] Protect against m_inspectedPage / m_inspectorPage being null in WebInspectorProxy::resetState()
https://bugs.webkit.org/show_bug.cgi?id=207285
<rdar://problem/55420035>

Reviewed by David Kilzer.

  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::resetState):

1:27 PM Changeset in webkit [255848] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC Hardening] Protect against bad RegistrableDomain under WebProcessProxy::didCollectPrewarmInformation()
https://bugs.webkit.org/show_bug.cgi?id=207281
<rdar://problem/55318108>

Reviewed by Geoffrey Garen.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didCollectPrewarmInformation):

1:26 PM Changeset in webkit [255847] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[IPC Hardening] Protect against bad ClientOrigin under Engine::readCachesFromDisk()
https://bugs.webkit.org/show_bug.cgi?id=207280
<rdar://problem/59013832>

Reviewed by Geoffrey Garen.

Protect against bad ClientOrigin under Engine::readCachesFromDisk(), as it is coming from
IPC from the WebContent process.

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::readCachesFromDisk):

1:07 PM Changeset in webkit [255846] by achristensen@apple.com
  • 38 edits in trunk

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

Reviewed by Chris Dumez.

Source/WebCore:

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::includeCertificateInfo const):

  • platform/network/ResourceResponseBase.h:

(WebCore::ResourceResponseBase::usedLegacyTLS const):
(WebCore::ResourceResponseBase::encode const):
(WebCore::ResourceResponseBase::decode):

Source/WebKit:

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

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

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

Covered by new API tests.

  • NetworkProcess/NetworkCORSPreflightChecker.cpp:

(WebKit::NetworkCORSPreflightChecker::didReceiveResponse):

  • NetworkProcess/NetworkCORSPreflightChecker.h:
  • NetworkProcess/NetworkDataTask.cpp:

(WebKit::NetworkDataTask::didReceiveResponse):
(WebKit::NetworkDataTask::negotiatedLegacyTLS const): Deleted.

  • NetworkProcess/NetworkDataTask.h:

(WebKit::NetworkDataTaskClient::negotiatedLegacyTLS const): Deleted.

  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::didReceiveResponse):
(WebKit::NetworkLoad::notifyDidReceiveResponse):
(WebKit::NetworkLoad::throttleDelayCompleted):
(WebKit::NetworkLoad::negotiatedLegacyTLS const): Deleted.

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::didReceiveResponse):

  • NetworkProcess/PingLoad.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::didReceiveResponse):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):

  • NetworkProcess/curl/NetworkDataTaskCurl.cpp:

(WebKit::NetworkDataTaskCurl::invokeDidReceiveResponse):

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse):

  • UIProcess/PageLoadState.cpp:

(WebKit::PageLoadState::didCommitLoad):

  • UIProcess/PageLoadState.h:
  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::didCommitLoadForFrame):

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

(WebKit::WebPageProxy::commitProvisionalPage):
(WebKit::WebPageProxy::didCommitLoadForFrame):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):

Source/WTF:

  • wtf/persistence/PersistentDecoder.cpp:

(WTF::Persistence::Decoder::decode):

  • wtf/persistence/PersistentDecoder.h:
  • wtf/persistence/PersistentEncoder.cpp:

(WTF::Persistence::Encoder::encode):

  • wtf/persistence/PersistentEncoder.h:

Tools:

HTTPServer now supports HTTPS. Tell your friends!

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:

(testCertificate):
(testIdentity):
(credentialWithIdentity):

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:

(TestWebKitAPI::webViewWithNavigationDelegate):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/HTTPServer.h:
  • TestWebKitAPI/cocoa/HTTPServer.mm:

(TestWebKitAPI::HTTPServer::HTTPServer):
(TestWebKitAPI::HTTPServer::request const):

1:05 PM Changeset in webkit [255845] by achristensen@apple.com
  • 16 edits in trunk

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

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

Source/WebKit:

Covered by new API test.

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

  • UIProcess/API/APIFrameInfo.h:
  • UIProcess/API/Cocoa/_WKDownload.h:
  • UIProcess/API/Cocoa/_WKDownload.mm:

(-[_WKDownload originatingFrameInfo]):

  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::generateDownloadID):
(WebKit::DownloadProxy::DownloadProxy):
(WebKit::DownloadProxy::create): Deleted.
(WebKit::DownloadProxy::setOriginatingPage): Deleted.

  • UIProcess/Downloads/DownloadProxy.h:

(WebKit::DownloadProxy::create):
(WebKit::DownloadProxy::frameInfo):

  • UIProcess/Downloads/DownloadProxyMap.cpp:

(WebKit::DownloadProxyMap::createDownloadProxy):

  • UIProcess/Downloads/DownloadProxyMap.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::createDownloadProxy):

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

(WebKit::WebPageProxy::receivedPolicyDecision):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::download):
(WebKit::WebProcessPool::resumeDownload):
(WebKit::WebProcessPool::createDownloadProxy):

  • UIProcess/WebProcessPool.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

(-[DownloadTestSchemeDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[DownloadSecurityOriginDelegate _downloadDidStart:]):
(loaded):

  • TestWebKitAPI/cocoa/HTTPServer.mm:
12:51 PM Changeset in webkit [255844] by Russell Epstein
  • 10 edits in branches/safari-609-branch/Source/WebCore

Revert r255770. rdar://problem/58942734

12:08 PM Changeset in webkit [255843] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Regression: [ Mac Debug wk2 ] http/tests/websocket/tests/hybi/server-close.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=207269

Unreviewed test gardening.

Updated test expectations.

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

  • platform/mac-wk2/TestExpectations:
11:59 AM Changeset in webkit [255842] by Russell Epstein
  • 1 edit in branches/safari-609-branch/Source/WebKit/WebProcess/WebPage/WebPage.h

Unreviewed build fix. rdar://problem/58942727

11:58 AM Changeset in webkit [255841] by dino@apple.com
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Fix MacCatalyst build.

  • src/libANGLE/validationEGL.cpp:

(egl::ValidateCreatePbufferFromClientBuffer):

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

REGRESSION (r228901): Layout Test http/tests/appcache/abort-cache-onprogress.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=183684

Unreviewed test gardening.

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

  • platform/mac-wk2/TestExpectations:
11:48 AM Changeset in webkit [255839] by Chris Fleizach
  • 3 edits
    2 adds in trunk

AX: replaceTextInRange should handle when called on the WebArea element
https://bugs.webkit.org/show_bug.cgi?id=207242
<rdar://problem/59173196>

Reviewed by Zalan Bujtas.

Source/WebCore:

Test: accessibility/mac/replace-text-with-range-on-webarea-element.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::replaceTextInRange):

LayoutTests:

  • accessibility/mac/replace-text-with-range-on-webarea-element-expected.txt: Added.
  • accessibility/mac/replace-text-with-range-on-webarea-element.html: Added.
11:48 AM Changeset in webkit [255838] by Alan Coon
  • 14 edits
    5 deletes in branches/safari-609.1.16-branch

Cherry-pick r255189. rdar://problem/59196094

Unreviewed, revert r253984 as it appears to be causing assertion leaks.
https://bugs.webkit.org/show_bug.cgi?id=205687

Source/WebKit:

  • Configurations/WebKit.xcconfig:
  • Platform/spi/ios/RunningBoardServicesSPI.h: Removed.
  • Scripts/process-entitlements.sh:
  • Shared/DependencyProcessAssertion.cpp: Removed.
  • Shared/DependencyProcessAssertion.h: Removed.
  • Shared/NativeWebTouchEvent.h:
  • Shared/ios/DependencyProcessAssertionIOS.mm: Removed.
  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/WebProcessProxyCocoa.mm: (WebKit::WebProcessProxy::processWasResumed):
  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeConnection):
  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::processTaskStateDidChange): (WebKit::WebProcess::releaseProcessWasResumedAssertions):

WebKitLibraries:

  • WebKitPrivateFrameworkStubs/iOS/13/RunningBoardServices.framework/RunningBoardServices.tbd: Removed.

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

11:37 AM Changeset in webkit [255837] by Alan Coon
  • 15 edits
    1 copy
    3 moves
    7 adds
    1 delete in branches/safari-609.1.16-branch

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

[Web Animations] Animations should run accelerated even if other animations targeting the same element are not accelerated
https://bugs.webkit.org/show_bug.cgi?id=206890
<rdar://problem/58961750>

Reviewed by Simon Fraser.

Source/WebCore:

Test: webanimations/width-and-opacity-separate-animation-yields-compositing.html

In the Web Animations implementation, when an element has some animated properties that can be accelerated and some that cannot be, we would never
run accelerated animations at all. However, in the "legacy" animation engine, we would animate properties that can be acclerated if possible.
We now attempt to run accelerated animations provided at least one animation is accelerated.

To do that, we now keep track of whether none, some or all of the animated properties of a given KeyframeEffect are accelerated using the new
m_acceleratedPropertiesState instance variable. We compute this property when creating the blending keyframes for the effect.

Then, as time progresses and the effect is resolved, updateAcceleratedActions() is called and we simply use the effect's phase to determine
whether we need to enqueue actions to start, pause, seek or end accelerated animations. This is an improvement over how this method used to work
since we would run accelerated animations while in their delay phase, which did not match the "legacy" animation engine's behavior.

We've also removed the single method that provided the accelerated characteristics of a KeyframeEffect, isAccelerated(), with a few more methods:

  • isRunningAccelerated(): the effect is currently running accelerated animations.
  • isAboutToRunAccelerated(): the effect has pending accelerated actions that should make it run accelerated animations when accelerated actions are updated next.
  • isCompletelyAccelerated(): the effect animates only accelerated properties.
  • isCurrentlyAffectingProperty(property, accelerated): the effect is currently animating the given property, with the option to specify whether that animation is accelerated.

We use this information in a few new places. If an effect returns true for either isRunningAccelerated() or isAboutToRunAccelerated() when
Element::applyKeyframeEffects() is called, we set the AnimationImpact::RequiresRecomposite flag. In RenderLayerCompositor::requiresCompositingForAnimation(),
if an effect returns true for isCurrentlyAffectingProperty() with the accelerated flag set to true, the method returns true, matching the logic
used by the "legacy" animation engine.

All in all, this better aligns the behavior of the "legacy" and Web Animations engines to run accelerated animations in the same circumstances.

  • animation/AnimationTimeline.cpp: (WebCore::AnimationTimeline::updateCSSTransitionsForElementAndProperty): Use KeyframeEfffect::isRunningAccelerated() instead of KeyframeEffect::isAccelerated().
  • animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::isRunningAcceleratedAnimationOnRenderer const): Use KeyframeEffect::isCurrentlyAffectingProperty() instead of checking both isRunningAccelerated() and manually looking at the effect's animated properties.
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::setBlendingKeyframes): Call computeAcceleratedPropertiesState() instead of the now-defunct computeShouldRunAccelerated(). (WebCore::KeyframeEffect::apply): Keep track of the newly computed phase so that we may use it in the new isCurrentlyAffectingProperty() without having to recompute it on each call. (WebCore::KeyframeEffect::isCurrentlyAffectingProperty const): Indicates whether a given property is currently animated (active phase) with the option to specify whether that animation is accelerated. (WebCore::KeyframeEffect::computeAcceleratedPropertiesState): Compute whether none, some or all of the animated properties of the given effect can be accelerated. (WebCore::KeyframeEffect::updateAcceleratedActions): Use the phase to determine which accelerated actions to enqueue. (WebCore::KeyframeEffect::animationDidSeek): Use the new m_isRunningAccelerated state to determine whether the animation is presently running accelerated. (WebCore::KeyframeEffect::animationWasCanceled): Use the new m_isRunningAccelerated state to determine whether the animation is presently running accelerated. (WebCore::KeyframeEffect::animationSuspensionStateDidChange): Use the new m_isRunningAccelerated state to determine whether the animation is presently running accelerated. (WebCore::KeyframeEffect::applyPendingAcceleratedActions):
  • animation/KeyframeEffect.h: (WebCore::KeyframeEffect::isRunningAccelerated const): (WebCore::KeyframeEffect::isAboutToRunAccelerated const): (WebCore::KeyframeEffect::isCompletelyAccelerated const):
  • animation/KeyframeEffectStack.cpp: (WebCore::KeyframeEffectStack::isCurrentlyAffectingProperty const): Indicates whether any of the effects in the stack animates a given property, with the option to specify whether the animation should be accelerated.
  • animation/KeyframeEffectStack.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::effectTargetDidChange): Ensure we schedule an animation update if an effect is no longer animating a given element or newly animating an element, to ensure that replaced animations may be removed. (WebCore::WebAnimation::isCompletelyAccelerated const): Convenience function to call isCompletelyAccelerated() on the animation's effect. (WebCore::WebAnimation::computeRelevance): Check the replaced state when computing relevance. (WebCore::WebAnimation::timeToNextTick const): Schedule an immediate update if a given animation is not _completely_ accelerated.
  • animation/WebAnimation.h:
  • dom/Element.cpp: (WebCore::Element::keyframeEffectStack const): (WebCore::Element::applyKeyframeEffects): Set the AnimationImpact::RequiresRecomposite flag when the animation is either currently running accelerated or expected to be in the next accelerated animation update.
  • dom/Element.h:
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::requiresCompositingForAnimation const): Use the same logic as for the "legacy" animation engine to determine whether an animation requires compositing using the new KeyframeEffect::isCurrentlyAffectingProperty() method. (WebCore::RenderLayerCompositor::isRunningTransformAnimation const): Refactor some code to use the new KeyframeEffect::isCurrentlyAffectingProperty() method.

LayoutTests:

Update some tests that assumed a mix of accelerated and non-accelerated properties would not yield accelerated animations.
We also make some WK1-specific expectation due to compositing being disabled when opacity is the only potentially-accelerated
property to be animated.

  • platform/mac-wk1/imported/w3c/web-platform-tests/css/css-color/animation/opacity-interpolation-expected.txt: Added.
  • platform/mac-wk1/webanimations/opacity-animation-yields-compositing-expected.txt: Added.
  • platform/mac-wk1/webanimations/opacity-animation-yields-compositing-span-expected.txt: Added.
  • platform/mac-wk1/webanimations/partly-accelerated-transition-by-removing-property-expected.txt: Added.
  • platform/mac-wk1/webanimations/width-and-opacity-separate-animation-yields-compositing-expected.txt: Added.
  • webanimations/left-and-opacity-animation-yields-no-compositing-expected.txt: Removed.
  • webanimations/partly-accelerated-transition-by-removing-property-expected.txt:
  • webanimations/width-and-opacity-separate-animation-yields-compositing-expected.txt: Added.
  • webanimations/width-and-opacity-separate-animation-yields-compositing.html: Renamed from LayoutTests/webanimations/left-and-opacity-animation-yields-no-compositing.html.
  • webanimations/width-and-opacity-separate-animation-yields-no-compositing-expected.txt: Removed.
  • webanimations/width-and-opacity-separate-animation-yields-no-compositing.html: Removed.

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

11:35 AM Changeset in webkit [255836] by Alan Coon
  • 2 edits in branches/safari-609.1.16-branch/Source/WebCore

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

[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

11:35 AM Changeset in webkit [255835] by Alan Coon
  • 7 edits in branches/safari-609.1.16-branch

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

[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

11:31 AM Changeset in webkit [255834] by Alan Coon
  • 8 edits in branches/safari-609.1.16-branch/Source

Versioning.

11:28 AM Changeset in webkit [255833] by Alan Coon
  • 1 copy in branches/safari-609.1.16-branch

New branch.

11:14 AM Changeset in webkit [255832] by youenn@apple.com
  • 4 edits
    8 adds in trunk/LayoutTests

Improve stability of webrtc/video-autoplay.html by splitting tests in multiple files
https://bugs.webkit.org/show_bug.cgi?id=207252

Reviewed by Eric Carlson.

webrtc/video-autplay.html is flaky on bots.
On debug bots, removing the video element from the DOM does not always pause it in a timely manner.
To improve reliability, we split tests in individual files.
Removing flakiness expectation from video-autoplay.html since it no longer contains the flaky tests.

  • TestExpectations:
  • webrtc/video-autoplay-expected.txt:
  • webrtc/video-autoplay.html:
  • webrtc/video-autoplay1-expected.txt: Added.
  • webrtc/video-autoplay1.html: Added.
  • webrtc/video-autoplay2-expected.txt: Added.
  • webrtc/video-autoplay2.html: Added.
  • webrtc/video-autoplay3-expected.txt: Added.
  • webrtc/video-autoplay3.html: Added.
  • webrtc/video-autoplay4-expected.txt: Added.
  • webrtc/video-autoplay4.html: Added.
11:10 AM Changeset in webkit [255831] by calvaris@igalia.com
  • 2 edits
    1 add in trunk/Tools

[GTK] Fix dependencies build
https://bugs.webkit.org/show_bug.cgi?id=207273

Reviewed by Carlos Garcia Campos.

  • gtk/jhbuild.modules: Bumped wpebackend-fdo version to 1.4.1 and

added mesa as one of its deps. Added the xserver patch as well.

  • gtk/patches/xserver-gl-version.patch: Added.
10:38 AM Changeset in webkit [255830] by Diego Pino Garcia
  • 2 edits
    8 adds in trunk/LayoutTests

[GTK] Gardening, new baselines and update TestExpectations
https://bugs.webkit.org/show_bug.cgi?id=207259

Unreviewed gardening.

  • platform/gtk/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/css/css-color/animation/opacity-interpolation-expected.txt: Added.
  • platform/gtk/inspector/css/shadow-scoped-style-expected.txt: Added.
  • platform/gtk/webanimations/opacity-animation-yields-compositing-expected.txt: Added.
  • platform/gtk/webanimations/partly-accelerated-transition-by-removing-property-expected.txt: Added.
  • platform/gtk/webanimations/width-and-opacity-separate-animation-yields-compositing-expected.txt: Added.
10:37 AM Changeset in webkit [255829] by don.olmstead@sony.com
  • 10 edits in trunk/Source/bmalloc

[bmalloc] Add declspec support for export macros
https://bugs.webkit.org/show_bug.cgi?id=207158

Reviewed by Yusuke Suzuki.

Add a check for has_declspec_attribute which is a Clang extension for Microsoft
style
declspec attributes in BCompiler.h. Then use that check within BPlatform.h
to determine if declspec or visibility("default") should be used for the export
macros.

The BExport.h file was then expanded to properly implement declspec definitions
for export and import. Libraries that could be compiled statically in WebKit have
a STATICALLY_LINKED_WITH_${library} definition for when they're compiled statically
and later exposed through a different shared library. In practice though this is
really only needed when
declspec is used since this is the only case where the
import and export declarations differ.

The BEXPORT on StaticPerProcess resulted in undefined symbol errors when WebCore
was linked. Specifically IsoSharedHeap::getFastCase and IsoSharedHeap::getSlowCase
which is a subclass. It appears that Storage was the only one required to be
exported. This only appeared due to how declspec requires exports and imports
to be defined differently.

Also added support for export macros on PlayStation in the BPlatform.h file and
fixed any exports for that platform when building.

  • CMakeLists.txt:
  • bmalloc/Allocator.h:
  • bmalloc/AvailableMemory.h:
  • bmalloc/BCompiler.h:
  • bmalloc/BExport.h:
  • bmalloc/BPlatform.h:
  • bmalloc/Cache.h:
  • bmalloc/IsoTLS.h:
  • bmalloc/StaticPerProcess.h:
10:24 AM Changeset in webkit [255828] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ iPadOS wk2 Debug ] compositing/shared-backing/sharing-child-contributes-to-overlap.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=207274

Unreviewed test gardening.

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

  • platform/ipad/TestExpectations:
10:22 AM Changeset in webkit [255827] by wenson_hsieh@apple.com
  • 2 edits in trunk/Source/WebKit

[macCatalyst] IBeam cursor doesn't show up when hovering over text form controls prior to editing
https://bugs.webkit.org/show_bug.cgi?id=207268
<rdar://problem/59188152>

Reviewed by Tim Horton.

On macCatalyst, when hovering over textareas and input fields that have not been edited yet, the cursor fails to
change to an IBeam and instead falls back to the default style. Even though EventHandler::selectCursor()
returns IBeam, we end up not actually using an IBeam because the position information's lineCaretExtent is
an empty rect, which means the caret height is 0 and, more importantly, the line rect will not contain the
request point.

The line rect is empty in text fields that have not been edited yet because the form control's inner plaintext
contenteditable div (embedded in the shadow root) does not contain any child renderers with a non-zero height.
Even if it did, however, the element may still be much taller than the combined height of the inner div's
children, so the line rect may still not contain the position information request point (this is most easily
noticeable when focusing a textarea, typing a few letters, and then moving the cursor to near the bottom of the
textarea element).

To fix this, add a fallback path for the scenario where we want to show an IBeam, but fail to find line rects
that contain the request point. Instead, we still show an IBeam, but simply fake the lineCaretExtent to be an
element-wide rect that is the height of the caret, and is also vertically centered about the request point.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::populateCaretContext):

10:12 AM WebKitGTK/2.26.x edited by Michael Catanzaro
(diff)
10:08 AM Changeset in webkit [255826] by Chris Dumez
  • 2 edits in trunk/Tools

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

Reviewed by Youenn Fablet.

Add API test coverage for fix landed in r255677.

  • TestWebKitAPI/Tests/WebKitCocoa/ModalAlerts.mm:

(-[SlowBeforeUnloadPromptUIDelegate _webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler:]):
(TEST):

10:08 AM Changeset in webkit [255825] by Chris Dumez
  • 4 edits in trunk/LayoutTests

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

Reviewed by Wenson Hsieh.

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

  • fast/scrolling/ios/scroll-events-back-forward-expected.txt:
  • fast/scrolling/ios/scroll-events-back-forward.html:
  • platform/ios-wk2/TestExpectations:
10:06 AM Changeset in webkit [255824] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GTK] Cannot perform most local loads with sandbox enabled
https://bugs.webkit.org/show_bug.cgi?id=202071

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-02-05
Reviewed by Carlos Garcia Campos.

SecurityOrigin::canDisplay is improperly checking whether the target file URL points to a
file on the same "volume" (mount point) as the source file. That can't happen here because
this code is running in the web process, but only the network process has access to the
unsandboxed filesystem. This code can only check whether the target file exists within the
sandbox's mount namespace, but that's not what we want to do because we're not going to load
that file, we're going to ask the network process to load the file with the same path
outside the mount namespace.

We can probably live without this check. But if bringing it back is desired, it has to be
done someplace totally different, in network process code rather than web process code.

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::canDisplay const):

9:48 AM Changeset in webkit [255823] by Brent Fulgham
  • 4 edits in branches/safari-609-branch/Source/WebKit

Correct sandboxes. rdar://problem/59098315

9:47 AM Changeset in webkit [255822] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[iOS wk2 Debug] imported/w3c/web-platform-tests/mathml/presentation-markup/scripts/cramped-001.html is failing
https://bugs.webkit.org/show_bug.cgi?id=207077

Unreviewed test gardening.

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

  • platform/ios-wk2/TestExpectations:
9:29 AM Changeset in webkit [255821] by graouts@webkit.org
  • 110 edits
    2 copies
    1 move
    32 adds
    5 deletes in trunk/LayoutTests

[Web Animations] Update snapshot of Web Animations, CSS Animations and CSS Transitions WPT tests
https://bugs.webkit.org/show_bug.cgi?id=207263

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • resources/resource-files.json:
  • web-platform-tests/css/css-animations/AnimationEffect-getComputedTiming.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-canceling.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative-expected.txt: Added.
  • web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html: Added.
  • web-platform-tests/css/css-animations/CSSAnimation-effect.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-finished.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-getCurrentTime.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-id.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-playState.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-ready.tentative.html:
  • web-platform-tests/css/css-animations/CSSAnimation-startTime.tentative.html:
  • web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative-expected.txt: Removed.
  • web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative.html: Removed.
  • web-platform-tests/css/css-animations/Document-getAnimations.tentative-expected.txt:
  • web-platform-tests/css/css-animations/Document-getAnimations.tentative.html:
  • web-platform-tests/css/css-animations/Element-getAnimations-dynamic-changes.tentative.html:
  • web-platform-tests/css/css-animations/Element-getAnimations.tentative-expected.txt:
  • web-platform-tests/css/css-animations/Element-getAnimations.tentative.html:
  • web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html:
  • web-platform-tests/css/css-animations/KeyframeEffect-target.tentative.html:
  • web-platform-tests/css/css-animations/animation-before-initial-box-construction-001-expected.txt: Added.
  • web-platform-tests/css/css-animations/animation-before-initial-box-construction-001.html: Added.
  • web-platform-tests/css/css-animations/animationevent-interface.js:

(test):

  • web-platform-tests/css/css-animations/keyframes-remove-documentElement-crash.html:
  • web-platform-tests/css/css-animations/support/empty-sheet.css: Added.
  • web-platform-tests/css/css-animations/support/w3c-import.log:
  • web-platform-tests/css/css-animations/w3c-import.log:
  • web-platform-tests/css/css-backgrounds/animations/border-bottom-left-radius-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-bottom-right-radius-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-bottom-width-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-image-outset-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-image-slice-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-image-width-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-left-width-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-right-width-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-top-left-radius-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-top-right-radius-composition-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-top-width-composition-expected.txt:
  • web-platform-tests/css/css-fonts/animations/font-variation-settings-composition-expected.txt:
  • web-platform-tests/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html:
  • web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative-expected.txt: Removed.
  • web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative.html: Removed.
  • web-platform-tests/css/css-transitions/CSSTransition-canceling.tentative.html:
  • web-platform-tests/css/css-transitions/CSSTransition-currentTime.tentative.html:
  • web-platform-tests/css/css-transitions/CSSTransition-effect.tentative.html:
  • web-platform-tests/css/css-transitions/CSSTransition-finished.tentative.html:
  • web-platform-tests/css/css-transitions/CSSTransition-ready.tentative.html:
  • web-platform-tests/css/css-transitions/CSSTransition-startTime.tentative.html:
  • web-platform-tests/css/css-transitions/Document-getAnimations.tentative-expected.txt:
  • web-platform-tests/css/css-transitions/Document-getAnimations.tentative.html:
  • web-platform-tests/css/css-transitions/Element-getAnimations.tentative.html:
  • web-platform-tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html:
  • web-platform-tests/css/css-transitions/KeyframeEffect-target.tentative.html:
  • web-platform-tests/css/css-transitions/README.md:
  • web-platform-tests/css/css-transitions/animations/text-shadow-composition-expected.txt: Added.
  • web-platform-tests/css/css-transitions/animations/text-shadow-composition.html: Added.
  • web-platform-tests/css/css-transitions/animations/text-shadow-interpolation-expected.txt: Added.
  • web-platform-tests/css/css-transitions/animations/text-shadow-interpolation.html: Added.
  • web-platform-tests/css/css-transitions/animations/vertical-align-composition-expected.txt: Added.
  • web-platform-tests/css/css-transitions/animations/vertical-align-composition.html: Added.
  • web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt: Added.
  • web-platform-tests/css/css-transitions/animations/vertical-align-interpolation.html: Added.
  • web-platform-tests/css/css-transitions/animations/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/combining-effects/w3c-import.log.
  • web-platform-tests/css/css-transitions/animations/z-index-interpolation-expected.txt: Added.
  • web-platform-tests/css/css-transitions/animations/z-index-interpolation.html: Added.
  • web-platform-tests/css/css-transitions/before-load-001.html:
  • web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed-expected.txt:
  • web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html:
  • web-platform-tests/css/css-transitions/properties-value-001.html:
  • web-platform-tests/css/css-transitions/properties-value-002.html:
  • web-platform-tests/css/css-transitions/properties-value-003.html:
  • web-platform-tests/css/css-transitions/properties-value-auto-001.html:
  • web-platform-tests/css/css-transitions/properties-value-implicit-001.html:
  • web-platform-tests/css/css-transitions/properties-value-inherit-001.html:
  • web-platform-tests/css/css-transitions/properties-value-inherit-002.html:
  • web-platform-tests/css/css-transitions/properties-value-inherit-003.html:
  • web-platform-tests/css/css-transitions/pseudo-elements-001.html:
  • web-platform-tests/css/css-transitions/transition-001.html:
  • web-platform-tests/css/css-transitions/transition-delay-001.html:
  • web-platform-tests/css/css-transitions/transition-duration-001.html:
  • web-platform-tests/css/css-transitions/transition-property-001.html:
  • web-platform-tests/css/css-transitions/transition-property-002.html:
  • web-platform-tests/css/css-transitions/transitionevent-interface.html:
  • web-platform-tests/css/css-transitions/w3c-import.log:
  • web-platform-tests/css/support/interpolation-testcommon.js:

(cssAnimationsInterpolation.isSupported):
(cssTransitionsInterpolation.isSupported):
(cssTransitionAllInterpolation.isSupported):
(webAnimationsInterpolation.isSupported):
(webAnimationsInterpolation.interpolateComposite):
(createInterpolationTestTargets):
(create_tests):
(test_interpolation):

  • web-platform-tests/web-animations/README.md:
  • web-platform-tests/web-animations/animation-model/animation-types/property-list.js:

(testAnimationSamplesWithAnyOrder):

  • web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform-expected.txt: Added.
  • web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform.html: Added.
  • web-platform-tests/web-animations/animation-model/combining-effects/w3c-import.log:
  • web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animatable/animate.html:
  • web-platform-tests/web-animations/interfaces/Animation/commitStyles-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animation/commitStyles.html:
  • web-platform-tests/web-animations/interfaces/Animation/onremove-expected.txt: Added.
  • web-platform-tests/web-animations/interfaces/Animation/onremove.html: Added.
  • web-platform-tests/web-animations/interfaces/Animation/pause.html:
  • web-platform-tests/web-animations/interfaces/Animation/play.html:
  • web-platform-tests/web-animations/interfaces/Animation/w3c-import.log:
  • web-platform-tests/web-animations/interfaces/AnimationEffect/updateTiming.html:
  • web-platform-tests/web-animations/interfaces/AnimationPlaybackEvent/w3c-import.log:
  • web-platform-tests/web-animations/interfaces/Document/getAnimations-expected.txt: Removed.
  • web-platform-tests/web-animations/interfaces/Document/w3c-import.log:
  • web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations-expected.txt: Added.
  • web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Document/getAnimations.html.
  • web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-animations/support/w3c-import.log.
  • web-platform-tests/web-animations/interfaces/DocumentTimeline/w3c-import.log:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor.html:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-002.html:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/setKeyframes.html:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events-expected.txt:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events.html:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/target.html:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/w3c-import.log:
  • web-platform-tests/web-animations/testcommon.js:

(cubicBezier): Deleted.

  • web-platform-tests/web-animations/timing-model/animations/finishing-an-animation-expected.txt:
  • web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/pausing-an-animation-expected.txt:
  • web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/playing-an-animation-expected.txt:
  • web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/reverse-running-animation-expected.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation-expected.txt:
  • web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation-expected.txt:
  • web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation-expected.txt:
  • web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/sync-start-times-expected.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/sync-start-times.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast-expected.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow-expected.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero-expected.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero.html: Added.
  • web-platform-tests/web-animations/timing-model/animations/w3c-import.log:
  • web-platform-tests/web-animations/w3c-import.log:

LayoutTests:

9:22 AM Changeset in webkit [255820] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Regression (r252014?) [ Mac wk2 ] http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207271

Unreviewed test gardening.

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

  • platform/mac-wk2/TestExpectations:
9:15 AM Changeset in webkit [255819] by commit-queue@webkit.org
  • 30 edits
    8 deletes in trunk

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

It is breaking some Mac builds (Requested by youenn on
#webkit).

Reverted changeset:

"[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder"
https://bugs.webkit.org/show_bug.cgi?id=206582
https://trac.webkit.org/changeset/255818

8:53 AM Changeset in webkit [255818] by youenn@apple.com
  • 30 edits
    1 copy
    7 adds in trunk

[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder
https://bugs.webkit.org/show_bug.cgi?id=206582
Source/WebCore:

<rdar://problem/58985368>

Reviewed by Eric Carlson.

AVAssetWriterDelegate allows to grab recorded data whenever wanted.
This delegate requires passing compressed samples to AVAssetWriter.
Implement video encoding and audio encoding in dedicated classes and use these classes before adding buffers to AVAssetWriter.
These classes are AudioSampleBufferCompressor and VideoSampleBufferCompressor.
They support AAC and H264 so far and should be further improved to support more encoding options.

Instantiate real writer only for platforms supporting AVAssetWriterDelegate, since it is not supported everywhere.
The writer, doing the pacakging, is receiving compressed buffer from the audio/video compressors.
It then sends data when being request to flush to its delegate, which will send data to the MediaRecorderPrivateWriter.
The MediaRecorderPrivateWriter stores the data in a SharedBuffer until MediaRecorder asks for data.

Note that, whenever we request data, we flush the writer and insert an end of video sample to make sure video data gets flushed.
Therefore data should not be requested too fast to get adequate video compression.

Covered by existing tests.

  • Modules/mediarecorder/MediaRecorderProvider.cpp:

(WebCore::MediaRecorderProvider::createMediaRecorderPrivate):

  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::create):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.h: Added.
  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm: Added.

(WebCore::AudioSampleBufferCompressor::create):
(WebCore::AudioSampleBufferCompressor::AudioSampleBufferCompressor):
(WebCore::AudioSampleBufferCompressor::~AudioSampleBufferCompressor):
(WebCore::AudioSampleBufferCompressor::initialize):
(WebCore::AudioSampleBufferCompressor::finish):
(WebCore::AudioSampleBufferCompressor::initAudioConverterForSourceFormatDescription):
(WebCore::AudioSampleBufferCompressor::computeBufferSizeForAudioFormat):
(WebCore::AudioSampleBufferCompressor::attachPrimingTrimsIfNeeded):
(WebCore::AudioSampleBufferCompressor::gradualDecoderRefreshCount):
(WebCore::AudioSampleBufferCompressor::sampleBufferWithNumPackets):
(WebCore::AudioSampleBufferCompressor::audioConverterComplexInputDataProc):
(WebCore::AudioSampleBufferCompressor::provideSourceDataNumOutputPackets):
(WebCore::AudioSampleBufferCompressor::processSampleBuffersUntilLowWaterTime):
(WebCore::AudioSampleBufferCompressor::processSampleBuffer):
(WebCore::AudioSampleBufferCompressor::addSampleBuffer):
(WebCore::AudioSampleBufferCompressor::getOutputSampleBuffer):
(WebCore::AudioSampleBufferCompressor::takeOutputSampleBuffer):

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(-[WebAVAssetWriterDelegate initWithWriter:]):
(-[WebAVAssetWriterDelegate assetWriter:didProduceFragmentedHeaderData:]):
(-[WebAVAssetWriterDelegate assetWriter:didProduceFragmentedMediaData:fragmentedMediaDataReport:]):
(-[WebAVAssetWriterDelegate close]):
(WebCore::MediaRecorderPrivateWriter::create):
(WebCore::MediaRecorderPrivateWriter::compressedVideoOutputBufferCallback):
(WebCore::MediaRecorderPrivateWriter::compressedAudioOutputBufferCallback):
(WebCore::MediaRecorderPrivateWriter::MediaRecorderPrivateWriter):
(WebCore::MediaRecorderPrivateWriter::~MediaRecorderPrivateWriter):
(WebCore::MediaRecorderPrivateWriter::initialize):
(WebCore::MediaRecorderPrivateWriter::processNewCompressedVideoSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::processNewCompressedAudioSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::startAssetWriter):
(WebCore::MediaRecorderPrivateWriter::appendCompressedAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendCompressedVideoSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendCompressedSampleBuffers):
(WebCore::appendEndsPreviousSampleDurationMarker):
(WebCore::MediaRecorderPrivateWriter::appendEndOfVideoSampleDurationIfNeeded):
(WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::clear):
(WebCore::copySampleBufferWithCurrentTimeStamp):
(WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):
(WebCore::createAudioFormatDescription):
(WebCore::createAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::stopRecording):
(WebCore::MediaRecorderPrivateWriter::appendData):

  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.h: Copied from Source/WebCore/platform/mediarecorder/MediaRecorderPrivateAVFImpl.h.
  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm: Added.

(WebCore::VideoSampleBufferCompressor::create):
(WebCore::VideoSampleBufferCompressor::VideoSampleBufferCompressor):
(WebCore::VideoSampleBufferCompressor::~VideoSampleBufferCompressor):
(WebCore::VideoSampleBufferCompressor::initialize):
(WebCore::VideoSampleBufferCompressor::finish):
(WebCore::VideoSampleBufferCompressor::videoCompressionCallback):
(WebCore::VideoSampleBufferCompressor::initCompressionSession):
(WebCore::VideoSampleBufferCompressor::processSampleBuffer):
(WebCore::VideoSampleBufferCompressor::addSampleBuffer):
(WebCore::VideoSampleBufferCompressor::getOutputSampleBuffer):
(WebCore::VideoSampleBufferCompressor::takeOutputSampleBuffer):

Source/WebCore/PAL:

<rdar://problem/58985368>

Reviewed by Eric Carlson.

Add soft link macros for VideoToolbox and AudioToolbox.

  • PAL.xcodeproj/project.pbxproj:
  • pal/cf/AudioToolboxSoftLink.cpp: Added.
  • pal/cf/AudioToolboxSoftLink.h: Added.
  • pal/cf/CoreMediaSoftLink.cpp:
  • pal/cf/CoreMediaSoftLink.h:
  • pal/cf/VideoToolboxSoftLink.cpp: Added.
  • pal/cf/VideoToolboxSoftLink.h: Added.

Source/WebKit:

<rdar://problem/58985368>

Reviewed by Eric Carlson.

Enable RemoteMediaRecorder only for systems supporting AVAssetWriterDelegate.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::didReceiveMessage):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:
  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.cpp:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.h:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.messages.in:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.h:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:
  • WebProcess/GPU/webrtc/MediaRecorderProvider.cpp:

(WebKit::MediaRecorderProvider::createMediaRecorderPrivate):

Source/WTF:

Reviewed by Eric Carlson.

  • wtf/PlatformHave.h:

LayoutTests:

Reviewed by Eric Carlson.

Disable tests on all platforms except the ones supporting AVAssetWriterDelegate.

  • TestExpectations:
  • http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-gpuprocess.html:

Remove web audio generation since there seems to be some unstability in web audio -> stream -> media recorder.
which should be fixed as follow-up specific patches.

  • platform/mac/TestExpectations:
8:51 AM Changeset in webkit [255817] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed iOS build fix.

  • rendering/RenderThemeIOS.h:
8:49 AM Changeset in webkit [255816] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Regression: [ Mac Debug wk2 ] http/tests/websocket/tests/hybi/server-close.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=207269

Unreviewed test gardening.

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

  • platform/mac-wk2/TestExpectations:
8:39 AM Changeset in webkit [255815] by Chris Dumez
  • 7 edits in trunk/Source/WebKit

Unreviewed, rolling out r255706.

Caused assertions in API tests

Reverted changeset:

"Partial revert of r248734 to fix leak of StorageAreaMaps"
https://bugs.webkit.org/show_bug.cgi?id=207073
https://trac.webkit.org/changeset/255706

8:27 AM Changeset in webkit [255814] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed, follow-up assertion fix after r255662.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

8:23 AM Changeset in webkit [255813] by Jonathan Bedard
  • 2 edits in trunk/Tools

results.webkit.org should disable auto-capitalize over the search field
https://bugs.webkit.org/show_bug.cgi?id=207240
<rdar://problem/59053042>

Rubber-stamped by Aakash Jain.

  • resultsdbpy/resultsdbpy/view/static/js/search.js:
7:59 AM Changeset in webkit [255812] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ macOS ] imported/w3c/web-platform-tests/hr-time/basic.any.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=206908

Unreviewed test gardening.

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

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

[ Mac wk2 ] webgpu/whlsl/ensure-proper-variable-lifetime.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207267

Unreviewed test gardening.

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

  • platform/mac-wk2/TestExpectations:
3:51 AM Changeset in webkit [255810] by graouts@webkit.org
  • 3 edits
    2 adds in trunk

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

Reviewed by Antti Koivisto.

Source/WebCore:

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

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

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::animationDidSeek):
(WebCore::KeyframeEffect::animationWasCanceled):
(WebCore::KeyframeEffect::willChangeRenderer):
(WebCore::KeyframeEffect::animationSuspensionStateDidChange):

LayoutTests:

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

  • webanimations/accelerated-animation-canceled-before-commit-expected.html: Added.
  • webanimations/accelerated-animation-canceled-before-commit.html: Added.
2:55 AM Changeset in webkit [255809] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/JavaScriptCore

Merge r255788 - [JSC] Structure::setMaxOffset and setTransitionOffset are racy
https://bugs.webkit.org/show_bug.cgi?id=207249

Reviewed by Mark Lam.

We hit crash in JSTests/stress/array-slice-osr-exit-2.js. The situation is following.

  1. The mutator thread (A) is working.
  2. The concurrent collector (B) is working.
  3. A attempts to set m_maxOffset in StructureRareData by allocating it. First, A sets Structure::m_maxOffset to useRareDataFlag.
  4. B is in JSObject::visitButterflyImpl, and executing Structure::maxOffset().
  5. B detects that m_maxOffset is useRareDataFlag.
  6. B attempts to load rareData, but this is not a StructureRareData since A is just now setting up StructureRareData.
  7. B crashes.

Set useRareDataFlag after StructureRareData is set. Ensuring this store-order by using storeStoreFence.

  • runtime/Structure.h:
2:55 AM Changeset in webkit [255808] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/LayoutTests

Merge r255787 - [GTK] Garden some wpt tests failing with harness timeout
https://bugs.webkit.org/show_bug.cgi?id=207247

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
2:55 AM Changeset in webkit [255807] by Carlos Garcia Campos
  • 33 edits
    2 deletes in releases/WebKitGTK/webkit-2.28

Merge r255785 - Replace RGBA32 typedef with a class to improve type safety
https://bugs.webkit.org/show_bug.cgi?id=206862

Reviewed by Sam Weinig.

Source/WebCore:

  • Headers.cmake: Remove RGBColor.h.
  • Sources.txt: Remove RBGColor.cpp.
  • WebCore.xcodeproj/project.pbxproj: Remove RGBColor.h and RGBColor.cpp.
  • css/CSSPrimitiveValue.cpp: Removed include of RGBColor.h.

(WebCore::CSSPrimitiveValue::getCounterValue const): Deleted.
(WebCore::CSSPrimitiveValue::getRectValue const): Deleted.
(WebCore::CSSPrimitiveValue::getRGBColorValue const): Deleted.

  • css/CSSPrimitiveValue.h: Updated for the above.
  • css/DeprecatedCSSOMPrimitiveValue.cpp:

(WebCore::DeprecatedCSSOMPrimitiveValue::getCounterValue const): Use
CSSPrimitiveValue::counterValue.
(WebCore::DeprecatedCSSOMPrimitiveValue::getRectValue const): Use
CSSPrimitiveValue::rectValue.
(WebCore::DeprecatedCSSOMPrimitiveValue::getRGBColorValue const): USe
CSSPrimitiveValue::isRGBColor and CSSPrimitiveValue::color.

  • css/DeprecatedCSSOMRGBColor.h: Store a Color instead of an RGBA32.

Take a Color argument instead of a RGBColor argument. Refactored to
use a createWrapper template function member to tighten the code.

  • css/RGBColor.cpp: Removed.
  • css/RGBColor.h: Removed.
  • css/StyleColor.cpp:

(WebCore::StyleColor::colorFromKeyword): Explicitly convert to SimpleColor
rather than relying on initializing a Color from an integer ARGB value.

  • editing/cocoa/HTMLConverter.mm: Removed include of RGBColor.h.
  • inspector/InspectorOverlay.cpp:

(WebCore::drawOutlinedQuadWithClip): Use the Color constructor instead of
Color::createUnchecked.

  • page/cocoa/ResourceUsageOverlayCocoa.mm:

(WebCore::HistoricMemoryCategoryInfo::HistoricMemoryCategoryInfo): Use
explicit SimpleColor rather than relying on initializing a Color from an
integer ARGB value.

  • platform/graphics/Color.cpp: Use constexpr for constant colors.

(WebCore::makeRGB): Implement by calling makeRGBA.
(WebCore::makeRGBA): Use an explicit argument list to call the
SimpleColor constructor.
(WebCore::makeRGBA32FromFloats): Implement by calling makeRGBA.
(WebCore::colorWithOverrideAlpha): Use an explicit argument list to call
the SimpleColor constructor.
(WebCore::parseHexColorInternal): Ditto.
(WebCore::Color::Color): Removed unneeded code to set the color
to invalid, since that's already the default for a new Color object.
Also tweak the logic a bit and add explicit argument list for the
SimpleColor constructor.
(WebCore::SimpleColor::serializationForHTML const): Added. Factored out of
the Color::serialized function.
(WebCore::Color::serialized const): Changed to call serializationForHTML.
(WebCore::fractionDigitsForFractionalAlphaValue): Renamed slightly shorter.
(WebCore::SimpleColor::serializationForCSS const): Added. Factored out of
the Color::cssText function.
(WebCore::Color::cssText const): Changed to call serializationForCSS.
(WebCore::RGBA32::serializationForRenderTreeAsText const): Added.
Factored out of nameForRenderTreeAsText.
(WebCore::Color::nameForRenderTreeAsText const): Changed to call
serializationForRenderTreeAsText.
(WebCore::colorFromPremultipliedARGB): Updated to use the SimpleColor
member functions instead of the red/green/blue/alphaChannel functions.
(WebCore::blend): Use Color::transparent for blending where the old
code used 0 and relied on how that is converted to a Color.

  • platform/graphics/Color.h: Replaced the RGBA32 typedef and the

RGBA class with a new class named SimpleColor. Deleted the four
red/green/blue/alphaChannel functions, the Color constructor that
takes and RGBA, and the Color::createUnchecked function. Changed
the color constants to all be constexpr. Moved the inline function
definitions until after everything is delcared.

  • platform/graphics/ImageBackingStore.h:

(WebCore::ImageBackingStore::setSize): Use uint32_t instead of RGBA32.
(WebCore::ImageBackingStore::clear): Ditto.
(WebCore::ImageBackingStore::clearRect): Ditto.
(WebCore::ImageBackingStore::fillRect): Ditto.
(WebCore::ImageBackingStore::repeatFirstRow): Ditto.
(WebCore::ImageBackingStore::pixelAt const): Ditto.
(WebCore::ImageBackingStore::setPixel): Ditto.
(WebCore::ImageBackingStore::blendPixel): Ditto. Convert to and from
SimpleColor so we can use various functions that operate on that type.
Use the isVisible and red/green/blue/alphaComponent member functions.
(WebCore::ImageBackingStore::ImageBackingStore): Ditto.
(WebCore::ImageBackingStore::pixelValue const): Use Color::transparent
instead of returning a 0 and relying on how that is converted to a Color.

  • platform/graphics/ImageFrame.h: Removed include of ImageBackingStore.h.
  • platform/graphics/ImageSource.h: Added forward delaration of SharedBuffer.
  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::platformTransformColorSpace): Call value() to
convert RGBA32, which is now a class, to an 32-bit ARGB integer.

  • platform/graphics/cg/ColorCG.cpp:

(WebCore::cachedCGColor): Use constexpr SimpleColor::value function to
switch on a SimpleColor.

  • platform/graphics/mac/ColorMac.mm:

(WebCore::oldAquaFocusRingColor): Use an explicit SimpleColor to turn a
hex integer into a Color without relying on implicit conversion.

  • platform/graphics/win/ColorDirect2D.cpp:

(WebCore::Color::operator D2D1_COLOR_F const): Use value() to get the color
integer, just to keep this working. Probably needs a better implementation
at some point.

  • platform/image-decoders/png/PNGImageDecoder.cpp:

(WebCore::PNGImageDecoder::rowAvailable): Don't use makeRGB any more,
write the expression out here instead. More efficient anyway since these
are already single bytes.

  • platform/mock/MockRealtimeMediaSourceCenter.cpp:

(WebCore::defaultDevices): Use an explicit SimpleColor to turn a
hex integer into a Color without relying on implicit conversion.

  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::drawBoxes): Ditto. Also use a modern
for loop instead of indexing.

  • platform/mock/ScrollbarThemeMock.cpp:

(WebCore::ScrollbarThemeMock::paintTrackBackground): Ditto.

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::calculateBorderStyleColor): Ditto.

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::systemColor const): Ditto. Also used named colors.

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::systemColor const): Ditto.

  • rendering/RenderTreeAsText.cpp:

(WebCore::RenderTreeAsText::writeRenderObject): Added checks against
Color::transparent instead of converting to an integer and checking
against 0. Removed unneeded isValid checks, since invalid color's ARGB
value is Color::transparent.

Source/WebKit:

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Color>::encode): Use uint32_t explicitly to convert
the color value into a SimpleColor.
(IPC::ArgumentCoder<Color>::decode): Same thing, only the other direction.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/PDFSnapshot.mm:

(TestWebKitAPI::TEST): Use the Color constructor instead of Color::createUnchecked.

2:55 AM Changeset in webkit [255806] by Carlos Garcia Campos
  • 723 edits
    2 copies
    5 moves
    71 adds
    36 deletes in releases/WebKitGTK/webkit-2.28/Source/ThirdParty/ANGLE

Merge r255782 - Update ANGLE
https://bugs.webkit.org/show_bug.cgi?id=206318

Several important changes to fix layout test failures and timeouts in this update.

  • Made expensive validation non-default in debug mode to reduce timeouts.
  • Optimize disabling ARB_texture_rectangle to make shader compilation much faster.
  • Flush before texture deletion to work around Mac Intel driver bug.

Patch by James Darpinian <James Darpinian> on 2020-02-04
Reviewed by Dean Jackson.

  • ANGLE.plist: update commit hash
  • ANGLE.xcodeproj/project.pbxproj: Add/remove files
  • Compiler.cmake: Translated from compiler.gni
  • GLESv2.cmake: Translated from libGLESv2.gni
  • changes.diff: Now lists all changes from upstream.
  • update-angle.sh: Diff command was wrong.
  • Plus a whole lot of changes from upstream.
2:51 AM Changeset in webkit [255805] by Carlos Garcia Campos
  • 8 edits in releases/WebKitGTK/webkit-2.28/Source

Merge r255711 - Non-unified build fixes early February 2020 edition
https://bugs.webkit.org/show_bug.cgi?id=207227

Reviewed by Don Olmstead.

Source/JavaScriptCore:

  • bytecode/PolyProtoAccessChain.h: Add missing inclusions of StructureIDTable.h and VM.h

Source/WebCore:

No new tests needed.

  • accessibility/atk/AccessibilityObjectAtk.cpp: Add missing inclusion of WebKitAccessible.h
  • inspector/agents/InspectorAnimationAgent.cpp: Add issing inclusions of JSExecState.h and

JavaScriptCore/InjectedScriptManager.h

  • style/MatchedDeclarationsCache.cpp: Add missing inclusion of FontCascade.h

Source/WTF:

  • wtf/SingleRootGraph.h: Add missing inclusion of wtf/StringPrintStream.h
2:51 AM Changeset in webkit [255804] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255706 - Partial revert of r248734 to fix leak of StorageAreaMaps
https://bugs.webkit.org/show_bug.cgi?id=207073

Reviewed by Alex Christensen.

Do a partial revert of r248734 so that the StorageNamespaceImpl no longer holds a strong
reference to its StorageAreaMap objects. The code for removing entries from
StorageNamespaceImpl::m_storageAreaMaps (StorageNamespaceImpl::didDestroyStorageAreaMap())
was dead code after r248734 and thus StorageAreaMap were never destroyed.

  • WebProcess/WebStorage/StorageAreaImpl.cpp:

(WebKit::StorageAreaImpl::create):
(WebKit::StorageAreaImpl::StorageAreaImpl):
(WebKit::StorageAreaImpl::length):
(WebKit::StorageAreaImpl::key):
(WebKit::StorageAreaImpl::item):
(WebKit::StorageAreaImpl::setItem):
(WebKit::StorageAreaImpl::removeItem):
(WebKit::StorageAreaImpl::clear):
(WebKit::StorageAreaImpl::contains):
(WebKit::StorageAreaImpl::storageType const):

  • WebProcess/WebStorage/StorageAreaImpl.h:
  • WebProcess/WebStorage/StorageAreaMap.cpp:

(WebKit::StorageAreaMap::create):
(WebKit::StorageAreaMap::~StorageAreaMap):

  • WebProcess/WebStorage/StorageAreaMap.h:
  • WebProcess/WebStorage/StorageNamespaceImpl.cpp:

(WebKit::StorageNamespaceImpl::storageArea):

  • WebProcess/WebStorage/StorageNamespaceImpl.h:
2:50 AM Changeset in webkit [255803] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255705 - Unreviewed, follow-up assertion fix after r255662.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

2:50 AM Changeset in webkit [255802] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28/Source/JavaScriptCore

Merge r255703 - [JSC] Use PackedRefPtr in UnlinkedCodeBlock
https://bugs.webkit.org/show_bug.cgi?id=207229

Reviewed by Mark Lam.

Use PackedRefPtr in UnlinkedCodeBlock to compact it from 168 to 160, which saves 16 bytes (10%) per UnlinkedCodeBlock since
we have 16 bytes alignment for GC cells.

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::sourceURLDirective const):
(JSC::UnlinkedCodeBlock::sourceMappingURLDirective const):
(JSC::UnlinkedCodeBlock::setSourceURLDirective):
(JSC::UnlinkedCodeBlock::setSourceMappingURLDirective):

  • runtime/CachedTypes.cpp:

(JSC::CachedCodeBlock::sourceURLDirective const):
(JSC::CachedCodeBlock::sourceMappingURLDirective const):
(JSC::CachedCodeBlock<CodeBlockType>::encode):

  • runtime/CodeCache.cpp:

(JSC::CodeCache::getUnlinkedGlobalCodeBlock):

2:50 AM Changeset in webkit [255801] by Carlos Garcia Campos
  • 11 edits in releases/WebKitGTK/webkit-2.28

Merge r255693 - Tighten up stylesheet loading
https://bugs.webkit.org/show_bug.cgi?id=189913

Patch by Rob Buis <rbuis@igalia.com> on 2020-02-04
Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Update improved test results.

  • web-platform-tests/html/semantics/document-metadata/the-link-element/link-load-error-events-expected.txt:
  • web-platform-tests/html/semantics/document-metadata/the-link-element/link-load-error-events.https-expected.txt:
  • web-platform-tests/html/semantics/document-metadata/the-link-element/link-style-error-01-expected.txt:
  • web-platform-tests/html/semantics/document-metadata/the-link-element/link-style-error-limited-quirks-expected.txt:
  • web-platform-tests/html/semantics/document-metadata/the-link-element/link-style-error-quirks-expected.txt:

Source/WebCore:

Content-Type metadata for link stylesheet is determined using MIME
sniffing[1]. This can result in no Content-Type metadata.
If there is no Content-Type metadata, but the external resource link
type has a default type defined, then the user agent must assume that
the resource is of that type [2]. For link stylesheet the default is
text/css. This means invalid MIME type will default to text/css and
load and valid MIME types other than text/css will result in load error.

[1] https://mimesniff.spec.whatwg.org/
[2] https://html.spec.whatwg.org/multipage/semantics.html#fetch-and-process-the-linked-resource

Tests: imported/w3c/web-platform-tests/html/semantics/document-metadata/the-link-element/link-load-error-events.html

imported/w3c/web-platform-tests/html/semantics/document-metadata/the-link-element/link-load-error-events.https.html
imported/w3c/web-platform-tests/html/semantics/document-metadata/the-link-element/link-style-error-01.html
imported/w3c/web-platform-tests/html/semantics/document-metadata/the-link-element/link-style-error-limited-quirks.html
imported/w3c/web-platform-tests/html/semantics/document-metadata/the-link-element/link-style-error-quirks.html

  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::parseAuthorStyleSheet):

  • css/StyleSheetContents.h:
  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::setCSSStyleSheet):

  • loader/cache/CachedCSSStyleSheet.cpp:

(WebCore::CachedCSSStyleSheet::canUseSheet const):

2:50 AM Changeset in webkit [255800] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28

Merge r255689 - Quantifiers after lookahead assertions should be syntax errors in Unicode patterns only
https://bugs.webkit.org/show_bug.cgi?id=206988

Reviewed by Darin Adler and Ross Kirsling.

JSTests:

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

Source/JavaScriptCore:

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

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

Return value of parseParenthesesEnd() now matches with parseEscape() and
parseAtomEscape().

  • yarr/YarrParser.h:

(JSC::Yarr::Parser::parseParenthesesBegin):
(JSC::Yarr::Parser::parseParenthesesEnd):
(JSC::Yarr::Parser::parseTokens):

2:50 AM Changeset in webkit [255799] by Carlos Garcia Campos
  • 24 edits
    2 adds in releases/WebKitGTK/webkit-2.28/Source

Merge r255687 - [JSC] Introduce UnlinkedCodeBlockGenerator and reduce sizeof(UnlinkedCodeBlock)
https://bugs.webkit.org/show_bug.cgi?id=207087

Reviewed by Tadeu Zagallo.

Source/JavaScriptCore:

While UnlinkedCodeBlock is immutable once it is created from BytecodeGenerator, it has many mutable Vectors.
This is because we are using UnlinkedCodeBlock as a builder of UnlinkedCodeBlock itself too in BytecodeGenerator.
Since Vector takes 16 bytes to allow efficient expansions, it is nice if we can use RefCountedArray instead when
we know this Vector is immutable.

In this patch, we introduce UnlinkedCodeBlockGenerator wrapper. BytecodeGenerator, BytecodeRewriter, BytecodeDumper,
and BytecodeGeneratorification interact with UnlinkedCodeBlockGenerator instead of UnlinkedCodeBlock. And UnlinkedCodeBlockGenerator
will generate the finalized UnlinkedCodeBlock. This design allows us to use RefCountedArray for data in UnlinkedCodeBlock,
which is (1) smaller and (2) doing shrinkToFit operation when creating it from Vector.

This patch reduces sizeof(UnlinkedCodeBlock) from 256 to 168, 88 bytes reduction.

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

(JSC::BytecodeBasicBlock::compute):

  • bytecode/BytecodeBasicBlock.h:
  • bytecode/BytecodeDumper.cpp:
  • bytecode/BytecodeGeneratorification.cpp:

(JSC::BytecodeGeneratorification::BytecodeGeneratorification):
(JSC::GeneratorLivenessAnalysis::run):
(JSC::BytecodeGeneratorification::run):
(JSC::performGeneratorification):

  • bytecode/BytecodeGeneratorification.h:
  • bytecode/BytecodeRewriter.h:

(JSC::BytecodeRewriter::BytecodeRewriter):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::setConstantIdentifierSetRegisters):
(JSC::CodeBlock::setConstantRegisters):
(JSC::CodeBlock::handlerForIndex):
(JSC::CodeBlock::insertBasicBlockBoundariesForControlFlowProfiler):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::numberOfSwitchJumpTables const):
(JSC::CodeBlock::numberOfStringSwitchJumpTables const):
(JSC::CodeBlock::addSwitchJumpTable): Deleted.
(JSC::CodeBlock::addStringSwitchJumpTable): Deleted.

  • bytecode/HandlerInfo.h:

(JSC::HandlerInfoBase::handlerForIndex):

  • bytecode/JumpTable.h:

(JSC::SimpleJumpTable::add): Deleted.

  • bytecode/PreciseJumpTargets.cpp:

(JSC::computePreciseJumpTargets):
(JSC::recomputePreciseJumpTargets):
(JSC::findJumpTargetsForInstruction):

  • bytecode/PreciseJumpTargets.h:
  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::UnlinkedCodeBlock::visitChildren):
(JSC::UnlinkedCodeBlock::dumpExpressionRangeInfo):
(JSC::UnlinkedCodeBlock::expressionRangeForBytecodeIndex const):
(JSC::UnlinkedCodeBlock::handlerForIndex):
(JSC::UnlinkedCodeBlock::addExpressionInfo): Deleted.
(JSC::UnlinkedCodeBlock::addTypeProfilerExpressionInfo): Deleted.
(JSC::UnlinkedCodeBlock::setInstructions): Deleted.
(JSC::UnlinkedCodeBlock::applyModification): Deleted.
(JSC::UnlinkedCodeBlock::shrinkToFit): Deleted.
(JSC::UnlinkedCodeBlock::addOutOfLineJumpTarget): Deleted.

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::expressionInfo):
(JSC::UnlinkedCodeBlock::setNumParameters):
(JSC::UnlinkedCodeBlock::numberOfIdentifiers const):
(JSC::UnlinkedCodeBlock::identifiers const):
(JSC::UnlinkedCodeBlock::bitVector):
(JSC::UnlinkedCodeBlock::constantRegisters):
(JSC::UnlinkedCodeBlock::constantsSourceCodeRepresentation):
(JSC::UnlinkedCodeBlock::constantIdentifierSets):
(JSC::UnlinkedCodeBlock::numberOfJumpTargets const):
(JSC::UnlinkedCodeBlock::numberOfSwitchJumpTables const):
(JSC::UnlinkedCodeBlock::numberOfStringSwitchJumpTables const):
(JSC::UnlinkedCodeBlock::numberOfFunctionDecls):
(JSC::UnlinkedCodeBlock::numberOfExceptionHandlers const):
(JSC::UnlinkedCodeBlock::opProfileControlFlowBytecodeOffsets const):
(JSC::UnlinkedCodeBlock::createRareDataIfNecessary):
(JSC::UnlinkedCodeBlock::addParameter): Deleted.
(JSC::UnlinkedCodeBlock::addIdentifier): Deleted.
(JSC::UnlinkedCodeBlock::addBitVector): Deleted.
(JSC::UnlinkedCodeBlock::addSetConstant): Deleted.
(JSC::UnlinkedCodeBlock::addConstant): Deleted.
(JSC::UnlinkedCodeBlock::addJumpTarget): Deleted.
(JSC::UnlinkedCodeBlock::addSwitchJumpTable): Deleted.
(JSC::UnlinkedCodeBlock::addStringSwitchJumpTable): Deleted.
(JSC::UnlinkedCodeBlock::addFunctionDecl): Deleted.
(JSC::UnlinkedCodeBlock::addFunctionExpr): Deleted.
(JSC::UnlinkedCodeBlock::addExceptionHandler): Deleted.
(JSC::UnlinkedCodeBlock::addOpProfileControlFlowBytecodeOffset): Deleted.
(JSC::UnlinkedCodeBlock::replaceOutOfLineJumpTargets): Deleted.

  • bytecode/UnlinkedCodeBlockGenerator.cpp: Added.

(JSC::UnlinkedCodeBlockGenerator::getLineAndColumn const):
(JSC::UnlinkedCodeBlockGenerator::addExpressionInfo):
(JSC::UnlinkedCodeBlockGenerator::addTypeProfilerExpressionInfo):
(JSC::UnlinkedCodeBlockGenerator::finalize):
(JSC::UnlinkedCodeBlockGenerator::handlerForBytecodeIndex):
(JSC::UnlinkedCodeBlockGenerator::handlerForIndex):
(JSC::UnlinkedCodeBlockGenerator::applyModification):
(JSC::UnlinkedCodeBlockGenerator::addOutOfLineJumpTarget):
(JSC::UnlinkedCodeBlockGenerator::outOfLineJumpOffset):
(JSC::UnlinkedCodeBlockGenerator::dump const):

  • bytecode/UnlinkedCodeBlockGenerator.h: Added.

(JSC::UnlinkedCodeBlockGenerator::UnlinkedCodeBlockGenerator):
(JSC::UnlinkedCodeBlockGenerator::vm):
(JSC::UnlinkedCodeBlockGenerator::isConstructor const):
(JSC::UnlinkedCodeBlockGenerator::constructorKind const):
(JSC::UnlinkedCodeBlockGenerator::superBinding const):
(JSC::UnlinkedCodeBlockGenerator::scriptMode const):
(JSC::UnlinkedCodeBlockGenerator::needsClassFieldInitializer const):
(JSC::UnlinkedCodeBlockGenerator::isStrictMode const):
(JSC::UnlinkedCodeBlockGenerator::usesEval const):
(JSC::UnlinkedCodeBlockGenerator::parseMode const):
(JSC::UnlinkedCodeBlockGenerator::isArrowFunction):
(JSC::UnlinkedCodeBlockGenerator::derivedContextType const):
(JSC::UnlinkedCodeBlockGenerator::evalContextType const):
(JSC::UnlinkedCodeBlockGenerator::isArrowFunctionContext const):
(JSC::UnlinkedCodeBlockGenerator::isClassContext const):
(JSC::UnlinkedCodeBlockGenerator::numCalleeLocals const):
(JSC::UnlinkedCodeBlockGenerator::numVars const):
(JSC::UnlinkedCodeBlockGenerator::numParameters const):
(JSC::UnlinkedCodeBlockGenerator::thisRegister const):
(JSC::UnlinkedCodeBlockGenerator::scopeRegister const):
(JSC::UnlinkedCodeBlockGenerator::wasCompiledWithDebuggingOpcodes const):
(JSC::UnlinkedCodeBlockGenerator::hasCheckpoints const):
(JSC::UnlinkedCodeBlockGenerator::hasTailCalls const):
(JSC::UnlinkedCodeBlockGenerator::setHasCheckpoints):
(JSC::UnlinkedCodeBlockGenerator::setHasTailCalls):
(JSC::UnlinkedCodeBlockGenerator::setNumCalleeLocals):
(JSC::UnlinkedCodeBlockGenerator::setNumVars):
(JSC::UnlinkedCodeBlockGenerator::setThisRegister):
(JSC::UnlinkedCodeBlockGenerator::setScopeRegister):
(JSC::UnlinkedCodeBlockGenerator::setNumParameters):
(JSC::UnlinkedCodeBlockGenerator::metadata):
(JSC::UnlinkedCodeBlockGenerator::addOpProfileControlFlowBytecodeOffset):
(JSC::UnlinkedCodeBlockGenerator::numberOfJumpTargets const):
(JSC::UnlinkedCodeBlockGenerator::addJumpTarget):
(JSC::UnlinkedCodeBlockGenerator::jumpTarget const):
(JSC::UnlinkedCodeBlockGenerator::lastJumpTarget const):
(JSC::UnlinkedCodeBlockGenerator::numberOfSwitchJumpTables const):
(JSC::UnlinkedCodeBlockGenerator::addSwitchJumpTable):
(JSC::UnlinkedCodeBlockGenerator::switchJumpTable):
(JSC::UnlinkedCodeBlockGenerator::numberOfStringSwitchJumpTables const):
(JSC::UnlinkedCodeBlockGenerator::addStringSwitchJumpTable):
(JSC::UnlinkedCodeBlockGenerator::stringSwitchJumpTable):
(JSC::UnlinkedCodeBlockGenerator::numberOfExceptionHandlers const):
(JSC::UnlinkedCodeBlockGenerator::exceptionHandler):
(JSC::UnlinkedCodeBlockGenerator::addExceptionHandler):
(JSC::UnlinkedCodeBlockGenerator::bitVector):
(JSC::UnlinkedCodeBlockGenerator::addBitVector):
(JSC::UnlinkedCodeBlockGenerator::numberOfConstantIdentifierSets const):
(JSC::UnlinkedCodeBlockGenerator::constantIdentifierSets):
(JSC::UnlinkedCodeBlockGenerator::addSetConstant):
(JSC::UnlinkedCodeBlockGenerator::constantRegister const):
(JSC::UnlinkedCodeBlockGenerator::constantRegisters):
(JSC::UnlinkedCodeBlockGenerator::getConstant const):
(JSC::UnlinkedCodeBlockGenerator::constantsSourceCodeRepresentation):
(JSC::UnlinkedCodeBlockGenerator::addConstant):
(JSC::UnlinkedCodeBlockGenerator::addFunctionDecl):
(JSC::UnlinkedCodeBlockGenerator::addFunctionExpr):
(JSC::UnlinkedCodeBlockGenerator::numberOfIdentifiers const):
(JSC::UnlinkedCodeBlockGenerator::identifier const):
(JSC::UnlinkedCodeBlockGenerator::addIdentifier):
(JSC::UnlinkedCodeBlockGenerator::outOfLineJumpOffset):
(JSC::UnlinkedCodeBlockGenerator::replaceOutOfLineJumpTargets):
(JSC::UnlinkedCodeBlockGenerator::metadataSizeInBytes):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::initializeNextParameter):
(JSC::BytecodeGenerator::emitPushFunctionNameScope):
(JSC::prepareJumpTableForSwitch):
(JSC::ForInContext::finalize):
(JSC::StructureForInContext::finalize):
(JSC::IndexedForInContext::finalize):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/BytecodeGeneratorBaseInlines.h:

(JSC::BytecodeGeneratorBase<Traits>::newRegister):
(JSC::BytecodeGeneratorBase<Traits>::addVar):

  • runtime/CachedTypes.cpp:

(JSC::CachedVector::encode):
(JSC::CachedVector::decode const):

  • wasm/WasmFunctionCodeBlock.h:

(JSC::Wasm::FunctionCodeBlock::setNumVars):
(JSC::Wasm::FunctionCodeBlock::setNumCalleeLocals):

Source/WTF:

Add more useful methods for RefCountedArray.

  • wtf/RefCountedArray.h:

(WTF::RefCountedArray::operator=):
(WTF::RefCountedArray::isEmpty const):
(WTF::RefCountedArray::front):
(WTF::RefCountedArray::front const):
(WTF::RefCountedArray::last):
(WTF::RefCountedArray::last const):

2:50 AM Changeset in webkit [255798] by Carlos Garcia Campos
  • 21 edits in releases/WebKitGTK/webkit-2.28/Source

Merge r255681 - NetworkProcess should be notified by UIProcess when its service worker process connection should be on
https://bugs.webkit.org/show_bug.cgi?id=207122
<rdar://problem/59089780>

Reviewed by Chris Dumez.

Source/WebCore:

Add a completion handler to the create context connection callback.
This is called when the context connection should have been created.
In case there is a context connection, completion handler does nothing.
Otherwise, SWServer will retry creating a context connection if needed.

The pending connection map entry is now removed in the completion handler instead of addContextConnection.
This ensures that only one connection request is sent by network process at a time.

Add extra logging to monitor creation of a context connection.

  • workers/service/context/SWContextManager.h:
  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::addContextConnection):
(WebCore::SWServer::removeContextConnection):
(WebCore::SWServer::createContextConnectionFinished):

  • workers/service/server/SWServer.h:

Source/WebKit:

Add completion handlers to the messaging from NetworkProcess -> UIProcess -> WebProcess -> NetworkProcess
used to create a service worker context connection.

This allows NetworkProcess to ask again for a connection if the connection is still needed but NetworkProcess did not find the context connection.

This is difficult to test since we would need for the process selected to host service workers to exit between the
time it is selected and the time it sends the message to Networking process.

To ensure that the context connection is created by WebProcess, WebProcessProxy takes a background assertion until WebProcess finishes
creating the context connection to Network process.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::establishSWContextConnection):

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

(WebKit::NetworkProcess::swServerForSession):

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

(WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcess):

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

(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):

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

(WebKit::WebProcessProxy::establishServiceWorkerContext):

  • UIProcess/WebProcessProxy.h:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::m_userAgent):
(WebKit::WebSWContextManagerConnection::establishConnection):

  • WebProcess/Storage/WebSWContextManagerConnection.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
2:50 AM Changeset in webkit [255797] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28

Merge r255680 - Check for callback being null in Notification.requestPermission
https://bugs.webkit.org/show_bug.cgi?id=207192
<rdar://problem/59130804>

Reviewed by Chris Dumez.

Source/WebCore:

Covered by updated test.

  • Modules/notifications/Notification.cpp:

(WebCore::Notification::requestPermission):
Callback can be null if no function is given to requestPermission.
Check this before calling the callback.

LayoutTests:

  • http/tests/notifications/notification-in-non-secure-context.html:
2:50 AM Changeset in webkit [255796] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255679 - Unreviewed, follow-up assertion fix after r255662.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

2:50 AM Changeset in webkit [255795] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r255677 - REGRESSION(r255595): page not closed after beforeunload handler returns true
https://bugs.webkit.org/show_bug.cgi?id=207189

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2020-02-04
Reviewed by Chris Dumez.

We are assuming the try close did timeout in that case, because the timer is stopped before running the
beforeunload dialog.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::runBeforeUnloadConfirmPanel): Start the try close timer again when the beforeunload
dialog replies.

2:50 AM Changeset in webkit [255794] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.28

Merge r255675 - Web Inspector: REGRESSION(r248287): Console: function objects saved to a $n will be invoked instead of just referenced when evaluating in the Console
https://bugs.webkit.org/show_bug.cgi?id=207180
<rdar://problem/58860268>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

  • inspector/InjectedScriptSource.js:

(CommandLineAPI):
Instead of deciding whether to wrap the value given for a $n getter based on if the value
is already a function, always wrap getter values in a function so that if the value being
stored in the getter is already a function, it isn't used as the callback for the getter and
therefore invoked when the getter is referenced.

LayoutTests:

  • inspector/runtime/saveResult.html:
  • inspector/runtime/saveResult-expected.txt:
2:49 AM Changeset in webkit [255793] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r255673 - Build error with -DENABLE_VIDEO=OFF after r253923
https://bugs.webkit.org/show_bug.cgi?id=207101

Reviewed by Youenn Fablet.

No new tests, only build error fix up

  • page/Page.cpp:

(WebCore::Page::forEachMediaElement):

2:49 AM Changeset in webkit [255792] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.28

Merge r255671 - CSS Rules with the same selector from several large stylesheets are applied in the wrong order
https://bugs.webkit.org/show_bug.cgi?id=204687
<rdar://problem/57522566>

Reviewed by Zalan Bujtas.

Source/WebCore:

Original test by Anton Khlynovskiy.

Test: fast/css/many-rules.html

  • style/RuleData.h:

We overflow the 18 bit m_position field with > 256k CSS rules, confusing the rule order.
Since we have unused bits it costs nothing to increase the field size to 22 bits.

4M rules should be enough for anybody.

LayoutTests:

  • TestExpectations:
  • fast/css/many-rules-expected.html: Added.
  • fast/css/many-rules.html: Added.
2:49 AM Changeset in webkit [255791] by Carlos Garcia Campos
  • 26 edits
    2 adds in releases/WebKitGTK/webkit-2.28

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

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

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

Source/WebCore:

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

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

Test: http/tests/webrtc/enumerateDevicesInFrames.html

  • Modules/mediastream/MediaDevices.cpp:

(WebCore::MediaDevices::MediaDevices):
(WebCore::MediaDevices::refreshDevices):
(WebCore::MediaDevices::enumerateDevices):
(WebCore::MediaDevices::listenForDeviceChanges):

  • Modules/mediastream/MediaDevices.h:
  • Modules/mediastream/UserMediaController.cpp:

(WebCore::UserMediaController::logGetUserMediaDenial):
(WebCore::UserMediaController::logGetDisplayMediaDenial):
(WebCore::UserMediaController::logEnumerateDevicesDenial):

  • Modules/mediastream/UserMediaController.h:
  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::start):

  • html/FeaturePolicy.cpp:

(WebCore::policyTypeName):
(WebCore::isFeaturePolicyAllowedByDocumentAndAllOwners):

  • html/FeaturePolicy.h:
  • page/DOMWindow.cpp:

(WebCore::DOMWindow::printErrorMessage const):

  • page/DOMWindow.h:

LayoutTests:

  • TestExpectations:
  • fullscreen/full-screen-enabled-expected.txt:
  • fullscreen/full-screen-enabled-prefixed-expected.txt:
  • fullscreen/full-screen-iframe-not-allowed-expected.txt:
  • fullscreen/full-screen-iframe-without-allow-attribute-allowed-from-parent-expected.txt:
  • fullscreen/full-screen-restrictions-expected.txt:
  • http/tests/fullscreen/fullscreen-feature-policy-expected.txt:
  • http/tests/media/media-stream/enumerate-devices-iframe-allow-attribute-expected.txt:
  • http/tests/media/media-stream/get-display-media-iframe-allow-attribute-expected.txt:
  • http/tests/ssl/media-stream/get-user-media-different-host-expected.txt:
  • http/tests/ssl/media-stream/get-user-media-nested-expected.txt:
  • http/tests/webrtc/enumerateDevicesInFrames-expected.txt: Added.
  • http/tests/webrtc/enumerateDevicesInFrames.html: Added.
2:02 AM WebKitGTK/2.28.x edited by Philippe Normand
(diff)
1:59 AM Changeset in webkit [255790] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[GStreamer] Client-side video rendering doesn't fallback to internal compositing
https://bugs.webkit.org/show_bug.cgi?id=207208

Patch by Philippe Normand <philn@igalia.com> on 2020-02-05
Reviewed by Xabier Rodriguez-Calvar and Žan Doberšek.

Refactor the default video composition code into a self-contained
closure and invoke it if the video frame holder failed to export
the EGLImage to a valid DMABuf.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::GstVideoFrameHolder::GstVideoFrameHolder):
(WebCore::GstVideoFrameHolder::hasDMABuf const):
(WebCore::MediaPlayerPrivateGStreamer::pushTextureToCompositor):

1:14 AM Changeset in webkit [255789] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

[WPE] Add support for rendering menu list buttons
https://bugs.webkit.org/show_bug.cgi?id=207196

Reviewed by Žan Doberšek.

  • platform/wpe/RenderThemeWPE.cpp:

(WebCore::RenderThemeWPE::supportsFocusRing const):
(WebCore::RenderThemeWPE::adjustTextFieldStyle const):
(WebCore::RenderThemeWPE::paintTextField):
(WebCore::RenderThemeWPE::paintTextArea):
(WebCore::RenderThemeWPE::adjustSearchFieldStyle const):
(WebCore::RenderThemeWPE::paintSearchField):
(WebCore::paintFocus):
(WebCore::paintArrow):
(WebCore::RenderThemeWPE::popupInternalPaddingBox const):

  • platform/wpe/RenderThemeWPE.h:
Note: See TracTimeline for information about the timeline view.