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

Timeline



Oct 10, 2020:

10:27 PM Changeset in webkit [268316] by ysuzuki@apple.com
  • 27 edits in trunk

[JSC] Assert Operation and HostFunction are in JITOperationsList
https://bugs.webkit.org/show_bug.cgi?id=217500

Reviewed by Saam Barati.

Source/JavaScriptCore:

We make JSC PtrTag more restricted. We add the following information for each PtrTag.

  1. What code target is tagged with this PtrTag? Native or JIT.
  2. What uses this PtrTag when invoking code? Native, JIT, or None.

And we will verify via JIT-caging.

This patch adds HostFunctionPtrTag and sign host functions with it. Previously, it was signed with JSEntryPtrTag,
and this is wrong since it is used for JS entry thunks. And we introduce assertion that function is registered in
JITOperationList when signing function with OperationPtrTag or HostFunctionPtrTag.

We also annotate all operations in testb3 so that testb3 can work with OperationPtrTag / HostFunctionPtrTag assertions.

  • assembler/JITOperationList.cpp:

(JSC::addPointers):

  • assembler/JITOperationList.h:
  • b3/testb3_1.cpp:

(main):

  • b3/testb3_5.cpp:

(JSC_DEFINE_JIT_OPERATION):
(simpleFunction): Deleted.
(functionWithHellaArguments): Deleted.
(functionWithHellaArguments2): Deleted.
(functionWithHellaArguments3): Deleted.
(simpleFunctionDouble): Deleted.
(simpleFunctionFloat): Deleted.
(functionWithHellaDoubleArguments): Deleted.
(functionWithHellaFloatArguments): Deleted.

  • b3/testb3_6.cpp:

(JSC_DEFINE_JIT_OPERATION):
(interpreterPrint): Deleted.

  • b3/testb3_7.cpp:

(JSC_DEFINE_JIT_OPERATION):
(oneFunction): Deleted.
(noOpFunction): Deleted.
(functionNineArgs): Deleted.

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareOSREntry):

  • dfg/DFGOperations.cpp:
  • jit/JITOperations.cpp:
  • jit/ThunkGenerators.cpp:

(JSC::nativeForGenerator):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSCPtrTag.cpp:

(JSC::tagForPtr):
(JSC::ptrTagName):

  • runtime/JSCPtrTag.h:

(JSC::tagJSCCodePtrImpl):
(JSC::untagJSCCodePtrImpl):

  • runtime/NativeFunction.h:

(JSC::TaggedNativeFunction::TaggedNativeFunction):
(JSC::TaggedNativeFunction::operator NativeFunction):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::doOSREntry):

Source/WebCore:

  • testing/js/WebCoreTestSupport.cpp:

(WebCoreTestSupport::populateJITOperations):

  • testing/js/WebCoreTestSupport.h:

Source/WTF:

This patch makes tagCodePtr etc. take PtrTag only from template parameter.
As a result, we can easily customize special verification process for specific PtrTag.
By leveraging this feature, we introduce HostFunction / JITOperation assertions for HostFunctionPtrTag and OperationPtrTag.

We also add tagCodePtrWithStackPointerForJITCall and untagCodePtrWithStackPointerForJITCall, they are used only when we need
to tag a pointer with stack pointer which is a dynamic PtrTag.

  • wtf/PtrTag.cpp:

(WTF::tagForPtr):

  • wtf/PtrTag.h:

(WTF::tagNativeCodePtrImpl):
(WTF::untagNativeCodePtrImpl):
(WTF::PtrTagTraits::tagCodePtr):
(WTF::PtrTagTraits::untagCodePtr):
(WTF::registerPtrTagLookup):
(WTF::reportBadTag):
(WTF::removeCodePtrTag):
(WTF::tagCodePtrImpl):
(WTF::tagCodePtr):
(WTF::untagCodePtrImpl):
(WTF::untagCodePtr):
(WTF::retagCodePtrImplHelper):
(WTF::retagCodePtrImpl):
(WTF::retagCodePtr):
(WTF::assertIsCFunctionPtr):
(WTF::isTaggedWith):
(WTF::tagCFunctionPtrImpl):
(WTF::tagCFunctionPtr):
(WTF::tagCFunction):
(WTF::untagCFunctionPtrImpl):
(WTF::untagCFunctionPtr):
(WTF::tagArrayPtr):
(WTF::untagArrayPtr):
(WTF::removeArrayPtrTag):
(WTF::retagArrayPtr):
(WTF::tagCodePtrWithStackPointerForJITCall):
(WTF::untagCodePtrWithStackPointerForJITCall):
(WTF::untagCodePtrImplHelper): Deleted.

Tools:

This patch turned out that WebCoreTestSupport has its own JIT operations. So we need to populate them in test harness specially.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(dumpRenderTree):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(main):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize):

6:30 PM Changeset in webkit [268315] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Rename LineBox::InlineBox to InlineLevelBox
https://bugs.webkit.org/show_bug.cgi?id=217562

Reviewed by Simon Fraser.

Let's use spec terms (https://www.w3.org/TR/css-inline-3/) where applicable.

InlineLevelBox -> box generated by an inline level element (replaced, non-replaced etc). LineBox contains a list of InlineLevelBoxes.
InlineBox -> A non-replaced InlineLevelBox. The contents of an inline box participate in the

same inline formatting context as the inline box itself (e.g. <span>this content is in the same IFC as the span box</span>).

RootInlineBox -> a special, anonymous inline box for all the IFC content (e.g. <div>this content is part of the root inline box</div>).

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::build):
(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):
(WebCore::Layout::LineBoxBuilder::adjustInlineBoxesLogicalHeight):
(WebCore::Layout::LineBoxBuilder::alignInlineLevelBoxesVerticallyAndComputeLineBoxHeight):
(WebCore::Layout::InlineFormattingContext::Geometry::computedLineLogicalRect const):
(WebCore::Layout::LineBoxBuilder::constructInlineBoxes): Deleted.
(WebCore::Layout::LineBoxBuilder::computeInlineBoxesLogicalHeight): Deleted.
(WebCore::Layout::LineBoxBuilder::alignInlineBoxesVerticallyAndComputeLineBoxHeight): Deleted.

  • layout/inlineformatting/InlineLineBox.cpp:

(WebCore::Layout::LineBox::InlineLevelBox::InlineLevelBox):
(WebCore::Layout::m_type):
(WebCore::Layout::LineBox::addRootInlineBox):
(WebCore::Layout::LineBox::addInlineLevelBox):
(WebCore::Layout::LineBox::logicalRectForTextRun const):
(WebCore::Layout::LineBox::InlineBox::InlineBox): Deleted.
(WebCore::Layout::m_baseline): Deleted.
(): Deleted.
(WebCore::Layout::LineBox::addInlineBox): Deleted.

  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::InlineLevelBox::isInlineBox const):
(WebCore::Layout::LineBox::inlineLevelBoxForLayoutBox const):
(WebCore::Layout::LineBox::inlineLevelBoxList const):
(WebCore::Layout::LineBox::containsInlineLevelBox const):
(WebCore::Layout::LineBox::rootInlineBox):
(WebCore::Layout::LineBox::nonRootInlineLevelBoxes const):
(WebCore::Layout::LineBox::inlineLevelBoxForLayoutBox):
(WebCore::Layout::LineBox::InlineLevelBox::createRootInlineBox):
(WebCore::Layout::LineBox::InlineLevelBox::createAtomicInlineLevelBox):
(WebCore::Layout::LineBox::InlineLevelBox::createInlineBox):
(WebCore::Layout::LineBox::InlineBox::logicalRect const): Deleted.
(WebCore::Layout::LineBox::InlineBox::logicalTop const): Deleted.
(WebCore::Layout::LineBox::InlineBox::logicalBottom const): Deleted.
(WebCore::Layout::LineBox::InlineBox::logicalLeft const): Deleted.
(WebCore::Layout::LineBox::InlineBox::logicalWidth const): Deleted.
(WebCore::Layout::LineBox::InlineBox::logicalHeight const): Deleted.
(WebCore::Layout::LineBox::InlineBox::baseline const): Deleted.
(WebCore::Layout::LineBox::InlineBox::descent const): Deleted.
(WebCore::Layout::LineBox::InlineBox::isEmpty const): Deleted.
(WebCore::Layout::LineBox::InlineBox::setIsNonEmpty): Deleted.
(WebCore::Layout::LineBox::InlineBox::lineSpacing const): Deleted.
(WebCore::Layout::LineBox::InlineBox::fontMetrics const): Deleted.
(WebCore::Layout::LineBox::InlineBox::layoutBox const): Deleted.
(WebCore::Layout::LineBox::InlineBox::setLogicalTop): Deleted.
(WebCore::Layout::LineBox::InlineBox::setLogicalWidth): Deleted.
(WebCore::Layout::LineBox::InlineBox::setLogicalHeight): Deleted.
(WebCore::Layout::LineBox::InlineBox::setBaseline): Deleted.
(WebCore::Layout::LineBox::InlineBox::setDescent): Deleted.
(WebCore::Layout::LineBox::InlineBox::setLineSpacing): Deleted.
(WebCore::Layout::LineBox::inlineBoxForLayoutBox const): Deleted.
(WebCore::Layout::LineBox::inlineBoxList const): Deleted.
(WebCore::Layout::LineBox::nonRootInlineBoxes const): Deleted.
(WebCore::Layout::LineBox::inlineBoxForLayoutBox): Deleted.
(WebCore::Layout::LineBox::InlineBox::createBoxForRootInlineBox): Deleted.
(WebCore::Layout::LineBox::InlineBox::createBoxForAtomicInlineLevelBox): Deleted.
(WebCore::Layout::LineBox::InlineBox::createBoxForInlineBox): Deleted.

1:39 PM Changeset in webkit [268314] by Darin Adler
  • 5 edits in trunk

replaceChildren() (with no arguments) silently does nothing rather than removing the children
https://bugs.webkit.org/show_bug.cgi?id=217537

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/dom/nodes/ParentNode-replaceChildren-expected.txt:
  • web-platform-tests/dom/nodes/ParentNode-replaceChildren.html:

Added a test of replaceChildren without any argument, on a parent having a child.

Source/WebCore:

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::replaceChildren): Removed incorrect early return when the
node is null, instead added some null checks around the parts of the algorithm that
should be skipped in that case.

12:49 PM Changeset in webkit [268313] by weinig@apple.com
  • 26 edits in trunk/Source

Use WebPreference definitions from shared configuration files in WebCore (Part 1)
https://bugs.webkit.org/show_bug.cgi?id=217551

Reviewed by Darin Adler.

Source/WebCore:

