⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Mar 7, 2021:

7:45 PM Changeset in webkit [274061] by Lauro Moura
  • 3 edits
    2 adds in trunk/LayoutTests

[GLIB] Gardening and updating baselines

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/glib/imported/w3c/web-platform-tests/shadow-dom/nested-slot-remove-crash-expected.txt: Added.
  • platform/wpe/TestExpectations:
6:02 PM Changeset in webkit [274060] by Lauro Moura
  • 2 edits in trunk/Source/WebCore

Unreviewed. Fix -Wunused-parameter warning after r274033

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresCompositingForModel const):

5:48 PM Changeset in webkit [274059] by Lauro Moura
  • 2 edits in trunk/Source/WebCore

Unreviewed. Fix -Wreturn-type warning after r273891

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::trackMatchesKind):

2:45 PM Changeset in webkit [274058] by Wenson Hsieh
  • 6 edits in trunk

[iOS] maild hits a simulated crash when ENABLE(APP_HIGHLIGHTS) is defined
https://bugs.webkit.org/show_bug.cgi?id=222893
<rdar://problem/74230060>

Reviewed by Tim Horton.

Source/WebKit:

Fix the simulated crash by not initializing the shared callout bar and installing menu items for new app
highlight actions in the case where the web view is unparented. Additionally, avoid this work in the case where
the selection is not a range.

Test: AppHighlights.AvoidForcingCalloutBarInitialization

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView didMoveToWindow]):

Call -setUpAppHighlightMenusIfNeeded to ensure that we still add app highlight menu items in the case where
we avoided it previously, due to the web view being unparented. Note that if we're being unparented (i.e.
self.window has just become nil), we will return early from -setUpAppHighlightMenusIfNeeded.

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

(-[WKContentView _selectionChanged]):
(-[WKContentView setUpAppHighlightMenusIfNeeded]):
(-[WKContentView setUpAppHighlightMenus]): Deleted.

Rename setUpAppHighlightMenus to setUpAppHighlightMenusIfNeeded, and declare it in the header so that we
can call into it from -didMoveToWindow above.

Tools:

Add an API test to verify that we don't attempt to initialize the platform callout bar.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:
12:32 PM Changeset in webkit [274057] by Said Abou-Hallawa
  • 6 edits in trunk

[GPU Process] Recording transparency layer should reset the alpha of lastDrawingState
https://bugs.webkit.org/show_bug.cgi?id=222855

Reviewed by Simon Fraser.

Source/WebCore:

After appending BeginTransparencyLayer item, the alpha of lastDrawingState
should be reset. So any subsequent setAlpha() should be accumulated even
if the new alpha equals to the last alpha which was set in lastDrawingState.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::beginTransparencyLayer):
(WebCore::GraphicsContext::endTransparencyLayer):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::beginTransparencyLayer):
(WebCore::DisplayList::Recorder::endTransparencyLayer):

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::ContextState::cloneForTransparencyLayer const):

LayoutTests:

  • gpu-process/TestExpectations:
12:26 PM Changeset in webkit [274056] by graouts@webkit.org
  • 2 edits in trunk/LayoutTests

[Mojave] webanimations/accelerated-transform-related-animation-property-order.html is failing
https://bugs.webkit.org/show_bug.cgi?id=220018

Reviewed by Sam Weinig.

Mojave is no longer supported on ToT and this test has been passing reliably on the bots.

  • platform/mac-wk2/TestExpectations:
12:16 PM Changeset in webkit [274055] by graouts@webkit.org
  • 8 edits in trunk

Correctly handle "auto" values when blending z-index
https://bugs.webkit.org/show_bug.cgi?id=222870

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Add an extra 72 PASS results. We now pass all the z-index interpolation tests.

Another test has new failures, but this is expected, this test behaves the same way
across Firefox and Chrome as well.

  • web-platform-tests/css/css-transitions/animations/z-index-interpolation-expected.txt:
  • web-platform-tests/css/css-transitions/properties-value-auto-001-expected.txt:

Source/WebCore:

Create a dedicated wrapper for z-index such that we can handle "auto" values
instead of just blending an int.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::ZIndexPropertyWrapper::ZIndexPropertyWrapper):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

LayoutTests:

Fix the test animations/stacking-context-unchanged-while-running.html which made the
wrong assumption about blending of z-index with auto values. We now make this test
expect an "auto" value and update the helper to know how to deal with "auto" values
for "z-index".

  • animations/resources/animation-test-helpers.js:

(getPropertyValue):
(comparePropertyValue):

  • animations/stacking-context-unchanged-while-running.html:
11:50 AM Changeset in webkit [274054] by commit-queue@webkit.org
  • 5 edits in trunk

Use counters for pending events
https://bugs.webkit.org/show_bug.cgi?id=218556

Patch by Rob Buis <rbuis@igalia.com> on 2021-03-07
Reviewed by Ryosuke Niwa.

