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

Timeline



Feb 8, 2020:

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

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

Reviewed by Antti Koivisto.

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

  • layout/MarginTypes.h:

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

  • layout/blockformatting/BlockFormattingContext.cpp:

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

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

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

  • layout/displaytree/DisplayBox.cpp:

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

  • layout/displaytree/DisplayBox.h:

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

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

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

Reviewed by Antti Koivisto.

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

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

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

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

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

Reviewed by Antti Koivisto.

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

  • layout/LayoutContext.cpp:

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

  • layout/blockformatting/BlockFormattingContext.cpp:

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

  • layout/layouttree/LayoutBox.cpp:

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

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

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

Reviewed by Antti Koivisto.

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

  • layout/layouttree/LayoutBox.cpp:

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

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

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

Reviewed by Tim Horton.

  • wtf/PlatformUse.h:

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

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

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

Reviewed by Sam Weinig.
Source/WebCore:

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

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

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

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

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

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

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::computeExtentOfTransformAnimation const):

  • page/animation/KeyframeAnimation.cpp:

(WebCore::KeyframeAnimation::computeExtentOfTransformAnimation const):

LayoutTests:

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

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

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

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

Reviewed by Antti Koivisto.

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

  • layout/layouttree/LayoutBox.cpp:

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

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

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

Reviewed by Mark Lam.

Source/WTF:

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

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

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

  • wtf/HashTable.h:

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

Tools:

  • TestWebKitAPI/Tests/WTF/HashSet.cpp:

(TestWebKitAPI::testInitialCapacity):

12:36 PM Changeset in webkit [256092] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

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

Reviewed by Tim Horton.

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

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

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

inputmode="none".

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

  • UIProcess/API/ios/WKWebViewIOS.mm:

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

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

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

Reviewed by Tim Horton.
Source/JavaScriptCore:

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

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

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

Source/WebCore:

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

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

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

Source/WebCore/PAL:

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

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

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

Source/WebKit:

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

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

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

Source/WebKitLegacy:

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

  • scripts/generate-unified-sources.sh:

Source/WebKitLegacy/mac:

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

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

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

Source/WTF:

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

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

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

Tools:

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

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

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

Reviewed by Chris Dumez.

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

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

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::registrableDomainsToRemoveWebsiteDataFor):

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToRemoveWebsiteDataFor):

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

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

Patch by Doug Kelly <Doug Kelly> on 2020-02-08
Reviewed by Zalan Bujtas.

Source/WebCore:

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

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

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::attach):

  • rendering/updating/RenderTreeBuilderTable.cpp:

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

LayoutTests:

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

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

Reviewed by Yusuke Suzuki.

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

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

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

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

Feb 7, 2020:

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

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

Reviewed by Mark Lam.

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

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

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

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

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

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

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

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

Reviewed by Timothy Hatcher.

The slim toolbar needs a little more work before landing.

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

Source/WebCore:

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

Source/WebInspectorUI:

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

Source/WebKit:

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

Source/WebKitLegacy/ios:

  • WebCoreSupport/WebInspectorClientIOS.mm:

Source/WebKitLegacy/mac:

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

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

Reviewed by Brady Eidson.

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

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

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

Reviewed by David Kilzer.

  • UIProcess/Plugins/PluginProcessManager.cpp:

(WebKit::PluginProcessManager::getPluginProcessConnection):

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

(WebKit::WebProcessProxy::getPluginProcessConnection):

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

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

Reviewed by Andy Estes.

  • Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:

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

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

Tag Safari-610.1.1.4.2.

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

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

Reviewed by Chris Dumez.

Source/WebKit:

  • Platform/IPC/ArgumentCoders.h:

Source/WTF:

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

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

4:39 PM Changeset in webkit [256079] by Wenson Hsieh
  • 3 edits in trunk/Tools

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

Reviewed by Tim Horton.

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

  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

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

  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(overrideBundleIdentifier):
(setOverriddenApplicationKeyWindow):

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

Versioning.

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

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

Patch by Jack Lee <Jack Lee> on 2020-02-07
Reviewed by Ryosuke Niwa.

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

  • platform/graphics/FontCache.h:

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

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

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

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

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

(rx::StateManagerGL::bindFramebuffer):

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

(rx::nativegl_gl::InitializeFeatures):

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

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

Reviewed by Brent Fulgham.