This begins using the WebPreferences*.yaml files for the generation of
WebCore's Settings and InternalSettings classes. In this first part, we
only are moving settings that already exist in the WebPreferences*.yaml
files. A subsequent change will migrate the remaining additional settings
over.

  • Configurations/WebCore.xcconfig:

Add variable (already used by WebKit) to access the WTF build scripts
directory for access to the WebPreferences*.yaml files in DerivedSources.make

  • DerivedSources-input.xcfilelist:

Update with new input files, the WebPreferences*.yaml files.

  • WebCoreMacros.cmake:
  • DerivedSources.make:

Update GenerateSettings.rb call with new parameters.

  • Scripts/GenerateSettings.rb:

Adds support for generating Settings based on preferences in the
WebPreferences*.yaml files while maintaining support for the additional
settings from Settings.yaml. Adds support for a new key, 'webcoreImplementation'
to continue supporting custom implementations in SettingsBase.

  • Scripts/SettingsTemplates/InternalSettingsGenerated.cpp.erb:
  • Scripts/SettingsTemplates/InternalSettingsGenerated.h.erb:
  • Scripts/SettingsTemplates/InternalSettingsGenerated.idl.erb:
  • Scripts/SettingsTemplates/Settings.cpp.erb:
  • Scripts/SettingsTemplates/Settings.h.erb:

Update to account for new names (@allSettingsSet) and differentiation
between custom and non-custom implementations.

  • editing/EditorCommand.cpp:
  • page/Frame.cpp:

Update for new name. DOMPasteAllowed -> domPasteAllowed, which matches convention.

  • page/Settings.yaml:

Moved settings that were bound by WebPreferences to WebPreferences. Sorted remaining
ones left.

  • page/SettingsDefaultValues.h:

Remove defaults that were the same on all platforms. These are now hardcoded in
WebPreferences.

  • style/StyleFontSizeFunctions.cpp:

(WebCore::Style::fontSizeForKeyword):
Add explicit type, now that minimumLogicalFontSize is a double, not an int in WebCore
(it was already a double at the WebKit/WebKitLegacy level).

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::sendViewportAttributesChanged):
Add explicit type to support layoutFallbackWidth now being an unsigned int
in Settings (it was already an unsigned int at the WebKit level).

Source/WTF:

This begins using the WebPreferences*.yaml files for the generation of
WebCore's Settings and InternalSettings classes. In this first part, we
only are moving settings that already exist in the WebPreferences*.yaml
files. A subsequent change will migrate the remaining additional settings
over.

To do this we must add default values for 'WebCore', which are unfortunately
still needed for things like the empty client based SVGImage and sanitizing
web content functionality. We only need default WebCore values for preferences
that are bound to WebCore::Settings. It would be good to eliminate the need
for these eventually, but that is not a goal of this change.

This also adds some new keys from WebCore's Settings.yaml:

  • 'webcoreOnChange: *' called by WebCore::Settings when the setting changes.
  • 'inspectorOverride: true' used to allow the inspector to override the setting.
  • 'webcoreImplementation: custom' used to indicate that WebCore::SettingsBase implements the setting.
  • 'webcoreGetter: *' used to provide an alternate name for the getter in WebCore::Settings.
  • 'webcoreExcludeFromInternalSettings: true' used to exclude from WebCore's InternalSettings bindings.
  • Scripts/GeneratePreferences.rb:

Adds check that if the preference is bound to WebCore, it includes defaults for all
three front generators, 'WebKit', WebKitLegacy', and 'WebCore'.

  • Scripts/Preferences/WebPreferences.yaml:
  • Scripts/Preferences/WebPreferencesDebug.yaml:
  • Scripts/Preferences/WebPreferencesExperimental.yaml:
  • Scripts/Preferences/WebPreferencesInternal.yaml:

Migrates defaults and additional keys from Settings.yaml.

12:46 PM Changeset in webkit [268312] by Adrian Perez de Castro
  • 11 edits in trunk/Source

[GTK] Build broken with ENABLE_GAMEPAD enabled
https://bugs.webkit.org/show_bug.cgi?id=217226

Reviewed by Darin Adler.

Source/WebCore:

No new tests needed.

  • Headers.cmake: List SharedGamepadValue.h in WebCore_PRIVATE_FRAMEWORK_HEADERS, which

was missing.

  • platform/gamepad/EmptyGamepadProvider.h: Mark class as final, because the destructor

is final itself.

  • platform/gamepad/manette/ManetteGamepad.cpp:

(WebCore::ManetteGamepad::ManetteGamepad): Adapt to use SharedGamepadValue.
(WebCore::ManetteGamepad::buttonPressedOrReleased): Ditto.
(WebCore::ManetteGamepad::absoluteAxisChanged): Ditto.

  • platform/gamepad/manette/ManetteGamepad.h: Ditto.
  • platform/gamepad/manette/ManetteGamepadProvider.cpp: Rename m_connectionDelayTimer

to m_initialGamepadsConnectedTimer, which better reflects the usage and also makes the
provider a bit more similar to HIDGamepadProvider (from the Mac port). Arrange to use
the EventMakesGamepadsVisible flag.
(WebCore::ManetteGamepadProvider::ManetteGamepadProvider): Remove the loop that iterates
over the pre-detected gamepads because they are being added too early before any client
has had the chance to be attached.
(WebCore::ManetteGamepadProvider::startMonitoringGamepads): The loop that iterates and
adds pre-detected gamepads is moved here, once there is at least a client. This solves
hitting an assertion later on when UIGamepadProvider checks that the number of gamepads
it has been notified of matches the amount tracked by ManetteGamepadProvider.
(WebCore::ManetteGamepadProvider::stopMonitoringGamepads):
(WebCore::ManetteGamepadProvider::deviceConnected):
(WebCore::ManetteGamepadProvider::deviceDisconnected):
(WebCore::ManetteGamepadProvider::initialGamepadsConnectedTimerFired):
(WebCore::ManetteGamepadProvider::inputNotificationTimerFired):

  • platform/gamepad/manette/ManetteGamepadProvider.h: Ditto.

Source/WebKit:

  • UIProcess/Gamepad/UIGamepadProvider.h: Mark class as final, because the destructor is

final itself.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::numberOfConnectedGamepadsForTesting): Reorganize PLATFORM(MAC)
guards to use GameControllerGamepadProvider only on macOS, as it is unavailable on other
ports.

  • WebProcess/Gamepad/WebGamepadProvider.h: Mark class as final, because the destructor

is final itself.

12:42 PM Changeset in webkit [268311] by Simon Fraser
  • 5 edits in trunk/Source/WebCore

[LFC Display] Only dump the trees when the log channel is enabled
https://bugs.webkit.org/show_bug.cgi?id=217560

Reviewed by Zalan Bujtas.

Only dump the layout and display trees when the FormattingContextLayout log channel
is enabled. Add ability to get the trees as a String for logging.

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::build const):
(WebCore::Display::displayTreeAsText):
(WebCore::Display::showDisplayTree):

  • display/DisplayTreeBuilder.h:
  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::layoutTreeAsText):
(WebCore::Layout::showLayoutTree):

  • layout/layouttree/LayoutTreeBuilder.h:
5:50 AM Changeset in webkit [268310] by Oriol Brufau
  • 2 edits
    1 delete in trunk/LayoutTests

Fix mac expectations for text-selection.html
https://bugs.webkit.org/show_bug.cgi?id=217475

Reviewed by Alexey Proskuryakov.

In Mojave this test produces a different result than in other platforms.
r268233 already added a Mojave-specific expected.txt, this patch removes
the failure from TestExpectations and removes the Mac-specific
expected.txt, which is identical to the non-platform-specific one.

  • platform/mac/TestExpectations:
  • platform/mac/imported/w3c/web-platform-tests/css/css-pseudo/text-selection-expected.txt: Removed.
5:49 AM Changeset in webkit [268309] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][Integration] Turn parent/first child check into establishesInlineFormattingContext in canUseForLineLayoutWithReason
https://bugs.webkit.org/show_bug.cgi?id=217545

Reviewed by Antti Koivisto.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

  • layout/integration/LayoutIntegrationCoverage.h:

Oct 9, 2020:

9:37 PM Changeset in webkit [268308] by jer.noble@apple.com
  • 5 edits in trunk/Source/WebCore

[Mac] AirPlay menu does not show up when AirPlay button is clicked
https://bugs.webkit.org/show_bug.cgi?id=217536
<rdar://problem/69973777>

Reviewed by Eric Carlson.

Source/WebCore:

PAL tries to soft-link the AVRoutePickerView from the AVFoundation framework, rather than the (correct)
AVKit framework. Remove AVRoutePickerView from AVFoundationSoftLink.h and use the already declared version
inside AVRoutePickerViewTargetPicker.mm.

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

(WebCore::AVRoutePickerViewTargetPicker::isAvailable):

Source/WebCore/PAL:

  • pal/cocoa/AVFoundationSoftLink.h:
  • pal/cocoa/AVFoundationSoftLink.mm:
9:12 PM Changeset in webkit [268307] by Alan Bujtas
  • 7 edits
    1 delete in trunk/Source/WebCore

[LFC][Display] Remove the WK1-only display painter
https://bugs.webkit.org/show_bug.cgi?id=217553

Reviewed by Simon Fraser.

This is replaced by /WebCode/display/css/DisplayCSSPainter.

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

(WebCore::Layout::LayoutContext::paint): Deleted.

  • layout/LayoutContext.h:
  • layout/displaytree/DisplayPainter.cpp: Removed.
  • layout/displaytree/DisplayPainter.h: Removed.
  • page/FrameView.cpp:

(WebCore::FrameView::paintContents):

7:47 PM Changeset in webkit [268306] by Kocsen Chung
  • 1 copy in tags/Safari-610.3.1

Tag Safari-610.3.1.

6:32 PM Changeset in webkit [268305] by Hector Lopez
  • 2 edits
    1 add in trunk/LayoutTests

[ macOS wk2 Debug ] editing/mac/spelling/autocorrection-contraction.html is a constant timeout
https://bugs.webkit.org/show_bug.cgi?id=217548

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:41 PM Changeset in webkit [268304] by mmaxfield@apple.com
  • 4 edits in trunk/Source/WebCore

[GPU Process] Delete DisplayList::DrawGlyphs::m_blockLocation because it's always 0
https://bugs.webkit.org/show_bug.cgi?id=217541

Reviewed by Wenson Hsieh.

There's no reason for it to exist.