Source/WebCore:

Use counters for pending events instead of flags since
it is allowed to schedule multiple events:
https://html.spec.whatwg.org/multipage/images.html#update-the-image-data

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::ImageLoader):
(WebCore::ImageLoader::~ImageLoader):
(WebCore::ImageLoader::clearImageWithoutConsideringPendingLoadEvent):
(WebCore::ImageLoader::updateFromElement):
(WebCore::ImageLoader::notifyFinished):
(WebCore::ImageLoader::updatedHasPendingEvent):
(WebCore::ImageLoader::dispatchPendingBeforeLoadEvent):
(WebCore::ImageLoader::dispatchPendingLoadEvent):
(WebCore::ImageLoader::dispatchPendingErrorEvent):

  • loader/ImageLoader.h:

(WebCore::ImageLoader::hasPendingBeforeLoadEvent const):
(WebCore::ImageLoader::hasPendingActivity const):

LayoutTests:

The onerror can be called multiple times, after the first call
container will have no parent, so protect against that in
subsequent calls.

  • fast/dom/modify-node-and-while-in-the-callback-too-crash.html:
10:16 AM Changeset in webkit [274053] by weinig@apple.com
  • 6 edits in trunk/Source

Move new color(), lab() and lch() color functions behind runtime settings.
https://bugs.webkit.org/show_bug.cgi?id=222869

Reviewed by Simon Fraser.

Source/WebCore:

Add checking for new experimental feature flag for the new CSS Color 4 color types.

As the flag is on by default, there is no change in behavior. This is just to allow
ports to disable the feature if they need to.

  • css/parser/CSSParserContext.cpp:

(WebCore::operator==):

  • css/parser/CSSParserContext.h:

(WebCore::CSSParserContextHash::hash):

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::parseHWBParameters):
(WebCore::CSSPropertyParserHelpers::parseLabParameters):
(WebCore::CSSPropertyParserHelpers::parseLCHParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionForRGBTypes):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionForLabParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionForXYZParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunction):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

Add experimental feature flag for the new CSS Color 4 color types.

9:41 AM Changeset in webkit [274052] by weinig@apple.com
  • 4 edits in trunk/Tools

Transition Cocoa DumpRenderTree to allow any preference keys, not just hard coded supported ones
https://bugs.webkit.org/show_bug.cgi?id=222868

Reviewed by Simon Fraser.

This allows any preference key in a WebPreference*.yaml to be used for Cocoa WebKitLegacy
tests in the comment header command, just like WebKitTestRunner.

  • DumpRenderTree/TestOptions.cpp:

(WTR::TestOptions::defaults):
Update defaults to only the default values that don't match
defaults in WebPreference*.yaml files and experimental features
that are not supported in but still declare support in the file.

  • DumpRenderTree/TestRunner.h:

Remove unimplemented function declaration.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(setWebPreferencesForTestOptions):
(setDefaultsToConsistentValuesForTesting):
(prepareConsistentTestingEnvironment):
(resetWebPreferencesToConsistentValues): Deleted.
(webPreferenceFeatureValue): Deleted.
Replace most explicit reseting with the combination of _resetForTesting, automatic
enabling experimental features, and use of _set<type>PreferenceForTestingWithValue
from TestOptions.

Mar 6, 2021:

9:35 PM Changeset in webkit [274051] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

[WebAuthn] Expand WebAuthn Process's sandbox profile on iOS
https://bugs.webkit.org/show_bug.cgi?id=222858
<rdar://problem/74772012>

Reviewed by Brent Fulgham.

Allows WebAuthn process to use AAA again.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb:
9:11 PM Changeset in webkit [274050] by Alan Bujtas
  • 5 edits
    2 adds in trunk

Only positive integers are allowed as values of orphans and widows
https://bugs.webkit.org/show_bug.cgi?id=222875
<rdar://problem/72996948>

Reviewed by Ryosuke Niwa.

Source/WebCore:

See https://drafts.csswg.org/css-break-3/#widows-orphans

Test: fast/multicol/negative-widow-value-crash.html

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::widows const):
(WebCore::RenderStyle::orphans const):
(WebCore::RenderStyle::setWidows):
(WebCore::RenderStyle::setOrphans):
(WebCore::RenderStyle::initialWidows):
(WebCore::RenderStyle::initialOrphans):

  • rendering/style/StyleRareInheritedData.h:

LayoutTests:

  • fast/multicol/negative-widow-value-crash-expected.txt: Added.
  • fast/multicol/negative-widow-value-crash.html: Added.
9:04 PM Changeset in webkit [274049] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r274033) [GLIB] Bots exiting early after lots of failures due to render tree differences
https://bugs.webkit.org/show_bug.cgi?id=222878

Reviewed by Wenson Hsieh.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresCompositingForModel const):
Invert the logic (to the sane direction, I have no idea why I typed it this way),
so that we don't require compositing for everything if ENABLE(MODEL_ELEMENT) is false.