Source/WebCore:

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

The workflow is as follows:

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

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

  • Modules/geolocation/Geolocation.cpp:

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

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

(WebCore::GeolocationClient::revokeAuthorizationToken):

  • Modules/geolocation/GeolocationController.cpp:

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

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

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

  • platform/mock/GeolocationClientMock.h:

Source/WebKit:

  • UIProcess/GeolocationPermissionRequestManagerProxy.cpp:

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

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

(WebKit::WebGeolocationManagerProxy::startUpdating):

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

(WebKit::WebPageProxy::geolocationPermissionRequestManager):

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

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

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

(WebKit::WebGeolocationManager::registerWebPage):

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

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

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

(WebKit::WebPage::didReceiveGeolocationPermissionDecision):

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

Source/WebKitLegacy/mac:

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

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

Source/WebKitLegacy/win:

  • WebCoreSupport/WebGeolocationClient.cpp:

(WebGeolocationClient::startUpdating):

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

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

Reviewed by Wenson Hsieh.

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

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

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

Source/WebCore:

Covered by an API test.

  • history/CachedFrame.cpp:

(WebCore::CachedFrame::setHasInsecureContent):

  • history/CachedFrame.h:

(WebCore::CachedFrame::usedLegacyTLS const):

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

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

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

Source/WebKit:

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

(WebKit::WebPageProxy::hasInsecureContent):

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

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

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

Source/WebKitLegacy/mac:

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

(WebFrameLoaderClient::dispatchDidCommitLoad):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::dispatchDidCommitLoad):

  • WebCoreSupport/WebFrameLoaderClient.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:

(TestWebKitAPI::TEST):

3:25 PM Changeset in webkit [256072] by Wenson Hsieh
  • 3 edits
    2 adds in trunk

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

Reviewed by Tim Horton and Simon Fraser.

Source/WebKit:

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

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

  • UIProcess/API/ios/WKWebViewIOS.mm:

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

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

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

LayoutTests:

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

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

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

Patch by Nikos Mouchtaris <Nikos Mouchtaris> on 2020-02-07
Reviewed by Andy Estes.

Fix for build problem.

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

Tag Safari-610.1.1.4.1.

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

Delete tag.

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

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

Reviewed by Tim Horton.

  • WebProcess/WebPage/WebFrame.cpp:

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

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

Tag Safari-609.1.17.

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

Unreviewed, rolling out r256051.

Broke internal builds.

Reverted changeset:

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

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

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

Unreviewed infrastructure fix.

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

  • BuildSlaveSupport/kill-old-processes:

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

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

Versioning.

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

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

Reviewed by Don Olmstead.

  • wtf/win/FileSystemWin.cpp:

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

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

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

Reviewed by Brent Fulgham.

Source/WebKit:

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

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

Covered by API tests.

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

(WebKit::wkWebAuthenticationPanelUpdate):

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

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

  • UIProcess/WebAuthentication/fido/CtapAuthenticator.h:

Tools:

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

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

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

Tag Safari-610.1.1.4.1.

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

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

Reviewed by Jer Noble.

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

  • html/HTMLMediaElement.cpp:

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

  • html/HTMLMediaElementEnums.h:

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

  • html/shadow/MediaControlElements.cpp:

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

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

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

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

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

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

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::mediaPlayerLogger):

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

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

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

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

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

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

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

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

  • rendering/RenderMediaControlElements.cpp:

(WebCore::RenderTextTrackContainerElement::layout):

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

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

Reviewed by Ryosuke Niwa.

  • Scripts/webkitdirs.pm:

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

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

Unreviewed build fix. rdar://problem/59264259

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

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

Reviewed by Tim Horton.

No new tests, build fix.

  • UIProcess/WKImagePreviewViewController.mm:

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

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

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

Reviewed by Timothy Hatcher.

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

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

Source/WebKit:

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

Reviewed by Yusuke Suzuki.

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::dumpResourceLoadStatistics):

LayoutTests:

Reviewed by Yusuke Suzuki.

Updated test expectations to reflect new sorting.

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

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

Reviewed by Brent Fulgham.

Source/WebKitLegacy/mac:

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

  • Misc/WebKitVersionChecks.mm:

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

Tools:

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

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

  • DumpRenderTree/mac/DumpRenderTree.mm:

(setDefaultsToConsistentValuesForTesting):

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

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

Unreviewed test gardening

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

Unreviewed build fix. rdar://problem/58826101

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

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

Reviewed by Tim Horton.
Source/JavaScriptCore:


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

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

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

Source/WebCore:

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

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

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

Source/WebCore/PAL:

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

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

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

Source/WebKit:

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

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

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

Source/WebKitLegacy:

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

  • scripts/generate-unified-sources.sh:

Source/WebKitLegacy/mac:

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

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

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

Source/WTF:

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

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

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

Tools:

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

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

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

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

Reviewed by Antti Koivisto.

Source/WebCore:

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

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

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

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

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

LayoutTests:

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

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

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

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

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

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

Reviewed by Brian Burg.

Source/JavaScriptCore:

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

Source/WebCore:

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

Tests: inspector/animation/effectChanged.html

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

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

Source/WebInspectorUI:

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

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

LayoutTests:

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

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

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

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

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

Reviewed by Simon Fraser.

Source/WebCore:

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

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

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

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

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

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

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

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

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

LayoutTests:

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

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

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

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

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

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

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark some new WPT progressions.

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

Source/WebCore:

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

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

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

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

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

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

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

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

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

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

Reviewed by Antti Koivisto.

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

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

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

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

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

Source/WebKit:

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

WebKitLibraries:

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

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

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

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

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

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

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

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

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

Unreviewed test gardening.

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

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

Reviewed by Brent Fulgham.

Source/WebKit:

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

(toWebKitWebViewCategory):
(toWKWebViewCategory):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Configuration.mm:

(TEST):

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

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

Patch by Nikos Mouchtaris <Nikos Mouchtaris> on 2020-02-07
Reviewed by Andy Estes.

Source/WebCore:

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

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

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

(WebCore::PaymentCoordinatorClient::supportsVersion):

  • Modules/applepay/cocoa/PaymentMethodCocoa.mm:

(WebCore::convert):

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::mergePaymentOptions):

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

LayoutTests:

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

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

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

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

Source/WebKit:

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

WebKitLibraries:

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

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

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

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

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

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

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

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

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

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

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

Reviewed by Darin Adler.

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

No new tests because there is no behavior change.

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::widthForSimpleText const):

  • platform/graphics/mac/SimpleFontDataCoreText.cpp:

(WebCore::Font::getCFStringAttributes const):

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

New branch.

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

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

Unreviewed test gardening.

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

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

Reviewed by Eric Carlson.

Source/WebCore:

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

  • Modules/mediastream/MediaDevices.cpp:

(WebCore::MediaDevices::getDisplayMedia):

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

LayoutTests:

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

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

Unreviewed test gardening.

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

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

Reviewed by Eric Carlson.

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

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::createLibWebRTCPeerConnectionBackend):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

(WebCore::LibWebRTCProvider::factory):

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

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

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

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

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

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

Address post-commit comments from Darin by using isASCIIHexDigit.

Unreviewed.

  • wtf/UUID.cpp:

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

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

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

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

Reviewed by Youenn Fablet.

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

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

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

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

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

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

Source/WebKit:

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

WebKitLibraries:

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

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

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

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

Unreviewed test gardening.

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

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

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

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

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

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

Unreviewed test gardening.

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

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

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

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

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

Source/WebCore:

Test: webrtc/stun-server-filtering.html

  • Modules/mediastream/RTCPeerConnection.cpp:

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

LayoutTests:

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

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

Reviewed by Chris Dumez.

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

  • UIProcess/BackgroundProcessResponsivenessTimer.cpp:

(WebKit::BackgroundProcessResponsivenessTimer::shouldBeActive const):

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

Address post-landing review comments from Darin on r255989.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::terminateServiceWorkerProcess):

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

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

Reviewed by Aakash Jain.

  • BuildSlaveSupport/ews-build/factories.py:

(ServicesFactory.init): Add RunResultsdbpyTests.

  • BuildSlaveSupport/ews-build/factories_unittest.py:

(TestTestsFactory.test_services_factory): Add RunResultsdbpyTests.

  • BuildSlaveSupport/ews-build/steps.py:

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

  • BuildSlaveSupport/ews-build/steps_unittest.py:

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

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

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

Reviewed by Brent Fulgham.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

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

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

Adding myself to contributors.json

Unreviewed

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