No new tests because there is no behavior change.

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::DrawGlyphs::DrawGlyphs):
(WebCore::DisplayList::DrawGlyphs::computeBounds):
(WebCore::DisplayList::DrawGlyphs::localBounds const):
(WebCore::DisplayList::operator<<):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::DrawGlyphs::create):
(WebCore::DisplayList::DrawGlyphs::localAnchor const):
(WebCore::DisplayList::DrawGlyphs::anchorPoint const):
(WebCore::DisplayList::DrawGlyphs::encode const):
(WebCore::DisplayList::DrawGlyphs::decode):
(WebCore::DisplayList::DrawGlyphs::blockLocation const): Deleted.
(WebCore::DisplayList::DrawGlyphs::setBlockLocation): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::drawGlyphs):

5:20 PM Changeset in webkit [268303] by Hector Lopez
  • 2 edits in trunk/LayoutTests

[ macOS ] webaudio/OfflineAudioContext/onstatechange.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217543

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:17 PM Changeset in webkit [268302] by Kocsen Chung
  • 1 copy in tags/Safari-610.2.11.1.1

Tag Safari-610.2.11.1.1.

5:10 PM Changeset in webkit [268301] by Hector Lopez
  • 2 edits in trunk/LayoutTests

REGRESSION(r268161?): [ macOS ] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/processing-after-resume.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217542

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:08 PM Changeset in webkit [268300] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebCore

[GPU Process] Mechanical cleanup in DisplayListRecorder
https://bugs.webkit.org/show_bug.cgi?id=217539

Reviewed by Sam Weinig.

Move duplicated code into a helper function.

No new tests because there is no behavior change.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::drawGlyphs):
(WebCore::DisplayList::Recorder::drawImage):
(WebCore::DisplayList::Recorder::drawTiledImage):
(WebCore::DisplayList::Recorder::drawNativeImage):
(WebCore::DisplayList::Recorder::drawPattern):
(WebCore::DisplayList::Recorder::beginTransparencyLayer):
(WebCore::DisplayList::Recorder::drawRect):
(WebCore::DisplayList::Recorder::drawLine):
(WebCore::DisplayList::Recorder::drawLinesForText):
(WebCore::DisplayList::Recorder::drawDotsForDocumentMarker):
(WebCore::DisplayList::Recorder::drawEllipse):
(WebCore::DisplayList::Recorder::drawPath):
(WebCore::DisplayList::Recorder::drawFocusRing):
(WebCore::DisplayList::Recorder::fillRect):
(WebCore::DisplayList::Recorder::fillRoundedRect):
(WebCore::DisplayList::Recorder::fillRectWithRoundedHole):
(WebCore::DisplayList::Recorder::fillPath):
(WebCore::DisplayList::Recorder::fillEllipse):
(WebCore::DisplayList::Recorder::strokeRect):
(WebCore::DisplayList::Recorder::strokePath):
(WebCore::DisplayList::Recorder::strokeEllipse):
(WebCore::DisplayList::Recorder::clearRect):
(WebCore::DisplayList::Recorder::appendItemAndUpdateExtent):

  • platform/graphics/displaylists/DisplayListRecorder.h:
4:39 PM Changeset in webkit [268299] by Wenson Hsieh
  • 11 edits in trunk

[GPU Process] Add additional support for painting video elements to 2D contexts
https://bugs.webkit.org/show_bug.cgi?id=217532

Reviewed by Tim Horton.

Source/WebCore:

Add support for using video elements as sources for createImageBitmap and createPattern by ensuring that
we use display-list-backed image buffers for painting when using the GPU process for media. See below for more
details.

Tests: fast/canvas/canvas-createPattern-video-loading.html

fast/canvas/canvas-createPattern-video-modify.html
imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/canvas-createImageBitmap-video-resize.html
imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-drawImage.html
imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-flipY.html

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::createBufferForPainting const):

  • html/HTMLVideoElement.h:

Add a helper function to create an ImageBuffer compatible with this video element, for the purpose of
painting video frames. In particular, if GPU process for media is enabled, we'll create a display-list-backed
remote image buffer.

  • html/ImageBitmap.cpp:

(WebCore::ImageBitmap::createPromise):

Call into HTMLVideoElement::createBufferForPainting to construct the ImageBuffer.

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::createPattern):

Call into HTMLVideoElement::createBufferForPainting to construct the ImageBuffer.

  • platform/graphics/RenderingMode.h:

Add a "purpose" enum value for media painting.

  • platform/graphics/displaylists/DisplayListImageBuffer.h:

Adjust this to avoid forcing the platform context to be created in the case where there are no display list
items to flush. Needed to avoid crashing when creating CanvasPattern with a video element.

Source/WebKit:

See WebCore/ChangeLog for more details.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::shouldUseRemoteRenderingFor):

LayoutTests:

Unskip several layout tests that pass after this change.

  • gpu-process/TestExpectations:
4:34 PM Changeset in webkit [268298] by Hector Lopez
  • 2 edits in trunk/LayoutTests

imported/w3c/web-platform-tests/mediacapture-record/idlharness.window.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=217525

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:26 PM Changeset in webkit [268297] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION (r266972): [ Mojave+ debug wk2 ] compositing/animation/repaint-after-clearing-shared-backing.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217540

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:17 PM Changeset in webkit [268296] by Hector Lopez
  • 2 edits in trunk/LayoutTests

[ iOS Debug ] imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-stop.html is a constant timeout
https://bugs.webkit.org/show_bug.cgi?id=217538

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
4:06 PM Changeset in webkit [268295] by Kocsen Chung
  • 1 copy in tags/Safari-611.1.3

Tag Safari-611.1.3.

4:02 PM Changeset in webkit [268294] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][Integration] Enable overflow hidden.
https://bugs.webkit.org/show_bug.cgi?id=217488

Reviewed by Antti Koivisto.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForStyle):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::collectOverflow):

3:24 PM Changeset in webkit [268293] by Jonathan Bedard
  • 3 edits in trunk/Tools

[webkitscmpy] Handle svn info run from directory
https://bugs.webkit.org/show_bug.cgi?id=217521
<rdar://problem/70144173>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:

(Svn.init): Set the root_path, so that svn info is run from the top level.
(Svn.info): Rely on root_path, not path.
(Svn.root_path): Use self._root_path instead of self.info() call.
(Svn.list): Rely on root_path, not path.
(Svn._cache_revisions): Ditto.
(Svn.remote): The repository root will not change during a single command invocation.
(Svn._branch_for): Handle initial branch commits, which. may have non-standard change lists.
(Svn.commit): Rely on root_path, not path, certain svn info calls will not change during
the invocation of a single program.

3:15 PM Changeset in webkit [268292] by Peng Liu
  • 3 edits in trunk/Source/WebKit

[Media in GPU Process] Enable audio routing arbitration on Mac
https://bugs.webkit.org/show_bug.cgi?id=217528

Reviewed by Eric Carlson.

Use the audio routing arbitration implementation in the Web process and UI process
before moving AudioSessionRoutingArbitratorProxy to the GPU process (which will
require some sandbox changes).

  • WebProcess/GPU/media/RemoteAudioSession.cpp:

(WebKit::RemoteAudioSession::setCategory):
(WebKit::RemoteAudioSession::category const):

  • WebProcess/GPU/media/RemoteAudioSession.h:
2:48 PM Changeset in webkit [268291] by Kocsen Chung
  • 1 copy in tags/Safari-610.2.11.0.1

Tag Safari-610.2.11.0.1.

2:45 PM Changeset in webkit [268290] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit

Promote WKWebView media playback SPI to API
https://bugs.webkit.org/show_bug.cgi?id=217335

Unreviewed build fix for macCatalyst.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::isUserFacingChanged):

2:32 PM Changeset in webkit [268289] by Russell Epstein
  • 1 edit in branches/safari-610.2.11.1-branch/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h

Unreviewed build fix, rdar://problem/70142496

2:07 PM Changeset in webkit [268288] by Ryan Haddad
  • 12 edits
    1 delete in trunk/Source

Unreviewed, reverting r267539.

Causes WebContent process crash in certain configurations

Reverted changeset:

"Add libwebrtc.dylib version check"
https://bugs.webkit.org/show_bug.cgi?id=216884
https://trac.webkit.org/changeset/267539

1:56 PM Changeset in webkit [268287] by Simon Fraser
  • 9 edits
    2 adds in trunk/Source

Refactor wheel event coalescing into its own class
https://bugs.webkit.org/show_bug.cgi?id=217523

Reviewed by Sam Weinig.
Source/WebCore:

Export the TextStream outputter.

  • platform/PlatformWheelEvent.h:

Source/WebKit:

WebPageProxy had some confusing code for coalescing wheel events, first added in r116466.
To prepare this code for partial re-use in another place, factor it into its own class, WebWheelEventCoalescer.

WebWheelEventCoalescer holds a queue of pending NativeWebWheelEvents, and a queue of sequences of
NativeWebWheelEvents, where each sequence has been coalesced into a single WebWeelEvent which was
sent to the Web Process.

When the UI process receives a message back from the Web Process, it calls takeOldestEventBeingProcessed()
which removes the first sequence from m_eventsBeingProcessed. This code has to track NativeWebWheelEvents, because
we need to dig the NSEvent out of the NativeWebWheelEvent at this stage.

  • Platform/Logging.h: Add a WheelEvents log channel.
  • Shared/NativeWebWheelEvent.h:
  • Shared/WebWheelEventCoalescer.cpp: Added.

(WebKit::operator<<):
(WebKit::WebWheelEventCoalescer::canCoalesce):
(WebKit::WebWheelEventCoalescer::coalesce):
(WebKit::WebWheelEventCoalescer::shouldDispatchEventNow const):
(WebKit::WebWheelEventCoalescer::nextEventToDispatch):
(WebKit::WebWheelEventCoalescer::shouldDispatchEvent):
(WebKit::WebWheelEventCoalescer::takeOldestEventBeingProcessed):
(WebKit::WebWheelEventCoalescer::clear):

  • Shared/WebWheelEventCoalescer.h: Added.

(WebKit::WebWheelEventCoalescer::hasEventsBeingProcessed const):

  • Sources.txt:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::handleWheelEvent):
(WebKit::WebPageProxy::wheelEventCoalescer):
(WebKit::WebPageProxy::didReceiveEvent):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
(WebKit::canCoalesce): Deleted.
(WebKit::coalesce): Deleted.
(WebKit::coalescedWheelEvent): Deleted.
(WebKit::WebPageProxy::processNextQueuedWheelEvent): Deleted.
(WebKit::WebPageProxy::shouldProcessWheelEventNow const): Deleted.

  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
1:53 PM Changeset in webkit [268286] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

REGRESSION: [Mac Release] 2 Cookie API are failing
https://bugs.webkit.org/show_bug.cgi?id=217393

Patch by Alex Christensen <achristensen@webkit.org> on 2020-10-09
Reviewed by Chris Dumez.