6:37 PM Changeset in webkit [274048] by Alan Bujtas
  • 8 edits in trunk/Source/WebCore

[LFC][IFC] Provide a better estimate on the number of inline level boxes per line for LineBox.
https://bugs.webkit.org/show_bug.cgi?id=222821

Reviewed by Antti Koivisto.

Let's counting the number of inline level box on the line. It is a much better estimate than the number of runs even
if it misses some inline boxes when they span over multiple lines (the fail rate is ~1% on nytimes.com).

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::build):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::initialize):
(WebCore::Layout::Line::appendInlineBoxStart):
(WebCore::Layout::Line::appendNonReplacedInlineLevelBox):
(WebCore::Layout::Line::appendLineBreak):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::inlineLevelBoxCount const):

  • layout/inlineformatting/InlineLineBox.cpp:

(WebCore::Layout::LineBox::LineBox):

  • layout/inlineformatting/InlineLineBox.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::layoutInlineContent):

  • layout/inlineformatting/InlineLineBuilder.h:
6:28 PM Changeset in webkit [274047] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

[perf dashboard] Modernize TimeSeries and TimeSeriesView
https://bugs.webkit.org/show_bug.cgi?id=222872

Reviewed by Dewei Zhu.

Declare instance fields in class declarations, use const/let instead of var, and use generators
for forward and backward iterations instead of manually implementing the iterator protocol.

This patch also splits FilteredTimeSeriesView out of TimeSeriesView.

  • public/v3/models/time-series.js:

(TimeSeries): Moved the declaration of _data instance field to the class declaration.
(TimeSeries.prototype.constructor): Deleted.
(TimeSeries.prototype.extendToFuture):
(TimeSeries.prototype.valuesBetweenRange):
(TimeSeries.prototype.findById):
(TimeSeries.prototype.findPointAfterTime):
(TimeSeriesView): Declared the instance fields in the class declaration.
(TimeSeriesView.prototype.constructor): Removed filteredData from the argument since it's split
out to FilteredTimeSeriesView now.
(TimeSeriesView.prototype.get _data): Added. An abstraction needed for FilteredTimeSeriesView.
(TimeSeriesView.prototype._findIndexForPoint): Ditto. Moved out of the constructor.
(TimeSeriesView.prototype.filter): Return a FilteredTimeSeriesView.
(TimeSeriesView.prototype.viewTimeRange): Use _subRange to return either TimeSeriesView or
FilteredTimeSeriesView which ever is needed.
(TimeSeriesView.prototype._subRange): An abstraction needed for FilteredTimeSeriesView.
(TimeSeriesView.prototype.Symbol.iterator): Made this a generator instead of implementing
the iterator protocol directly.
(TimeSeriesView.prototype._reverse): Ditto.
(FilteredTimeSeriesView): Added.
(FilteredTimeSeriesView.prototype.constructor): Added. Assert that afterEndingIndex is less than
the length of the filtered data. This assertion was missing in TimeSeries prior to this patch
when filteredData is specified.
(FilteredTimeSeriesView.prototype.get _data): Added.
(FilteredTimeSeriesView.prototype._subRange): Added. Instantiate FilteredTimeSeriesView with
the same filtered data.
(FilteredTimeSeriesView.prototype._findIndexForPoint): Moved from TimeSeriesView's constructor.
(FilteredTimeSeriesView.prototype._buildPointIndexMap): Moved from TimeSeriesView.

6:25 PM Changeset in webkit [274046] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

[perf dashboard] Some browser tests are flaky or failing
https://bugs.webkit.org/show_bug.cgi?id=222874

Reviewed by Dewei Zhu.

There were two tests in TimeSeriesChart tests that were intermittently failing due to the test
not reliably waiting for the iframe's resize to take effect and not waiting for the time series'
fetching logic to run 'til completion before waiting for canvas charts to be re-drawn. Fixing
these by adding code to wait for these conditons.

All browser tests for markup-component.js was broken in r274036 as require function is not
available in browsers. Added a workaround in BrowsingContext to add a make assert.ok function
using expect(~).to.be.true().

  • browser-tests/index.html:

(BrowsingContext.prototype.constructor):
(waitForElementResize): Added.

  • browser-tests/time-series-chart-tests.js: Fixed bugs in the tests.
5:02 PM Changeset in webkit [274045] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, reverting r274041.
https://bugs.webkit.org/show_bug.cgi?id=222873

Broke the build instead of fixing it

Reverted changeset:

"Fix the build"
https://trac.webkit.org/changeset/274041

4:27 PM Changeset in webkit [274044] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

[perf dashboard] Modernize DataModelObject and LabeledObject
https://bugs.webkit.org/show_bug.cgi?id=222871

Reviewed by Dewei Zhu.