Adding myself to contributors.json

Unreviewed

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

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

Reviewed by Youenn Fablet.

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

  • animation/DocumentTimeline.cpp:

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

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

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

Reviewed by Alex Christensen.

Source/WebCore:

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

  • Modules/mediastream/PeerConnectionBackend.cpp:

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

Source/WebKit:

  • NetworkProcess/webrtc/NetworkMDNSRegister.cpp:

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

Source/WTF:

Add a routine to validate version 4 UUID.

  • wtf/UUID.cpp:

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

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

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

Reviewed by Mark Lam.

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

Relanding it by fixing dead-lock.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::shrinkToFit):

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

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

  • dfg/DFGJITFinalizer.cpp:

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

  • dfg/DFGPlan.cpp:

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

  • jit/JIT.cpp:

(JSC::JIT::link):

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

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

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

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

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

Source/WebCore:

Add WebCrypto implementations for the following algorithms with OpenSSL.

  • AES_CBC
  • AES_CFB
  • AES_GCM

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

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

  • crypto/openssl/CryptoAlgorithmAES_CBCOpenSSL.cpp:

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

  • crypto/openssl/CryptoAlgorithmAES_CFBOpenSSL.cpp:

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

  • crypto/openssl/CryptoAlgorithmAES_GCMOpenSSL.cpp:

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

  • crypto/openssl/CryptoAlgorithmRegistryOpenSSL.cpp:

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

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

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

LayoutTests:

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

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

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

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Implements same-site cookie support in the soup backend.

  • platform/network/HTTPParsers.cpp:

(WebCore::isSafeMethod):

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

(WebCore::SameSiteInfo::create):

  • platform/network/SameSiteInfo.h:

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

  • platform/network/soup/CookieSoup.cpp:

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

  • platform/network/soup/NetworkStorageSessionSoup.cpp:

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

  • platform/network/soup/ResourceRequestSoup.cpp:

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

Source/WebKit:

Implements same-site cookie support in the soup backend.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):

Tools:

Update libsoup to 2.69.90 in JHBuild.

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

LayoutTests:

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

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

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

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

LayoutTests/imported/w3c:

Updated improved test result.

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

Source/WebCore:

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

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

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

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::start):

  • dom/Document.h:

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

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

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

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

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

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

(WebCore::Worker::notifyFinished):

  • workers/WorkerGlobalScope.cpp:

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

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

(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):

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

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

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

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

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

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

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

(WebCore::WorkletGlobalScope::referrerPolicy const):

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

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

Source/WTF:

  • wtf/HashTable.h:

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

Tools:

  • TestWebKitAPI/Tests/WTF/HashSet.cpp:

(TestWebKitAPI::testInitialCapacity):

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

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

<rdar://problem/58985368>

Reviewed by Eric Carlson.

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

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

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

Covered by existing tests.

  • Modules/mediarecorder/MediaRecorderProvider.cpp:

(WebCore::MediaRecorderProvider::createMediaRecorderPrivate):

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

(WebCore::MediaRecorderPrivateAVFImpl::create):

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

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

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

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

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

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

Source/WebCore/PAL:

<rdar://problem/58985368>

Reviewed by Eric Carlson.

Add soft link macros for VideoToolbox and AudioToolbox.

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

Source/WebKit:

<rdar://problem/58985368>

Reviewed by Eric Carlson.

Enable RemoteMediaRecorder only for systems supporting AVAssetWriterDelegate.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::didReceiveMessage):

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

(WebKit::MediaRecorderProvider::createMediaRecorderPrivate):

Source/WTF:

Reviewed by Eric Carlson.

  • wtf/PlatformHave.h:

LayoutTests:

Reviewed by Eric Carlson.

Disable tests on all platforms except the ones supporting AVAssetWriterDelegate.

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

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

  • platform/mac/TestExpectations:

Enable running tests.

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

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

Reviewed by Alex Christensen.

Source/WebCore:

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

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

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

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::newICECandidate):

  • testing/MockLibWebRTCPeerConnection.cpp:

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

LayoutTests:

  • fast/history/resources/page-cache-helper-100ms.html: Added.
  • webrtc/peerconnection-new-candidate-page-cache-expected.txt: Added.
  • webrtc/peerconnection-new-candidate-page-cache.html: Added.
Note: See TracTimeline for information about the timeline view.