If bad things happen when running API tests, the TestWebKitAPI default cookie storage can get stuck with
a cookie accept policy of never, which causes future tests to fail. All existing tests restore the cookie
accept policy to what it was before the test started, but once a machine gets into a bad state, there's nothing
to reset it to the default state. Some of our test bots have gotten into this bad state, causing 2 cookie API
tests to fail. To fix this, set the cookie accept policy to its default value before running these two tests.
I verified this works by getting my computer into this bad state, verifying repeated API test runs don't fix it,
and verified this brings the computer back into a good state and causes the API tests to pass again.

  • TestWebKitAPI/Tests/WebKitCocoa/CookiePrivateBrowsing.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/Proxy.mm:

(TestWebKitAPI::TEST):

1:05 PM Changeset in webkit [268285] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Overflow clip blocks visual overflow
https://bugs.webkit.org/show_bug.cgi?id=217526

Reviewed by Antti Koivisto.

This is in preparation for enabling 'overflow: hidden' for IFC.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::collectOverflow):

1:04 PM Changeset in webkit [268284] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Enable WeakRefs/FinalizationRegistries by default.
https://bugs.webkit.org/show_bug.cgi?id=215789

Reviewed by Yusuke Suzuki.

  • runtime/OptionsList.h:
1:03 PM Changeset in webkit [268283] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Expand the line content width with the caret when applicable
https://bugs.webkit.org/show_bug.cgi?id=217527

Reviewed by Antti Koivisto.

This patch is in preparation for enabling 'overflow: hidden' for IFC.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::constructContent):

1:02 PM Changeset in webkit [268282] by Russell Epstein
  • 12 edits
    1 delete in branches/safari-611.1.3-branch/Source

Revert r267539. rdar://problem/70148261

12:55 PM Changeset in webkit [268281] by Fujii Hironori
  • 5 edits in trunk

[WinCairo][GraphicsLayerTextureMapper] backdrop-filter support
https://bugs.webkit.org/show_bug.cgi?id=217081

Reviewed by Don Olmstead.

.:

  • Source/cmake/OptionsWin.cmake: Turn ENABLE_FILTERS_LEVEL_2 on for WinCairo.

Source/WebCore:

r264968 added TextureMapper backdrop-filter support for
Coordinated Graphics. This change enables it for
GraphicsLayerTextureMapper.

Existing backdrop-filter tests cover this change, but WinCairo DRT
and WTR don't support pixel dump in AC mode yet (Bug 215041).

  • platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:

(WebCore::GraphicsLayerTextureMapper::commitLayerChanges):
(WebCore::GraphicsLayerTextureMapper::flushCompositingState):
(WebCore::GraphicsLayerTextureMapper::setBackdropFilters):
(WebCore::GraphicsLayerTextureMapper::setBackdropFiltersRect):

  • platform/graphics/texmap/GraphicsLayerTextureMapper.h:
12:51 PM Changeset in webkit [268280] by Fujii Hironori
  • 3 edits in trunk/Source/WebCore

[WinCairo][GraphicsLayerTextureMapper] Image layers are entirely clipped since r260174
https://bugs.webkit.org/show_bug.cgi?id=217507

Reviewed by Don Olmstead.

r260174 added contentsClippingRect to TextureMapperLayer::State to
clip the content. However, it implemented setContentsClippingRect
only for CoordinatedGraphicsLayer but for
GraphicsLayerTextureMapper. Because the initial value of
contentsClippingRect is empty, entire image layers are clipped in
GraphicsLayerTextureMapper.

Existing compositing/images tests covers this change, but WinCairo
DRT and WTR don't support pixel dump in AC mode at the moment (Bug 215041).

  • platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:

(WebCore::GraphicsLayerTextureMapper::setContentsClippingRect): Added.
(WebCore::GraphicsLayerTextureMapper::commitLayerChanges):

  • platform/graphics/texmap/GraphicsLayerTextureMapper.h:
12:49 PM Changeset in webkit [268279] by Russell Epstein
  • 2 edits in branches/safari-611.1.3-branch/Source/WebKit

Cherry-pick r268273. rdar://problem/70148870

Change RELEASE_ASSERT to ASSERT in networkProcessesSet
https://bugs.webkit.org/show_bug.cgi?id=217524
<rdar://problem/70115841>

Reviewed by Tim Horton.

  • UIProcess/Network/NetworkProcessProxy.cpp:

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

12:35 PM Changeset in webkit [268278] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[GPU Process] Use correct GPU runtime settings when creating the dynamic IOKit sandbox extensions for the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=217491
<rdar://problem/70066087>

Reviewed by Youenn Fablet.

Currently, the creation of the dynamic IOKit sandbox extensions for the WebContent process is incorrectly using the same GPU
runtime settings as when creating Media related dynamic mach-lookup extensions. There are several other GPU runtime flags
that needs to be checked before creating the extensions.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

12:34 PM Changeset in webkit [268277] by Chris Fleizach
  • 2 edits in trunk/Source/WebKit

AX: Mark malware safe browser as a header for VoiceOver
https://bugs.webkit.org/show_bug.cgi?id=217505

Reviewed by Sam Weinig.

Mark this UI element as a header for VoiceOver on iOS.

  • UIProcess/Cocoa/WKSafeBrowsingWarning.mm:

(makeLabel):

12:33 PM Changeset in webkit [268276] by Aditya Keerthi
  • 6 edits
    7 adds in trunk

[macOS] Add editability to input type=month
https://bugs.webkit.org/show_bug.cgi?id=217481
<rdar://problem/70097164>

Reviewed by Sam Weinig.

Source/WebCore:

This patch adds editability to input type=month by leveraging existing
logic to add editable components to date/time inputs.

Tests: fast/forms/month/month-editable-components/month-editable-components-focus-and-blur-events.html

fast/forms/month/month-editable-components/month-editable-components-keyboard-events.html
fast/forms/month/month-editable-components/month-editable-components-mouse-events.html

  • html/MonthInputType.cpp:

(WebCore::MonthInputType::formatDateTimeFieldsState const):
(WebCore::MonthInputType::setupLayoutParameters const):

  • platform/text/cocoa/LocaleCocoa.mm:

(WebCore::LocaleCocoa::shortMonthFormat):

Update presented month format string to match AppKit.

LayoutTests:

  • TestExpectations:
  • fast/forms/month/month-editable-components/month-editable-components-focus-and-blur-events-expected.txt: Added.
  • fast/forms/month/month-editable-components/month-editable-components-focus-and-blur-events.html: Added.
  • fast/forms/month/month-editable-components/month-editable-components-keyboard-events-expected.txt: Added.
  • fast/forms/month/month-editable-components/month-editable-components-keyboard-events.html: Added.
  • fast/forms/month/month-editable-components/month-editable-components-mouse-events-expected.txt: Added.
  • fast/forms/month/month-editable-components/month-editable-components-mouse-events.html: Added.
  • platform/mac-wk2/TestExpectations:
12:19 PM Changeset in webkit [268275] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Support unicode contributor names
https://bugs.webkit.org/show_bug.cgi?id=217520
<rdar://problem/70143490>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/contributor.py:

(Contributor.init): Standardize name and emails as unicode.
(Contributor.repr): Ensure native string representation.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/contributor_unittest.py:

(TestContributor):
(TestContributor.test_unicode):

12:15 PM Changeset in webkit [268274] by Hector Lopez
  • 2 edits in trunk/LayoutTests

ASSERTION FAILED: REGRESSION(r268052?): WTF::CompletionHandler<void ()>::~CompletionHandler(): Completion handler should always be called !m_function
https://bugs.webkit.org/show_bug.cgi?id=217525

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:52 AM Changeset in webkit [268273] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Change RELEASE_ASSERT to ASSERT in networkProcessesSet
https://bugs.webkit.org/show_bug.cgi?id=217524
<rdar://problem/70115841>

Reviewed by Tim Horton.

  • UIProcess/Network/NetworkProcessProxy.cpp:
11:40 AM Changeset in webkit [268272] by Russell Epstein
  • 6 edits in branches/safari-610.2.11.1-branch/Source

Cherry-pick r268003. rdar://problem/70142496

Make NetscapePlugInStreamLoaderClient a weak pointer on NetscapePlugInStreamLoader
<https://webkit.org/b/217237>
<rdar://problem/69776714>

Reviewed by Alex Christensen.

Source/WebCore:

Could not write a test since reproducing a crash requires
rapidly reloading a URL to a PDF at random points during the
previous load.

Make NetscapePlugInStreamLoaderClient a WeakPtr on
NetscapePlugInStreamLoader, and add nullptr checks for
NetscapePlugInStreamLoader.m_client as needed.

  • loader/NetscapePlugInStreamLoader.cpp: (WebCore::NetscapePlugInStreamLoader::NetscapePlugInStreamLoader): (WebCore::NetscapePlugInStreamLoader::willSendRequest): (WebCore::NetscapePlugInStreamLoader::didReceiveResponse): (WebCore::NetscapePlugInStreamLoader::didReceiveDataOrBuffer): (WebCore::NetscapePlugInStreamLoader::didFinishLoading): (WebCore::NetscapePlugInStreamLoader::didFail): (WebCore::NetscapePlugInStreamLoader::willCancel):
  • loader/NetscapePlugInStreamLoader.h:

Source/WebKit:

Making NetscapePlugInStreamLoaderClient inherit from
CanMakeWeakPtr<> caused PDFPlugin to fail to compile because one
of its parent classes already inherited from CanMakeWeakPtr<>.
To fix this, extract a PDFPluginStreamLoaderClient class from
PDFPlugin and link the lifetime of PDFPluginStreamLoaderClient
to PDFPlugin.

After moving the NetscapePlugInStreamLoaderClient virtual
methods from PDFPlugin to PDFPluginStreamLoaderClient, add some
simple methods to PDFPlugin so that PDFPluginStreamLoaderClient
doesn't access the instance variables directly. Also make use
of these new methods in other parts of PDFPlugin.

  • WebProcess/Plugins/PDF/PDFPlugin.h: (WebKit::PDFPlugin::documentFinishedLoading): Add. (WebKit::PDFPlugin::identifierForLoader): Add. (WebKit::PDFPlugin::removeOutstandingByteRangeRequest): Add. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient): Add class.
  • WebProcess/Plugins/PDF/PDFPlugin.mm: (WebKit::PDFPlugin::PDFPlugin): (WebKit::PDFPlugin::receivedNonLinearizedPDFSentinel): (WebKit::PDFPlugin::getResourceBytesAtPosition): (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::willSendRequest): Move from PDFPlugin. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didReceiveResponse): Ditto. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didReceiveData): Ditto. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didFail): Ditto. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didFinishLoading): Ditto. (WebKit::PDFPlugin::byteRangeRequestForLoader): (WebKit::PDFPlugin::forgetLoader): (WebKit::PDFPlugin::willSendRequest): Move to PDFPluginStreamLoaderClient. (WebKit::PDFPlugin::didReceiveResponse): Ditto. (WebKit::PDFPlugin::didReceiveData): Ditto. (WebKit::PDFPlugin::didFail): Ditto. (WebKit::PDFPlugin::didFinishLoading): Ditto.

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