Use const/let instead of var, async/await instead of Promise.then, and Map instead
of a regular object for a dictionary.

Also define instance fields in the class declaration instead of simply adding them
in the class constructors, and set the default parameter values instead of relying
on the unspecified argument being undefined.

  • public/v3/models/data-model.js:

(DataModelObject.ensureSingleton):
(DataModelObject.namedStaticMap):
(DataModelObject.ensureNamedStaticMap):
(DataModelObject.findById):
(DataModelObject.listForStaticMap):
(DataModelObject.async cachedFetch):
(DataModelObject):
(LabeledObject.sortByName):
(DataModelObject.cachedFetch): Deleted.

4:25 PM Changeset in webkit [274043] by rniwa@webkit.org
  • 4 edits in trunk/Websites/perf.webkit.org

[perf dashboard] Modernize MeasurementSet
https://bugs.webkit.org/show_bug.cgi?id=222857

Reviewed by Dewei Zhu.

Modernized MeasurementSet by using new instance field syntax, let/const instead of var,
async/await instead of then/catch, and Map instead of an object as a dictionary.

  • public/v3/models/measurement-set.js:

(Array.prototype.includes): Deleted this polyfill which was needed for an old node.js.
(MeasurementSet): Moved the initialization of instance variables here. Also use Map
for this._allFetches instead of using a regular object as a dictionary.
(MeasurementSet.findSet): Use Map for MeasurementSet mapping.
(MeasurementSet.prototype.findClusters): Use const and let instead of var.
(MeasurementSet.prototype.async fetchBetween): Use async & await instead of Promise.then.
(MeasurementSet.prototype._ensureClusterPromise): Use let/const instead of var.
(MeasurementSet.prototype._urlForCache): Renamed from _constructUrl and removed the argument
for useCache since this function is now only used for feteching JSON caches.
(MeasurementSet.async _fetchPrimaryCluster): Use async/await and let/const. Consolidated
the API call to re-generate new JSON files and inlined API path here.
(MeasurementSet.async _fetchSecondaryCluster): Use async/await.
(MeasurementSet._addFetchedCluster): Use let/const instead of var.
(MeasurementSet.async fetchSegmentation): Use async/await and let/const.
(MeasurementSet.async _cachedClusterSegmentation): Ditto.
(MeasurementSet.prototype.async _invokeSegmentationAlgorithm): Ditto.

  • unit-tests/measurement-set-tests.js:

(beforeEach): Updated the logic to reset measurement sets since the static variable was
renamed in MeasurementSet.findSet above.

  • unit-tests/resources/mock-v3-models.js:

(MockModels.inject): Ditto.

11:09 AM Changeset in webkit [274042] by ddkilzer@apple.com
  • 3 edits in trunk/Tools

webkit-patch won't parse rdar://nnnnnnnn URLs in ChangeLogs
<https://webkit.org/b/222863>

Reviewed by Simon Fraser.

  • Scripts/webkitpy/common/checkout/changelog.py:

(ChangeLogEntry):

  • Update regex.
  • Scripts/webkitpy/common/checkout/changelog_unittest.py:

(test_fuzzy_radar_matchnone):

  • Move test cases that used to fail into another test.

(test_fuzzy_radar_match_format_without_context): Add.

  • Rename from test_fuzzy_radar_match_format_1().

(test_fuzzy_radar_match_format_1):

  • Rename to test_fuzzy_radar_match_format_without_context().

(test_fuzzy_radar_match_format_2):

  • Combine with test_fuzzy_radar_match_format_without_context().

(test_fuzzy_radar_match_format_with_context): Add.

  • Rename from test_fuzzy_radar_match_format_3().

(test_fuzzy_radar_match_format_3):

  • Rename to test_fuzzy_radar_match_format_with_context().
11:03 AM Changeset in webkit [274041] by mmaxfield@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix the build

Unreviewed.

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

10:45 AM Changeset in webkit [274040] by weinig@apple.com
  • 5 edits in trunk

Simplify DumpRenderTree WebPreferences reset
https://bugs.webkit.org/show_bug.cgi?id=218024
<rdar://problem/70764568>

Reviewed by Simon Fraser.

Source/WebKitLegacy/mac:

  • WebView/WebPreferences.mm:

(WebPreferencesPrivate::WebPreferencesPrivate):
(-[WebPreferences encodeWithCoder:]):
(-[WebPreferences _valueForKey:]):
(-[WebPreferences _setStringValue:forKey:]):
(-[WebPreferences _setStringArrayValueForKey:forKey:]):
(-[WebPreferences _setIntegerValue:forKey:]):
(-[WebPreferences _setUnsignedIntValue:forKey:]):
(-[WebPreferences _setFloatValue:forKey:]):
(-[WebPreferences _setBoolValue:forKey:]):
(-[WebPreferences _setLongLongValue:forKey:]):
(-[WebPreferences _setUnsignedLongLongValue:forKey:]):
(-[WebPreferences _startBatchingUpdates]):
(-[WebPreferences _stopBatchingUpdates]):
(-[WebPreferences _batchUpdatePreferencesInBlock:]):
(-[WebPreferences _resetForTesting]):
(-[WebPreferences _postPreferencesChangedNotification]):
(-[WebPreferences _postPreferencesChangedAPINotification]):
(-[WebPreferences _invalidateCachedPreferences]):
(WebPreferencesPrivate::~WebPreferencesPrivate): Deleted.

  • WebView/WebPreferencesPrivate.h:

Add new helpers for testing to reset and batch updates.

Tools:

Use new _batchUpdatePreferencesInBlock and _resetForTesting to simplify and
improve the performance of resetting preferences.

_batchUpdatePreferencesInBlock makes it so we only trigger the recalculation
of WebCore::Settings once per test, rather than linearly with the number of
settings that we reset.

_resetForTesting will allow us to remove explicit resetting of preferences
that use the existing default value (though this change does not utilize
that yet, to limit the number of changes in this commit).

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):
(setWebPreferencesForTestOptions):
(resetWebViewToConsistentState):

10:21 AM Changeset in webkit [274039] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[RenderTreeBuilder] Invalidate beforeChild when parent changes to RubyBase
https://bugs.webkit.org/show_bug.cgi?id=222862
<rdar://problem/73659871>

Reviewed by Antti Koivisto.

Source/WebCore:

The beforeChild value becomes invalid when the ruby subtree requires a ruby base and the child is going to
be attached under this newly constrcuted ruby base (the child and the beforeChild will not end up in the same subtree).

Test: fast/ruby/crash-when-attaching-to-base.html

  • rendering/updating/RenderTreeBuilderRuby.cpp:

(WebCore::RenderTreeBuilder::Ruby::attach):

LayoutTests:

  • fast/ruby/crash-when-attaching-to-base-expected.txt: Added.
  • fast/ruby/crash-when-attaching-to-base.html: Added.
8:28 AM Changeset in webkit [274038] by graouts@webkit.org
  • 38 edits in trunk

Improve blending of Length and other Length-related types
https://bugs.webkit.org/show_bug.cgi?id=222816

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Add an extra 153 PASS results. We now pass all the column-gap, row-gap, border-image-slice,
max-height and max-width interpolation tests.

  • web-platform-tests/css/css-align/animation/column-gap-composition-expected.txt:
  • web-platform-tests/css/css-align/animation/column-gap-interpolation-expected.txt:
  • web-platform-tests/css/css-align/animation/row-gap-composition-expected.txt:
  • web-platform-tests/css/css-align/animation/row-gap-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/background-position-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/background-position-origin-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/background-size-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-radius-interpolation-expected.txt:
  • web-platform-tests/css/css-box/animation/margin-bottom-composition-expected.txt:
  • web-platform-tests/css/css-box/animation/margin-left-composition-expected.txt:
  • web-platform-tests/css/css-box/animation/margin-right-composition-expected.txt:
  • web-platform-tests/css/css-box/animation/margin-top-composition-expected.txt:
  • web-platform-tests/css/css-box/animation/padding-bottom-composition-expected.txt:
  • web-platform-tests/css/css-box/animation/padding-left-composition-expected.txt:
  • web-platform-tests/css/css-box/animation/padding-right-composition-expected.txt:
  • web-platform-tests/css/css-box/animation/padding-top-composition-expected.txt:
  • web-platform-tests/css/css-flexbox/animation/flex-basis-composition-expected.txt:
  • web-platform-tests/css/css-position/animations/bottom-composition-expected.txt:
  • web-platform-tests/css/css-position/animations/left-composition-expected.txt:
  • web-platform-tests/css/css-position/animations/right-composition-expected.txt:
  • web-platform-tests/css/css-position/animations/top-composition-expected.txt:
  • web-platform-tests/css/css-shapes/animation/shape-margin-composition-expected.txt:
  • web-platform-tests/css/css-sizing/animation/max-height-composition-expected.txt:
  • web-platform-tests/css/css-sizing/animation/max-height-interpolation-expected.txt:
  • web-platform-tests/css/css-sizing/animation/max-width-composition-expected.txt:
  • web-platform-tests/css/css-sizing/animation/max-width-interpolation-expected.txt:
  • web-platform-tests/css/css-values/animations/calc-interpolation-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

We improve the blending behavior of a number of CSS properties that are represented as Length
or a type built upon Length, such as LengthSize, LengthBox or GapLength.

We remove the NonNegativeLengthPropertyWrapper class and instead allow LengthPropertyWrapper to
be passed some flags: one that indicates whether the CSS property supports <length-percentage>
values and one that indicates whether negative values are supported. We use those flags to
several CSS properties that are using LengthPropertyWrapper to ensure they have the correct
blending behavior.