11:10 AM Changeset in webkit [268271] by keith_miller@apple.com
  • 25 edits in trunk

Finalizers shouldn't run if events can't fire
https://bugs.webkit.org/show_bug.cgi?id=214508

Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

This patch makes it so the DeferredWorkTimer won't run scheduled
tasks if those would not have run if they were scheduled in
WebCore. To do this there is now a concept of a
ScriptExecutionOwner. The ScriptExecutionOwner is almost always
the same as the global object of the pending task (referred to as
the ticket). The only exception to this is if the global object
is a JSDOMWindowBase, then the ScriptExecutionOwner is the
Document's JS wrapper. To tell the status of a
ScriptExecutionOwner, the DeferredWorkTimer calls a virtual
function on the global object of the ticket, for JSC-only this
just always returns Running. For WebCore, we ask the
ScriptExecutionContext associated with the ScriptExecutionOwner.

  • API/JSAPIGlobalObject.cpp:
  • API/JSAPIGlobalObject.mm:
  • jsc.cpp:
  • runtime/DeferredWorkTimer.cpp:

(JSC::DeferredWorkTimer::doWork):
(JSC::DeferredWorkTimer::addPendingWork):
(JSC::DeferredWorkTimer::hasDependancyInPendingWork):
(JSC::DeferredWorkTimer::didResumeScriptExecutionOwner):

  • runtime/DeferredWorkTimer.h:
  • runtime/JSFinalizationRegistry.cpp:

(JSC::JSFinalizationRegistry::create):
(JSC::JSFinalizationRegistry::finishCreation):

  • runtime/JSFinalizationRegistry.h:
  • runtime/JSGlobalObject.cpp:
  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::currentScriptExecutionOwner):
(JSC::JSGlobalObject::scriptExecutionStatus):

Source/WebCore:

This patch makes it so the DeferredWorkTimer won't run scheduled
tasks if those would not have run if they were scheduled in
WebCore. To do this there is now a concept of a
ScriptExecutionOwner. The ScriptExecutionOwner is almost always
the same as the global object of the pending task (referred to as
the ticket). The only exception to this is if the global object
is a JSDOMWindowBase, then the ScriptExecutionOwner is the
Document's JS wrapper. To tell the status of a
ScriptExecutionOwner, the DeferredWorkTimer calls a virtual
function on the global object of the ticket, for JSC-only this
just always returns Running. For WebCore, we ask the
ScriptExecutionContext associated with the ScriptExecutionOwner.

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::currentScriptExecutionOwner):
(WebCore::JSDOMWindowBase::scriptExecutionStatus):

  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSDOMWrapperCache.h:
  • bindings/js/JSRemoteDOMWindowBase.cpp:
  • bindings/js/JSWorkerGlobalScopeBase.cpp:

(WebCore::JSWorkerGlobalScopeBase::scriptExecutionStatus):

  • bindings/js/JSWorkerGlobalScopeBase.h:
  • bindings/js/JSWorkletGlobalScopeBase.cpp:

(WebCore::JSWorkletGlobalScopeBase::scriptExecutionStatus):

  • bindings/js/JSWorkletGlobalScopeBase.h:
  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::contextIdentifier const):
(WebCore::ScriptExecutionContext::removeFromContextsMap):
(WebCore::ScriptExecutionContext::~ScriptExecutionContext):
(WebCore::ScriptExecutionContext::jscScriptExecutionStatus const):
(WebCore::ScriptExecutionContext::resumeActiveDOMObjects):
(WebCore::ScriptExecutionContext::postTaskTo):

  • dom/ScriptExecutionContext.h:

Source/WTF:

Add a DropLockScope to make it easier to drop a lock for a short
piece of code. Also, instead of deleting int Locker constructor
we should just delete the underlying type of the
NoLockingNecessary enum.

  • wtf/Locker.h:

(WTF::Locker::~Locker):
(WTF::Locker::unlockEarly):
(WTF::Locker::Locker):
(WTF::Locker::operator=):
(WTF::Locker::unlock):
(WTF::DropLockForScope::DropLockForScope):
(WTF::DropLockForScope::~DropLockForScope):

LayoutTests:

Add tests that check we don't run any tasks from JSC's event loop while contexts
are suspended/stopped. Also skip the WASM tests on Win because WASM doesn't work
there.

  • fast/frames/detached-frame-wasm-resolve-expected.txt: Added.
  • fast/frames/detached-frame-wasm-resolve.html: Added.
  • fast/history/page-cache-active-finalization-registry-callback-expected.txt: Added.
  • fast/history/page-cache-active-finalization-registry-callback.html: Added.
  • fast/history/page-cache-wasm-promise-resolve-expected.txt: Added.
  • fast/history/page-cache-wasm-promise-resolve.html: Added.
  • platform/win/TestExpectations:
11:07 AM Changeset in webkit [268270] by pvollan@apple.com
  • 7 edits in trunk/Source/WebKit

[macOS] Issue sandbox extension for icon service when attachment element is enabled
https://bugs.webkit.org/show_bug.cgi?id=217483
<rdar://problem/70099680>

Reviewed by Brent Fulgham.

This has previously been done on iOS, and should be done on macOS as well.

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::creationParameters):

  • UIProcess/WebProcessProxy.h:
  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/com.apple.WebProcess.sb.in:
11:03 AM Changeset in webkit [268269] by achristensen@apple.com
  • 10 edits in trunk/Source/WebKit

Merge DownloadProxy::DidReceiveResponse and DownloadProxy::DecideDestinationWithSuggestedFilename into one message
https://bugs.webkit.org/show_bug.cgi?id=217519

Reviewed by Youenn Fablet.

No change in behavior. The current API has them as separate callbacks so we can have them as separate messages,
but future API probably won't, so let's merge them.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::findPendingDownloadLocation):

  • UIProcess/API/APIDownloadClient.h:

(API::DownloadClient::didReceiveAuthenticationChallenge):
(API::DownloadClient::decideDestinationWithSuggestedFilename):
(API::DownloadClient::didReceiveResponse): Deleted.

  • UIProcess/API/C/WKContext.cpp:

(WKContextSetDownloadClient):

  • UIProcess/Cocoa/LegacyDownloadClient.h:
  • UIProcess/Cocoa/LegacyDownloadClient.mm:

(WebKit::LegacyDownloadClient::decideDestinationWithSuggestedFilename):

  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::decideDestinationWithSuggestedFilename):
(WebKit::DownloadProxy::didReceiveResponse): Deleted.

  • UIProcess/Downloads/DownloadProxy.h:
  • UIProcess/Downloads/DownloadProxy.messages.in:
10:37 AM Changeset in webkit [268268] by Kate Cheney
  • 20 edits
    2 adds in trunk

Promote WKWebView media playback SPI to API
https://bugs.webkit.org/show_bug.cgi?id=217335
<rdar://problem/63406100>

Reviewed by Jer Noble.

Source/WebCore:

Change stopAllMediaPlayback to be more aptly named
pauseAllMediaPlayback because it is possible to resume
playing media after this is called. 'Stop' implies more permanence.
Add a function to the Document and Page objects to see if media playback
exists, is paused, or is suspended to determine media playback state.

  • dom/Document.cpp:

(WebCore::Document::~Document):
(WebCore::Document::mediaPlaybackExists):
(WebCore::Document::mediaPlaybackIsPaused):
(WebCore::Document::pauseAllMediaPlayback):
(WebCore::Document::stopAllMediaPlayback): Deleted.

  • dom/Document.h:
  • page/Page.cpp:

(WebCore::Page::mediaPlaybackExists):
(WebCore::Page::mediaPlaybackIsPaused):
(WebCore::Page::pauseAllMediaPlayback):
(WebCore::Page::stopAllMediaPlayback): Deleted.

  • page/Page.h:
  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::pauseAllMediaPlaybackForDocument):
(WebCore::PlatformMediaSessionManager::mediaPlaybackIsPaused):
(WebCore::PlatformMediaSessionManager::stopAllMediaPlaybackForDocument): Deleted.

  • platform/audio/PlatformMediaSessionManager.h:

Source/WebKit:

Currently the only way to interact with video in WKWebView is by injecting
JavaScript into a page. It would be useful to promote various media
playback SPI to API to make this easier for clients, including adding
completion handlers to the new API calls. Along with this,
we should add new API to check for media playback state.
This patch keeps the SPI around for compatibility.

  • Shared/API/Cocoa/WebKit.h:
  • Shared/MediaPlaybackState.h: Added.
  • UIProcess/API/Cocoa/WKMediaPlaybackState.h: Added.
  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView closeAllMediaPresentations]):
(-[WKWebView pauseAllMediaPlayback:]):
(-[WKWebView suspendAllMediaPlayback:]):
(-[WKWebView resumeAllMediaPlayback:]):
(toWKMediaPlaybackState):
(-[WKWebView requestMediaPlaybackState:]):
(-[WKWebView _closeAllMediaPresentations]):
(-[WKWebView _stopAllMediaPlayback]):
(-[WKWebView _suspendAllMediaPlayback]):
(-[WKWebView _resumeAllMediaPlayback]):

  • UIProcess/ios/fullscreen/WKFullScreenViewController.mm:

(-[WKFullScreenViewController _showPhishingAlert]):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestMediaPlaybackState):
(WebKit::WebPageProxy::pauseAllMediaPlayback):
(WebKit::WebPageProxy::suspendAllMediaPlayback):
(WebKit::WebPageProxy::resumeAllMediaPlayback):
(WebKit::WebPageProxy::stopAllMediaPlayback): Deleted.

  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::requestMediaPlaybackState):
(WebKit::WebPage::pauseAllMediaPlayback):
(WebKit::WebPage::suspendAllMediaPlayback):
(WebKit::WebPage::resumeAllMediaPlayback):
(WebKit::WebPage::stopAllMediaPlayback): Deleted.

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

Tools:

Add API testing coverage for new API. Also converted testing to
use the new API instead of SPI.

  • TestWebKitAPI/Tests/WebKitCocoa/StopSuspendResumeAllMedia.mm:

(TestWebKitAPI::TEST):

10:33 AM Changeset in webkit [268267] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitpy] Use webkitcorepy's auto installer for pytest packages
https://bugs.webkit.org/show_bug.cgi?id=215895
<rdar://problem/67885471>