We also take the code from the canInterpolateBetweenLengths lambda in LengthBoxPropertyWrapper's
canInterpolate override and refactor it into the canInterpolateLengths static method so that we
may use it across LengthPropertyWrapper and LengthVariantPropertyWrapper.

As for LengthVariantPropertyWrapper, we also update its canInterpolate() override to call into
type-specific static canInterpolateLengthVariants() methods which are implemented for LengthSize
and GapLength.

Finally, we update the blend() method for Length to return the from/to values as-is when progress
is 0 or 1, respectively.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc):
(WebCore::canInterpolateLengths):
(WebCore::LengthPropertyWrapper::LengthPropertyWrapper):
(WebCore::canInterpolateLengthVariants):
(WebCore::LengthVariantPropertyWrapper::LengthVariantPropertyWrapper):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
(WebCore::NonNegativeLengthPropertyWrapper::NonNegativeLengthPropertyWrapper): Deleted.

  • platform/Length.cpp:

(WebCore::blend):

LayoutTests:

Adjust expectations of a couple of WPT tests with platform-specific results.

We also add console logging for a non-WPT test, transitions/transition-to-from-undefined.html, which tests
transitions between properties that cannot be interpolated and thus don't yield a transition.

  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-box/animation/padding-bottom-composition-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-box/animation/padding-top-composition-expected.txt:
  • transitions/transition-to-from-undefined-expected.txt:
6:42 AM Changeset in webkit [274037] by Alexey Shvayka
  • 18 edits
    3 adds
    4 deletes in trunk

BooleanConstructor should be inlined in DFG / FTL
https://bugs.webkit.org/show_bug.cgi?id=220322

Reviewed by Yusuke Suzuki.

JSTests:

Reorganize tests so the every UseKind / needsTypeCheck / invert combination is covered.

  • microbenchmarks/array-filter-boolean-constructor.js: Added.
  • stress/dfg-branch.js: Added.
  • stress/dfg-to-boolean.js: Added.
  • stress/logical-not-masquerades-as-undefined.js: Removed.
  • stress/logical-not-masquerades.js: Removed.
  • stress/logical-not.js: Removed.
  • stress/value-to-boolean.js: Removed.

Source/JavaScriptCore:

array.filter(Boolean) is a rather popular idiom for removing falsy items from an array.
Also, Boolean(X) is sometimes used for explicit type casting.

This patch introduces ToBoolean DFG node and reorganizes compileLogicalNot(node) into
compileToBoolean(node, bool invert), leveraging already existing emitConvertValueToBoolean().

This approach is better than emitting LogicalNot<KnownBooleanUse>(LogicalNot(X)) as it results
in cleaner DFG node tree and is ~7% faster w/o FTL. Also, it enables adding a op_to_boolean
bytecode that will be generated for very common !!X patterns, reducing instruction count.

Just as LogicalNot, BooleanConstructor should handle masquerader objects, because Annex B
patches ToBoolean abstract op [1], preventing us from emitting simpler code.

This change advances provided microbenchmark by 110%, and is neutral for other ToBoolean cases.

[1]: https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-to-boolean

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleConstantInternalFunction):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGMayExit.cpp:
  • dfg/DFGNodeType.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileToBooleanString):
(JSC::DFG::SpeculativeJIT::compileToBooleanStringOrOther):
(JSC::DFG::SpeculativeJIT::compileStringZeroLength): Deleted.
(JSC::DFG::SpeculativeJIT::compileLogicalNotStringOrOther): Deleted.

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compileToBooleanObjectOrOther):
(JSC::DFG::SpeculativeJIT::compileToBoolean):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot): Deleted.
(JSC::DFG::SpeculativeJIT::compileLogicalNot): Deleted.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compileToBooleanObjectOrOther):
(JSC::DFG::SpeculativeJIT::compileToBoolean):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot): Deleted.
(JSC::DFG::SpeculativeJIT::compileLogicalNot): Deleted.

  • dfg/DFGWatchpointCollectionPhase.cpp:

(JSC::DFG::WatchpointCollectionPhase::handle):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileToBoolean):

6:31 AM Changeset in webkit [274036] by zhifei_fang@apple.com
  • 32 edits
    1 add in trunk/Websites/perf.webkit.org

Make server test run with new node version
https://bugs.webkit.org/show_bug.cgi?id=222463

Change assert.equal to assert.strictEqual since node deprecated this API
Add a new function console.assert to make sure it will throw an error

Reviewed by Ryosuke Niwa.

  • public/v3/models/repository.js:

(Repository.sortByNamePreferringOnesWithURL):
(Repository):

  • server-tests/admin-platforms-tests.js:
  • server-tests/admin-reprocess-report-tests.js:
  • server-tests/api-build-requests-tests.js:

(return.TestServer.remoteAPI.getJSON.string_appeared_here.then):

  • server-tests/api-commits-tests.js:

(assertCommitIsSameAsOneSubmitted):
(return.TestServer.remoteAPI.getJSON.string_appeared_here.then):

  • server-tests/api-manifest-tests.js:

(return.TestServer.remoteAPI.getJSON.string_appeared_here.then):

  • server-tests/api-measurement-set-tests.js:
  • server-tests/api-report-commits-tests.js:

(emptyReport.then):
(async initialReportCommits):
(async setUpTestsWithExpectedStatus):
(async testWithExpectedFailure):

  • server-tests/api-report-tests.js:

(emptyReport.then):

  • server-tests/api-test-groups.js:
  • server-tests/api-update-triggerable-tests.js:

(update.then):
(then.response.db.selectAll.string_appeared_here.then):
(then.db.selectAll.string_appeared_here.then):
(then.Manifest.fetch.then):

  • server-tests/api-upload-root-tests.js:
  • server-tests/api-uploaded-file-tests.js:

(return.TestServer.remoteAPI.getJSON.string_appeared_here.then):

  • server-tests/privileged-api-add-build-requests-tests.js:

(async createAnalysisTask):
(const.commitSet.of.updatedGroups.0.requestedCommitSets):

  • server-tests/privileged-api-create-analysis-task-tests.js:
  • server-tests/privileged-api-create-test-group-tests.js:

(createAnalysisTask):
(return.createAnalysisTask.string_appeared_here.then):
(return.addTriggerableAndCreateTask.string_appeared_here.then):
(string_appeared_here.then):

  • server-tests/privileged-api-upate-run-status.js:
  • server-tests/privileged-api-update-test-group-tests.js:

(async createAnalysisTask):

  • server-tests/privileged-api-upload-file-tests.js:

(TestServer.testConfig.uploadFileLimitInMB.1.then):

  • server-tests/resources/common-operations.js:

(async assertThrows):

  • server-tests/resources/temporary-file.js:

(TemporaryFile.makeTemporaryFileOfSizeInMB):

  • server-tests/tools-buildbot-triggerable-tests.js:

(assertRequestAndResolve):
(then.refetchManifest.then):
(getBuilderNameToIDMapPromise.then):

  • server-tests/tools-os-build-fetcher-tests.js:
  • server-tests/tools-sync-buildbot-integration-tests.js:

(assertAndResolveRequest):

  • tools/js/assert-override.js: Added.

(makeConsoleAssertThrow):

  • tools/js/buildbot-syncer.js:

(BuildbotBuildEntry.prototype.initialize):
(BuildbotBuildEntry.prototype.buildRequestStatusIfUpdateIsNeeded):
(BuildbotBuildEntry):
(BuildbotSyncer.prototype.scheduleRequest):
(BuildbotSyncer._loadConfig):
(BuildbotSyncer._parseRepositoryGroup):
(BuildbotSyncer._validateAndMergeConfig):
(BuildbotSyncer):

  • tools/js/buildbot-triggerable.js:

(BuildbotTriggerable.prototype._validateRequests):

  • tools/js/markup-component.js:

(const.MarkupDocument.new.MarkupDocument.prototype._idForClone):
(const.MarkupDocument.new.MarkupDocument.prototype.markup):

  • tools/js/os-build-fetcher.js:

(prototype._addOwnedCommitsForBuild):

  • tools/js/remote.js:

(NodeRemoteAPI.prototype.configure):

  • tools/js/v3-models.js:
  • unit-tests/commit-set-tests.js:
4:59 AM Changeset in webkit [274035] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[RenderTreeBuilder] Readjust the first child when it is the multicolumn container
https://bugs.webkit.org/show_bug.cgi?id=222851
<rdar://problem/73392642>

Reviewed by Simon Fraser.

Source/WebCore:

When a newly constructed renderer is supposed to be first child of its soon-to-be parent but
the parent establishes a multicolumn context (so its first child is a RenderMultiColumnFlow) this
renderer should be attached under the column container instead.

Test: fast/multicol/readjust-first-child-on-attach.html

  • rendering/updating/RenderTreeBuilderBlockFlow.cpp:

(WebCore::RenderTreeBuilder::BlockFlow::attach):

LayoutTests:

  • fast/multicol/readjust-first-child-on-attach-expected.txt: Added.
  • fast/multicol/readjust-first-child-on-attach.html: Added.
4:53 AM Changeset in webkit [274034] by dino@apple.com
  • 6 edits in trunk/Source

dlopen_preflight is failing (temporarily) but obsolete
https://bugs.webkit.org/show_bug.cgi?id=222829

Reviewed by Jer Noble.

I hit a bug where dlopen_preflight was failing in a particular build.
That is now fixed, but as I was discussing it with the dyld team
they said we should stop using it. The rationale was that it only
made sense during the PowerPC to Intel transition, and it is as
expensive as dlopen now.

Source/WebCore:

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

(WebCore::AVAssetMIMETypeCache::isAvailable const): Remove the preflight opening
of the AVFoundation framework.

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

(WebCore::AVStreamDataParserMIMETypeCache::isAvailable const):

Source/WTF:

  • wtf/PlatformUse.h: No need for preflight linking code.
  • wtf/cocoa/SoftLinking.h:
3:13 AM Changeset in webkit [274033] by timothy_horton@apple.com
  • 43 edits
    1 copy
    5 adds in trunk

<model> should create a model-owning compositing layer
https://bugs.webkit.org/show_bug.cgi?id=222798

Reviewed by Simon Fraser.

Source/JavaScriptCore:

  • inspector/protocol/LayerTree.json:

Add a compositing reason for <model>.

Source/WebCore:

Test: model-element/model-element-graphics-layers.html

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::setContentsToModel):

  • platform/graphics/Model.cpp: Added.

(WebCore::Model::create):
(WebCore::Model::Model):
(WebCore::operator<<):

  • platform/graphics/Model.h: Added.

(WebCore::Model::encode const):
(WebCore::Model::decode):
Add Model, a wrapper for the model.
For now, it just wraps a SharedBuffer.
In the future, it may contain other things, like file paths, identifiers, etc.

  • Modules/model-element/HTMLModelElement.cpp:

(WebCore::HTMLModelElement::model const):

  • Modules/model-element/HTMLModelElement.h:

HTMLModelElement can now vend a Model instead of just a SharedBuffer.

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::createPlatformCALayer):
(WebCore::GraphicsLayerCA::setContentsToModel):

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

(WebCore::operator<<):

  • platform/graphics/ca/PlatformCALayer.h:
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
Allow a GraphicsLayer to be given a Model as contents (as we do for e.g. Image and other things).
For simplicity's sake, and because anything more is unnecessary, just re-create
the ModelLayer when the model changes.

  • rendering/RenderBoxModelObject.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::contentChanged):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateConfiguration):
(WebCore::RenderLayerBacking::contentChanged):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresCompositingLayer const):
(WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
(WebCore::RenderLayerCompositor::reasonsForCompositing const):
(WebCore::RenderLayerCompositor::logReasonsForCompositing):
(WebCore::RenderLayerCompositor::requiresCompositingForModel const):

  • rendering/RenderLayerCompositor.h:
  • rendering/RenderModel.cpp:

(WebCore::RenderModel::requiresLayer const):
(WebCore::RenderModel::updateFromElement):
(WebCore::RenderModel::update):

  • rendering/RenderModel.h:

Require compositing for <model>, and add a custom layer type.

  • inspector/agents/InspectorLayerTreeAgent.cpp:

(WebCore::InspectorLayerTreeAgent::reasonsForCompositingLayer):
Add a compositing reason for <model>.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/LayerTreeDetailsSidebarPanel.js:

(WI.LayerTreeDetailsSidebarPanel.prototype._populateListOfCompositingReasons):
(WI.LayerTreeDetailsSidebarPanel):

  • UserInterface/Views/Layers3DContentView.js:

(WI.Layers3DContentView.prototype._updateReasonsList):
(WI.Layers3DContentView):
Add a compositing reason for <model>.

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::display):

  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:

(WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::encode const):
(WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::decode):
(WebKit::RemoteLayerTreeTransaction::description const):

  • SourcesCocoa.txt:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:

(WebKit::RemoteLayerTreeHost::makeNode):

  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:

(WebKit::RemoteLayerTreeHost::makeNode):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.cpp:

(WebKit::GraphicsLayerCARemote::createPlatformCALayer):

  • WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.h:
  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::create):
(WebKit::PlatformCALayerRemote::populateCreationProperties):

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.h:
  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:

(WebKit::PlatformCALayerRemoteCustom::populateCreationProperties):

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteModelHosting.h: Added.
  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteModelHosting.mm: Added.

(WebKit::PlatformCALayerRemoteModelHosting::create):
(WebKit::PlatformCALayerRemoteModelHosting::PlatformCALayerRemoteModelHosting):
(WebKit::PlatformCALayerRemoteModelHosting::clone const):
(WebKit::PlatformCALayerRemoteModelHosting::populateCreationProperties):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:

(WebKit::RemoteLayerTreeContext::layerDidEnterContext):
Create a new PlatformCALayerRemote subclass that knows about Model, and
passes its model along in the layer creation properties.

For now, the special model layer type will just make a plain layer.
Future patches will replace it with model-specific rendering.

LayoutTests:

  • model-element/model-element-graphics-layers-expected.txt: Added.
  • model-element/model-element-graphics-layers.html: Added.
  • model-element/model-element-renderer-expected.txt:
  • model-element/model-element-renderer-no-source-expected.txt:

Add a test ensuring that we make a compositing layer via layer dump, and update
existing tests that also happen to reveal this via render tree dump as well.

Note: See TracTimeline for information about the timeline view.