Rubber-stamped by Aakash Jain.

  • Scripts/webkitpy/init.py: Add pytest and it's dependencies.
  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook.find_module): Remove pytest and pytest_timeout.
(AutoinstallImportHook._install_pytest_timeout): Deleted.
(AutoinstallImportHook._install_pytest): Deleted.

  • Scripts/webkitpy/webdriver_tests/pytest_runner.py: Implicitly use webkitcorepy's autoinstaller.
10:10 AM Changeset in webkit [268266] by Peng Liu
  • 3 edits
    8 moves in trunk/Source/WebCore

Move some audio buffer management related files from folder "mac" to folder "cocoa"
https://bugs.webkit.org/show_bug.cgi?id=217497

Reviewed by Youenn Fablet.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/audio/cocoa/AudioSampleBufferList.cpp: Renamed from Source/WebCore/platform/audio/mac/AudioSampleBufferList.cpp.
  • platform/audio/cocoa/AudioSampleBufferList.h: Renamed from Source/WebCore/platform/audio/mac/AudioSampleBufferList.h.
  • platform/audio/cocoa/AudioSampleDataSource.h: Renamed from Source/WebCore/platform/audio/mac/AudioSampleDataSource.h.
  • platform/audio/cocoa/AudioSampleDataSource.mm: Renamed from Source/WebCore/platform/audio/mac/AudioSampleDataSource.mm.
  • platform/audio/cocoa/CAAudioStreamDescription.cpp: Renamed from Source/WebCore/platform/audio/mac/CAAudioStreamDescription.cpp.

(WebCore::CAAudioStreamDescription::sampleRate const):
(WebCore::CAAudioStreamDescription::isPCM const):
(WebCore::CAAudioStreamDescription::isInterleaved const):
(WebCore::CAAudioStreamDescription::isSignedInteger const):
(WebCore::CAAudioStreamDescription::isFloat const):
(WebCore::CAAudioStreamDescription::isNativeEndian const):
(WebCore::CAAudioStreamDescription::numberOfInterleavedChannels const):
(WebCore::CAAudioStreamDescription::numberOfChannelStreams const):
(WebCore::CAAudioStreamDescription::numberOfChannels const):
(WebCore::CAAudioStreamDescription::sampleWordSize const):
(WebCore::CAAudioStreamDescription::bytesPerFrame const):
(WebCore::CAAudioStreamDescription::bytesPerPacket const):
(WebCore::CAAudioStreamDescription::formatFlags const):
(WebCore::CAAudioStreamDescription::operator== const):
(WebCore::CAAudioStreamDescription::operator!= const):
(WebCore::CAAudioStreamDescription::streamDescription const):
(WebCore::CAAudioStreamDescription::streamDescription):
Move the inline function definitions out-of-line to fix styling issues.

  • platform/audio/cocoa/CAAudioStreamDescription.h: Renamed from Source/WebCore/platform/audio/mac/CAAudioStreamDescription.h.
  • platform/audio/cocoa/CARingBuffer.cpp: Renamed from Source/WebCore/platform/audio/mac/CARingBuffer.cpp.
  • platform/audio/cocoa/CARingBuffer.h: Renamed from Source/WebCore/platform/audio/mac/CARingBuffer.h.
9:55 AM Changeset in webkit [268265] by Russell Epstein
  • 2 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r268257. rdar://problem/70142057

Switch Allow/Don't Allow buttons in getUserMedia prompt
https://bugs.webkit.org/show_bug.cgi?id=217513
<rdar://problem/70134429>

Reviewed by Eric Carlson.

Return NotAllowedError instead of SecurityError in case user denies with default prompt.
Make sure to have the Allow button in iOS prompt on the right instead of the left.
Tested in MiniBrowser and MobileMiniBrowser.

  • UIProcess/Cocoa/UserMediaPermissionRequestProxy.mm: (WebKit::UserMediaPermissionRequestProxy::doDefaultAction):

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

9:55 AM Changeset in webkit [268264] by Russell Epstein
  • 6 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r268256. rdar://problem/70142054

Implement TCC checks in UserMediaPermissionRequestManagerProxy
https://bugs.webkit.org/show_bug.cgi?id=217508
<rdar://problem/70129993>

Reviewed by Eric Carlson.

TCC checks must be done before asking the page client to decide whether to grant or not camera and/or microphone.
This ensures that, should the default action be done (default prompt), for instance in case the WKWebView application does not provide any delegate,
the TCC checks will happen before the default prompt.

For that reason, we move the TCC checks from UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest to UserMediaPermissionRequestManagerProxy::requestSystemValidation.

Manually tested in Safari and MiniBrowser.

  • UIProcess/Cocoa/UIDelegate.mm: (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): (WebKit::requestUserMediaAuthorizationForFrame): Deleted. (WebKit::requestAVCaptureAccessForMediaType): Deleted.
  • UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm: (WebKit::requestAVCaptureAccessForMediaType): (WebKit::UserMediaPermissionRequestManagerProxy::requestSystemValidation):
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp: (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest): (WebKit::UserMediaPermissionRequestManagerProxy::decidePolicyForUserMediaPermissionRequest): (WebKit::UserMediaPermissionRequestManagerProxy::requestSystemValidation):
  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/WebPageProxy.h: (WebKit::WebPageProxy::preferences const):

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

9:26 AM Changeset in webkit [268263] by graouts@webkit.org
  • 10 edits
    2 adds in trunk

CSS transform computed style should not reflect individual transform properties
https://bugs.webkit.org/show_bug.cgi?id=217473
<rdar://problem/70091605>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Add a newly-authored WPT test to check that setting individual transform properties does not interfere with the
computed style for the "transform" property.

  • web-platform-tests/css/css-transforms/transform-and-individual-transform-properties-computed-style-expected.txt: Added.
  • web-platform-tests/css/css-transforms/transform-and-individual-transform-properties-computed-style.html: Added.

Source/WebCore:

Because RenderStyle::applyTransform() accounts for the new rotate, scale and translate properties, we need a way to call this
method from computedTransform() without accounting for those properties. While we used to only have the option to include or
exclude transform-origin, we now allow for multiple options to be specified using a new TransformOperationOption enum and
passing an OptionSet<TransformOperationOption> to RenderStyle::applyTransform().

Test: imported/w3c/web-platform-tests/css/css-transforms/transform-and-individual-transform-properties-computed-style.html

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::computeTransformedExtentViaMatrix const):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::computedTransform):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::updateTransform):
(WebCore::RenderLayer::currentTransform const):

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

(WebCore::RenderLayerBacking::updateTransform):
(WebCore::RenderLayerBacking::getCurrentTransform const):

  • rendering/style/RenderStyle.cpp:

(WebCore::requireTransformOrigin):
(WebCore::RenderStyle::applyTransform const):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::applyTransform):

  • svg/SVGTextElement.cpp:

(WebCore::SVGTextElement::animatedLocalTransform const):

9:25 AM Changeset in webkit [268262] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][Integration] Enable FlowTextIsEmpty case
https://bugs.webkit.org/show_bug.cgi?id=217512

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::appendTextContent): A zero length content is not considered
whitespace content (it does not really have type) but it still collapses completely (does not generate a run).
and it does not really have a type

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForFontAndText):

  • layout/integration/LayoutIntegrationCoverage.h:
9:24 AM Changeset in webkit [268261] by achristensen@apple.com
  • 20 edits in trunk

Use sendWithAsyncReply for NetworkProcess::CancelDownload
https://bugs.webkit.org/show_bug.cgi?id=217420

Reviewed by Youenn Fablet.

Source/WebKit:

This paves the way for a good download API that has a completion handler when you call cancel that gives you the resume data if it can.
Currently you have to call cancel on the download, wait for didCancel on the delegate, then get the resume data from the download again.
This has the side effect of DownloadMonitor cancellations calling didFailWithError instead of didCancel, which makes sense and shouldn't
cause any problems in practice. Safari is the only API client that uses this, and it behaves similarly in didCancel and didFailWithError.

  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::cancel):
(WebKit::Download::didCancel):

  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::cancelDownload):

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/Downloads/DownloadMonitor.cpp:

(WebKit::DownloadMonitor::timerFired):

  • NetworkProcess/Downloads/PendingDownload.cpp:

(WebKit::PendingDownload::cancel):

  • NetworkProcess/Downloads/PendingDownload.h:
  • NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm:

(-[WKDownloadProgress performCancel]):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::cancelDownload):
(WebKit::NetworkProcess::findPendingDownloadLocation):
(WebKit::NetworkProcess::pendingDownloadCanceled): Deleted.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::createData):
(WebKit::DownloadProxy::cancel):
(WebKit::DownloadProxy::didCancel): Deleted.

  • UIProcess/Downloads/DownloadProxy.h:
  • UIProcess/Downloads/DownloadProxy.messages.in:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

(-[WaitUntilDownloadCanceledDelegate _download:didFailWithError:]):
(-[DownloadMonitorTestDelegate _download:didFailWithError:]):
(-[DownloadMonitorTestDelegate waitForDidFail]):
(-[DownloadMonitorTestDelegate stopWaitingForDidFail]):
(TestWebKitAPI::monitorDelegate):
(TestWebKitAPI::webViewWithDownloadMonitorSpeedMultiplier):
(TestWebKitAPI::downloadAtRate):
(TestWebKitAPI::TEST):
(-[WaitUntilDownloadCanceledDelegate _downloadDidCancel:]): Deleted.
(-[DownloadMonitorTestDelegate _downloadDidCancel:]): Deleted.

9:21 AM Changeset in webkit [268260] by Antti Koivisto
  • 11 edits in trunk/Source/WebCore

[LFC][Integration] Add a way to get runs from line iterator
https://bugs.webkit.org/show_bug.cgi?id=217518

Reviewed by Zalan Bujtas.

And use it in startPositionForLine/endPositionForLine functions in RenderedPosition.

  • editing/RenderedPosition.h:

(WebCore::RenderedPosition::line const):

  • editing/VisibleUnits.cpp:

(WebCore::startPositionForLine):
(WebCore::endPositionForLine):

  • layout/integration/LayoutIntegrationLine.h:

(WebCore::LayoutIntegration::Line::Line):
(WebCore::LayoutIntegration::Line::firstRunIndex const):
(WebCore::LayoutIntegration::Line::runCount const):

Lines now track the first run and the run count.

  • layout/integration/LayoutIntegrationLineIterator.cpp:

(WebCore::LayoutIntegration::LineIterator::firstRun const):
(WebCore::LayoutIntegration::LineIterator::lastRun const):
(WebCore::LayoutIntegration::LineIterator::logicalStartRunWithNode const):
(WebCore::LayoutIntegration::LineIterator::logicalEndRunWithNode const):

  • layout/integration/LayoutIntegrationLineIterator.h:
  • layout/integration/LayoutIntegrationLineIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LineIteratorLegacyPath::firstRun const):
(WebCore::LayoutIntegration::LineIteratorLegacyPath::lastRun const):
(WebCore::LayoutIntegration::LineIteratorLegacyPath::logicalStartRunWithNode const):
(WebCore::LayoutIntegration::LineIteratorLegacyPath::logicalEndRunWithNode const):

  • layout/integration/LayoutIntegrationLineIteratorModernPath.h:

(WebCore::LayoutIntegration::LineIteratorModernPath::firstRun const):
(WebCore::LayoutIntegration::LineIteratorModernPath::lastRun const):
(WebCore::LayoutIntegration::LineIteratorModernPath::logicalStartRunWithNode const):
(WebCore::LayoutIntegration::LineIteratorModernPath::logicalEndRunWithNode const):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::constructContent):

  • layout/integration/LayoutIntegrationPagination.cpp:

(WebCore::LayoutIntegration::makeAdjustedContent):

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::RunIteratorModernPath::RunIteratorModernPath):

8:52 AM Changeset in webkit [268259] by Chris Dumez
  • 8 edits in trunk/Source/WebCore

Add proper implementation for WorkletGlobalScope::isContextThread()
https://bugs.webkit.org/show_bug.cgi?id=217486

Reviewed by Sam Weinig.

Add proper implementation for WorkletGlobalScope::isContextThread() to enable more threading
checks in AudioWorklet code.

  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::AudioWorkletGlobalScope):
(WebCore::AudioWorkletGlobalScope::thread const):

  • Modules/webaudio/AudioWorkletGlobalScope.h:

(WebCore::AudioWorkletGlobalScope::thread): Deleted.

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::createdMessagePort):
(WebCore::ScriptExecutionContext::destroyedMessagePort):

  • workers/WorkerGlobalScope.h:
  • workers/WorkerOrWorkletGlobalScope.h:
  • worklets/WorkletGlobalScope.cpp:

(WebCore::WorkletGlobalScope::WorkletGlobalScope):
(WebCore::WorkletGlobalScope::isContextThread const):

  • worklets/WorkletGlobalScope.h:
8:33 AM Changeset in webkit [268258] by Lauro Moura
  • 2 edits in trunk/Tools

[GLIB] Fix tests compilation warnings with deprecated API
https://bugs.webkit.org/show_bug.cgi?id=217504

Reviewed by Carlos Garcia Campos.

webkit_web_context_set_network_proxy_settings() is deprecated in favor of
webkit_website_data_manager_set_network_proxy_settings().

  • TestWebKitAPI/Tests/WebKitGLib/TestAuthentication.cpp:

(ProxyAuthenticationTest::ProxyAuthenticationTest):

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

Switch Allow/Don't Allow buttons in getUserMedia prompt
https://bugs.webkit.org/show_bug.cgi?id=217513
<rdar://problem/70134429>

Reviewed by Eric Carlson.

Return NotAllowedError instead of SecurityError in case user denies with default prompt.
Make sure to have the Allow button in iOS prompt on the right instead of the left.
Tested in MiniBrowser and MobileMiniBrowser.

  • UIProcess/Cocoa/UserMediaPermissionRequestProxy.mm:

(WebKit::UserMediaPermissionRequestProxy::doDefaultAction):

7:06 AM Changeset in webkit [268256] by youenn@apple.com
  • 6 edits in trunk/Source/WebKit

Implement TCC checks in UserMediaPermissionRequestManagerProxy
https://bugs.webkit.org/show_bug.cgi?id=217508
<rdar://problem/70129993>

Reviewed by Eric Carlson.

TCC checks must be done before asking the page client to decide whether to grant or not camera and/or microphone.
This ensures that, should the default action be done (default prompt), for instance in case the WKWebView application does not provide any delegate,
the TCC checks will happen before the default prompt.

For that reason, we move the TCC checks from UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest to UserMediaPermissionRequestManagerProxy::requestSystemValidation.

Manually tested in Safari and MiniBrowser.

  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
(WebKit::requestUserMediaAuthorizationForFrame): Deleted.
(WebKit::requestAVCaptureAccessForMediaType): Deleted.

  • UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:

(WebKit::requestAVCaptureAccessForMediaType):
(WebKit::UserMediaPermissionRequestManagerProxy::requestSystemValidation):

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::decidePolicyForUserMediaPermissionRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::requestSystemValidation):

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::preferences const):

4:49 AM Changeset in webkit [268255] by svillar@igalia.com
  • 7 edits in trunk/Source/WebCore

[WebXR] Make enumerateImmersiveXRDevices() asynchronnous
https://bugs.webkit.org/show_bug.cgi?id=217172

Reviewed by Youenn Fablet.

The call to enumerateImmersiveXRDevices() can block the main thread and thus it should be asynchronous. The specs
clearly state that it should be run "in parallel". The list of available devices will be provided to the callback
(a CompletionHandler). Note that the OpenXR code is still running on the main thread but it will be migrated in
a follow up patch.

This change forced us to modify the whole chain of calls that end in enumerateImmersiveXRDevices() in the WebXR code.
Good news is that it allowed us to remove some calls to postTask() or queueTaskKeepingObjectAlive() because code is
already running "in parallel" after moving to an asynchronnous paradigm so they were redundant.

No new tests required as there is no change in behaviour.

  • Modules/webxr/WebXRSystem.cpp:

(WebCore::WebXRSystem::ensureImmersiveXRDeviceIsSelected): Added a callback parameter. Moved most of the code
to the callback provided to enumerateImmersiveXRDevices().
(WebCore::WebXRSystem::obtainCurrentDevice): Returns void and accepts a new callback paramater. Had to migrate it
because it can eventually call ensureImmersiveXRDeviceIsSelected().
(WebCore::WebXRSystem::isSessionSupported): Removed postTask(), ensureImmersiveXRDeviceIsSelected()
is run in parallel.
(WebCore::WebXRSystem::requestSession): Removed queueTaskKeepingObjectAlive() as obtainCurrentDevice()
is run in parallel.

  • Modules/webxr/WebXRSystem.h:
  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createContextWebGL): Pass a no-op callback to ensureImmersiveXRDeviceIsSelected().

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::makeXRCompatible): Moved most of the code into the callback
of ensureImmersiveXRDeviceIsSelected().

  • platform/xr/PlatformXR.h:

(PlatformXR::Instance::immersiveXRDevices const): Deleted.

  • platform/xr/openxr/PlatformXROpenXR.cpp:

(PlatformXR::Instance::enumerateImmersiveXRDevices): Receives a new callback parameter, returns the list of
immersive devices to the callback as a const parameter.

4:42 AM Changeset in webkit [268254] by Andres Gonzalez
  • 6 edits in trunk

Fix for accessibility tests keyevents-posted-for-increment-actions.html and keyevents-for-increment-actions-with-node-removal.html in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=217501

Reviewed by Chris Fleizach.

Source/WebCore:

Implementation of AXIsolatedObject::increment/decrement.

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::increment):
(WebCore::AXIsolatedObject::decrement):

  • accessibility/isolatedtree/AXIsolatedObject.h:

LayoutTests:

  • accessibility/keyevents-for-increment-actions-with-node-removal.html:

Removed extra <html> tag and minor spacing and reordering to make it
more consistent with other accessibility tests.

  • accessibility/keyevents-posted-for-increment-actions.html:

Corrected number of expected key events from 4 to 8.
Same minor spacing and ordering changes.

4:26 AM Changeset in webkit [268253] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][Integration] Remove redundant AvoidanceReason values
https://bugs.webkit.org/show_bug.cgi?id=217510

Reviewed by Antti Koivisto.

Remove both FlowTextHasSoftHyphen (should have removed when it got enabled) and the redundant FlowHasLineBreak.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForStyle):

  • layout/integration/LayoutIntegrationCoverage.h:
4:24 AM Changeset in webkit [268252] by Antti Koivisto
  • 9 edits in trunk/Source/WebCore

[LFC][Integration] Rename iterator path variant structs for consistency
https://bugs.webkit.org/show_bug.cgi?id=217511

Reviewed by Zalan Bujtas.

ModernPath -> RunIteratorModernPath
LegacyPath -> RunIteratorLegacyPath
ModernLinePath -> LineIteratorModernPath
LegacyLinePath -> LineIteratorLegacyPath

  • layout/integration/LayoutIntegrationLineIterator.h:

(WebCore::LayoutIntegration::LineIterator::LineIterator):

  • layout/integration/LayoutIntegrationLineIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LineIteratorLegacyPath::LineIteratorLegacyPath):
(WebCore::LayoutIntegration::LineIteratorLegacyPath::operator== const):
(WebCore::LayoutIntegration::LegacyLinePath::LegacyLinePath): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::top const): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::bottom const): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::selectionTop const): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::selectionTopForHitTesting const): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::selectionBottom const): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::traverseNext): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::traversePrevious): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::operator== const): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::atEnd const): Deleted.
(WebCore::LayoutIntegration::LegacyLinePath::setAtEnd): Deleted.

  • layout/integration/LayoutIntegrationLineIteratorModernPath.h:

(WebCore::LayoutIntegration::LineIteratorModernPath::LineIteratorModernPath):
(WebCore::LayoutIntegration::LineIteratorModernPath::operator== const):
(WebCore::LayoutIntegration::ModernLinePath::ModernLinePath): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::top const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::bottom const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::selectionTop const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::selectionTopForHitTesting const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::selectionBottom const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::traverseNext): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::traversePrevious): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::operator== const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::atEnd const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::setAtEnd): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::lines const): Deleted.
(WebCore::LayoutIntegration::ModernLinePath::line const): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::textRunsFor const):
(WebCore::LayoutIntegration::LineLayout::runFor const):

  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::RunIterator::line const):
(WebCore::LayoutIntegration::firstTextRunFor):
(WebCore::LayoutIntegration::firstTextRunInTextOrderFor):
(WebCore::LayoutIntegration::runFor):
(WebCore::LayoutIntegration::PathRun::modernPath const):
(WebCore::LayoutIntegration::PathRun::legacyPath const):
(WebCore::LayoutIntegration::PathRun::modernPath): Deleted.
(WebCore::LayoutIntegration::PathRun::legacyPath): Deleted.

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::RunIterator::RunIterator):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::RunIteratorLegacyPath::RunIteratorLegacyPath):
(WebCore::LayoutIntegration::RunIteratorLegacyPath::operator== const):
(WebCore::LayoutIntegration::RunIteratorLegacyPath::nextInlineTextBoxInTextOrder const):
(WebCore::LayoutIntegration::LegacyPath::LegacyPath): Deleted.
(WebCore::LayoutIntegration::LegacyPath::isText const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::rect const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::isHorizontal const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::dirOverride const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::isLineBreak const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::baseline const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::minimumCaretOffset const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::maximumCaretOffset const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::bidiLevel const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::useLineBreakBoxRenderTreeDumpQuirk const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::hasHyphen const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::text const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::localStartOffset const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::localEndOffset const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::length const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::offsetForPosition const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::isLastTextRunOnLine const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::isLastTextRun const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::renderer const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::traverseNextTextRun): Deleted.
(WebCore::LayoutIntegration::LegacyPath::traverseNextTextRunInTextOrder): Deleted.
(WebCore::LayoutIntegration::LegacyPath::traverseNextOnLine): Deleted.
(WebCore::LayoutIntegration::LegacyPath::traversePreviousOnLine): Deleted.
(WebCore::LayoutIntegration::LegacyPath::operator== const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::atEnd const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::setAtEnd): Deleted.
(WebCore::LayoutIntegration::LegacyPath::legacyInlineBox const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::rootInlineBox const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::inlineTextBox const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::nextInlineTextBoxInTextOrder const): Deleted.

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::RunIteratorModernPath::RunIteratorModernPath):
(WebCore::LayoutIntegration::RunIteratorModernPath::operator== const):
(WebCore::LayoutIntegration::ModernPath::ModernPath): Deleted.
(WebCore::LayoutIntegration::ModernPath::isText const): Deleted.
(WebCore::LayoutIntegration::ModernPath::rect const): Deleted.
(WebCore::LayoutIntegration::ModernPath::baseline const): Deleted.
(WebCore::LayoutIntegration::ModernPath::isHorizontal const): Deleted.
(WebCore::LayoutIntegration::ModernPath::dirOverride const): Deleted.
(WebCore::LayoutIntegration::ModernPath::isLineBreak const): Deleted.
(WebCore::LayoutIntegration::ModernPath::minimumCaretOffset const): Deleted.
(WebCore::LayoutIntegration::ModernPath::maximumCaretOffset const): Deleted.
(WebCore::LayoutIntegration::ModernPath::bidiLevel const): Deleted.
(WebCore::LayoutIntegration::ModernPath::useLineBreakBoxRenderTreeDumpQuirk const): Deleted.
(WebCore::LayoutIntegration::ModernPath::hasHyphen const): Deleted.
(WebCore::LayoutIntegration::ModernPath::text const): Deleted.
(WebCore::LayoutIntegration::ModernPath::localStartOffset const): Deleted.
(WebCore::LayoutIntegration::ModernPath::localEndOffset const): Deleted.
(WebCore::LayoutIntegration::ModernPath::length const): Deleted.
(WebCore::LayoutIntegration::ModernPath::offsetForPosition const): Deleted.
(WebCore::LayoutIntegration::ModernPath::isLastTextRunOnLine const): Deleted.
(WebCore::LayoutIntegration::ModernPath::isLastTextRun const): Deleted.
(WebCore::LayoutIntegration::ModernPath::renderer const): Deleted.
(WebCore::LayoutIntegration::ModernPath::traverseNextTextRun): Deleted.
(WebCore::LayoutIntegration::ModernPath::traverseNextTextRunInTextOrder): Deleted.
(WebCore::LayoutIntegration::ModernPath::traverseNextOnLine): Deleted.
(WebCore::LayoutIntegration::ModernPath::traversePreviousOnLine): Deleted.
(WebCore::LayoutIntegration::ModernPath::operator== const): Deleted.
(WebCore::LayoutIntegration::ModernPath::atEnd const): Deleted.
(WebCore::LayoutIntegration::ModernPath::setAtEnd): Deleted.
(WebCore::LayoutIntegration::ModernPath::legacyInlineBox const): Deleted.
(WebCore::LayoutIntegration::ModernPath::runs const): Deleted.
(WebCore::LayoutIntegration::ModernPath::run const): Deleted.
(WebCore::LayoutIntegration::ModernPath::line const): Deleted.

3:14 AM Changeset in webkit [268251] by Paulo Matos
  • 2 edits in trunk/Tools

Add armv8l arch to generic arm umbrella architecture variable
https://bugs.webkit.org/show_bug.cgi?id=217470

Reviewed by Adrian Perez de Castro.

The armv8l architecture specifies a system running an arm64 kernel
but running in 32bit user land. Therefore for JSC purposes armv8l and
armv7l are arm (32bit) architectures.

  • Scripts/webkitdirs.pm:

(determineNativeArchitecture):

1:28 AM Changeset in webkit [268250] by commit-queue@webkit.org
  • 8 edits
    168 adds in trunk/LayoutTests

Import scroll-snap WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=217467

Patch by Martin Robinson <Martin Robinson> on 2020-10-09
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • resources/import-expectations.json: Add scroll snap import directive.
  • resources/resource-files.json:
  • web-platform-tests/css/css-scroll-snap/META.yml: Added.
  • web-platform-tests/css/css-scroll-snap/inheritance-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/inheritance.html: Added.
  • web-platform-tests/css/css-scroll-snap/input/keyboard-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/input/keyboard.html: Added.
  • web-platform-tests/css/css-scroll-snap/input/w3c-import.log: Added.
  • web-platform-tests/css/css-scroll-snap/nested-scrollIntoView-snaps-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/nested-scrollIntoView-snaps.html: Added.
  • web-platform-tests/css/css-scroll-snap/no-snap-position-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/no-snap-position.html: Added.
  • web-platform-tests/css/css-scroll-snap/overflowing-snap-areas-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/overflowing-snap-areas.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-computed-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-computed.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-shorthand-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-shorthand.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-valid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-computed-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-computed.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-invalid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-invalid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-shorthand-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-shorthand.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-valid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-valid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-computed-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-computed.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-shorthand-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-shorthand.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-valid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-computed-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-computed.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-invalid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-invalid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-shorthand-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-shorthand.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-valid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-valid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-align-computed-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-align-computed.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-align-invalid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-align-invalid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-align-valid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-align-valid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-computed-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-computed.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-invalid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-invalid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-valid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-stop-valid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-computed-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-computed.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-invalid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-invalid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-valid-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/scroll-snap-type-valid.html: Added.
  • web-platform-tests/css/css-scroll-snap/parsing/w3c-import.log: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-margin-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-margin.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-padding-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-padding.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-stop-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-stop.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-change-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-change.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-on-root-element-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-on-root-element.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-snap-type.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-align-001-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-align-001.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-align-002-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-align-002.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-align-003-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-align-003.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-001-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-001.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-002-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-002.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-003-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-003.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-004-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-margin-004.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-padding-001-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-padding-001.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-padding-002-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-padding-002.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-padding-003-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-padding-003.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-snap-001-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-snap-001.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-snap-002-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-snap-002.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-snap-003-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/scroll-target-snap-003.html: Added.
  • web-platform-tests/css/css-scroll-snap/scrollTo-scrollBy-snaps-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/scrollTo-scrollBy-snaps.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/direction-rtl-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/direction-rtl.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/w3c-import.log: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl-expected.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-snap-area-while-snapped-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-snap-area-while-snapped.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/move-current-target-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/move-current-target.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/remove-current-target-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/remove-current-target.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-after-relayout/w3c-import.log: Added.
  • web-platform-tests/css/css-scroll-snap/snap-area-capturing-add-scroll-container-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-area-capturing-add-scroll-container.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-area-capturing-remove-scroll-container-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-inline-block-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-inline-block.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-transformed-target-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-transformed-target.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-both-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-both.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-both-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-both.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-x-axis-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-x-axis.html: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-y-axis-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-y-axis.html: Added.
  • web-platform-tests/css/css-scroll-snap/support/common.css: Added.

(body):
(#scroller):
(.snap):
(#space):
(.left):
(.top):
(.right):
(.bottom):

  • web-platform-tests/css/css-scroll-snap/support/common.js: Added.

(async keyPress):
(waitForAnimationEnd.):
(waitForAnimationEnd):

  • web-platform-tests/css/css-scroll-snap/support/scroll-target-align-001-iframe.html: Added.
  • web-platform-tests/css/css-scroll-snap/support/scroll-target-margin-001-iframe.html: Added.
  • web-platform-tests/css/css-scroll-snap/support/scroll-target-padding-001-iframe.html: Added.
  • web-platform-tests/css/css-scroll-snap/support/scroll-target-snap-001-iframe.html: Added.
  • web-platform-tests/css/css-scroll-snap/support/w3c-import.log: Added.
  • web-platform-tests/css/css-scroll-snap/unreachable-snap-positions-expected.txt: Added.
  • web-platform-tests/css/css-scroll-snap/unreachable-snap-positions.html: Added.
  • web-platform-tests/css/css-scroll-snap/w3c-import.log: Added.

LayoutTests:

  • TestExpectations: Add failing reference tests.
  • platform/gtk/TestExpectations: Skip tests on platform that does not support scroll-snap.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-snap-type-on-root-element-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-scroll-snap/scrollTo-scrollBy-snaps-expected.txt: Added.
  • platform/win/TestExpectations: Ditto.
  • platform/wpe/TestExpectations: Ditto.
1:19 AM Changeset in webkit [268249] by Noam Rosenthal
  • 7 edits
    9 adds in trunk

CSS image-orientation: none should be ignored for cross-origin images
https://bugs.webkit.org/show_bug.cgi?id=217294

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-images/image-orientation/image-orientation-none-cross-origin-expected.html: Added.
  • web-platform-tests/css/css-images/image-orientation/image-orientation-none-cross-origin.html: Added.

Imported a new W3C test for remote image with image-orientation.

Source/WebCore:

Per the new spec in https://github.com/w3c/csswg-drafts/issues/5165,
the orientation should be baked into the image if the image is cross origin, to avoid
exposing remote image orientation to embedders.

The meaning of it in practice is that image-orientation: none would have no effect on remote,
image as it's the only web-facing feature exposing image-orientation.

This change disables image-orientation override for remote images.

Tests: http/wpt/css/css-images/image-orientation/image-orientation-none-cross-origin-canvas.html
imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-none-cross-origin.html

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::allowsOrientationOverride const):

  • html/HTMLImageElement.h:

Add a check whether an element is allowed to override/expose orientation.

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::drawImage):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::imageOrientation const):
Only apply orientation for eligible images.

LayoutTests:

  • http/wpt/css/css-images/image-orientation/image-orientation-none-cross-origin-canvas.html: Added.
  • http/wpt/css/css-images/image-orientation/image-orientation-none-cross-origin-canvas-expected.html: Added.
Note: See TracTimeline for information about the timeline view.