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

Timeline



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.

Oct 8, 2020:

10:16 PM Changeset in webkit [268248] by jiewen_tan@apple.com
  • 2 edits
    7 adds in trunk/Source/WebKit

[WebAuthn] Implement a dummy WebAuthenticationAgent
https://bugs.webkit.org/show_bug.cgi?id=217401
<rdar://problem/70012011>

Reviewed by Darin Adler.

Part 1.

This patch introduces a new dummy WebAuthenticationAgent where in the future it will take over all WebAuthn operations
from the UI Process such that we can isolate high privileged entitlements to this standalone daemon and therefore are able
offer WebAuthn to third party WKWebView clients. One of the future feautres will require this new process to listen to
LaunchEvents, which only daemons can do. That's why it is implemented as a user agent instead of a XPC service.

This is the first part of establishing such a dummy daemon. What it does is to set up a new build target for the daemon and
hook it up with WebKit's build system. One can manually load the launchd plist and load the daemon to verify this change.

Commands are:
launchctl load /to/your/path/com.apple.webkit.WebAuthenticationAgent.plist
launchctl start com.apple.webkit.WebAuthenticationAgent.Development

Covered by manual tests.

  • Configurations/WebAuthenticationAgent.xcconfig: Added.

Somehow the executable has a suffix .Development for debug/release builds. Will fix that in the later part.

  • Daemons/WebAuthenticationAgent/Info.plist: Added.
  • Daemons/WebAuthenticationAgent/WebAuthenticationAgent.entitlements: Added.
  • Daemons/WebAuthenticationAgent/com.apple.webkit.WebAuthenticationAgent.plist: Added.

The executable location is hardcoded for now. It will be fixed in Part 2 to dynamically point to the right binary.

  • Daemons/WebAuthenticationAgent/main.mm: Added.

(main):

  • WebKit.xcodeproj/project.pbxproj:

Not sure why libWTF.a is needed. Will fix that in the later part.

10:08 PM Changeset in webkit [268247] by ysuzuki@apple.com
  • 27 edits in trunk/Source

Unreviewed, reland r268170
https://bugs.webkit.org/show_bug.cgi?id=217460

Source/JavaScriptCore:

Fixed missing wrong OperationPtrTag use in Repatch.cpp.

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::getLinkerAddress):

  • assembler/AssemblerBuffer.h:

(JSC::ARM64EHash::update):
(JSC::ARM64EHash::finalHash const):

  • assembler/JITOperationList.cpp:

(JSC::addPointers):

  • assembler/MacroAssemblerARM64.cpp:

(JSC::MacroAssembler::probe):

  • assembler/MacroAssemblerCodeRef.h:

(JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
(JSC::MacroAssemblerCodePtr::createFromExecutableAddress):

  • assembler/testmasm.cpp:

(JSC::testProbeModifiesProgramCounter):

  • b3/air/testair.cpp:
  • ftl/FTLOutput.h:

(JSC::FTL::Output::callWithoutSideEffects):
(JSC::FTL::Output::operation):

  • ftl/FTLSlowPathCall.cpp:

(JSC::FTL::SlowPathCallContext::makeCall):

  • jit/JITCode.cpp:

(JSC::JITCodeWithCodeRef::executableAddressAtOffset):

  • jit/JITExceptions.cpp:

(JSC::genericUnwind):

  • jit/JITOperations.cpp:
  • jit/Repatch.cpp:

(JSC::readPutICCallTarget):
(JSC::ftlThunkAwareRepatchCall):
(JSC::tryCacheGetBy):
(JSC::tryCachePutByID):

  • llint/LLIntData.cpp:

(JSC::LLInt::initialize):

  • llint/LLIntPCRanges.h:

(JSC::LLInt::isLLIntPC):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::setUpCall):

  • llint/LLIntThunks.cpp:

(JSC::LLInt::generateThunkWithJumpTo):

  • runtime/JSCPtrTag.h:
  • runtime/MachineContext.h:

(JSC::MachineContext::instructionPointer):

  • runtime/NativeExecutable.cpp:

(JSC::NativeExecutable::finishCreation):

  • runtime/PutPropertySlot.h:

(JSC::PutPropertySlot::setCustomValue):
(JSC::PutPropertySlot::setCustomAccessor):
(JSC::PutPropertySlot::customSetter const):

  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::emitCCall):

  • wasm/WasmSlowPaths.cpp:

Source/WTF:

  • wtf/PlatformRegisters.cpp:

(WTF::threadStateLRInternal):
(WTF::threadStatePCInternal):

  • wtf/PtrTag.h:

(WTF::tagCodePtr):
(WTF::untagCodePtr):
(WTF::assertIsCFunctionPtr):
(WTF::assertIsNullOrCFunctionPtr):
(WTF::assertIsNotTagged):
(WTF::assertIsTagged):
(WTF::assertIsNullOrTagged):
(WTF::isTaggedWith):
(WTF::assertIsTaggedWith):
(WTF::assertIsNullOrTaggedWith):
(WTF::tagCFunctionPtr):
(WTF::tagCFunction):
(WTF::untagCFunctionPtr):
(WTF::tagInt):

9:02 PM Changeset in webkit [268246] by Chris Fleizach
  • 3 edits in trunk/Source/WebKit

AX: Website Warning page is inaccessible
https://bugs.webkit.org/show_bug.cgi?id=217489

Reviewed by Zalan Bujtas.

If we have a safe browsing window, we need to use that instead of the content view.

  • UIProcess/Cocoa/WKSafeBrowsingWarning.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::accessibilityAttributeValue):

8:13 PM Changeset in webkit [268245] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

Nil-check results of -[AVPlayerItemVideoOutput initWithPixelBufferAttributes:]
https://bugs.webkit.org/show_bug.cgi?id=217498
<rdar://problem59666003>

Reviewed by Jer Noble.

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoOutput): Log an error and
return immediately if -[AVPlayerItemVideoOutput initWithPixelBufferAttributes:]
returns nil.

8:05 PM Changeset in webkit [268244] by mmaxfield@apple.com
  • 4 edits
    2 adds in trunk

Stop clamping text-underline-offset to 0
https://bugs.webkit.org/show_bug.cgi?id=217455

Reviewed by Simon Fraser.

Source/WebCore:

As per the CSSWG resolution at
https://github.com/w3c/csswg-drafts/issues/4059

Test: fast/text/negative-underline-position.html

  • style/InlineTextBoxStyle.cpp:

(WebCore::computeUnderlineOffset):

LayoutTests:

  • fast/text/negative-underline-position-expected-mismatch.html: Added.
  • fast/text/negative-underline-position.html: Added.
  • fast/css3-text/css3-text-decoration/text-underline-negative-expected.html: Update.
7:31 PM Changeset in webkit [268243] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r267763): SHOULD NEVER BE REACHED in WebKit::contentRuleListsFromIdentifier
https://bugs.webkit.org/show_bug.cgi?id=217499

There was an invalid assertion. NBD.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::contentRuleListsFromIdentifier):

7:26 PM Changeset in webkit [268242] by Matt Lewis
  • 2 edits in trunk/Tools

Move EWS to new SDKs: tvOS 14, and watchOS 7.
https://bugs.webkit.org/show_bug.cgi?id=217145

Reviewed by Aakash Jain.

  • BuildSlaveSupport/ews-build/config.json:
6:18 PM Changeset in webkit [268241] by commit-queue@webkit.org
  • 27 edits in trunk/Source

Unreviewed, reverting r268170 and r268190.
https://bugs.webkit.org/show_bug.cgi?id=217502

Crash on ARM64E exclusively

Reverted changesets:

"[JSC] Restrict more ptr-tagging and avoid using
OperationPtrTag for JIT code"
https://bugs.webkit.org/show_bug.cgi?id=217460
https://trac.webkit.org/changeset/268170

"Unreviewed, build fix for ARM64E"
https://bugs.webkit.org/show_bug.cgi?id=217460
https://trac.webkit.org/changeset/268190

6:17 PM Changeset in webkit [268240] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

[MotionMark] Add a fast path for GraphicsContext::strokePath in the case where the path is a line
https://bugs.webkit.org/show_bug.cgi?id=217496

Reviewed by Tim Horton.

When running the Canvas Lines subtest with GPU process enabled, we currently suffer from increased memory usage
in the GPU process. Much of this increased memory usage is due to the allocation of approximately 35 million
CGPathRefs over the course of the subtest, which ends up dirtying a large number of pages; this also adds a
nontrivial amount of overhead due to creating and destroying these platform CGPathRefs.

We can mitigate most of this overhead in the GPU process by avoiding platform CGPathRef allocation entirely
when stroking simple line segments in GraphicsContext::strokePath. Rather than reifying Path::m_path and
then using CGContextDrawPathDirect, we can simply use CGContextStrokeLineSegments with a fixed array of
2 CGPoints.

No change in behavior.

  • platform/graphics/Path.h:

(WebCore::Path::inlineData const):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::strokePath):

5:48 PM Changeset in webkit [268239] by rniwa@webkit.org
  • 16 edits
    3 adds in trunk

Make it possible to send an arbitrary IPC message from JavaScript
https://bugs.webkit.org/show_bug.cgi?id=217423
<rdar://problem/69969351>

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Added a helper function to get uint64_t out of BigInt.

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::toUint64Heap): Added.

  • runtime/JSBigInt.h:

(JSC::JSBigInt::toUint64): Added.

Source/WebKit:

This patch introduces the JavaScript API (window.IPC) to send IPC out of WebContent process.
The feature is compiled in under ASAN and Debug builds and can be enabled at runtime.

window.IPC has two methods: sendMessage and sendSyncMessage which sends an async and sync IPC respectively.
It takes the destination process name (UI, GPU, or Networking), the destination ID (e.g. WebPageProxy ID),
message ID, timeout for sendSyncMessage, and optionally IPC message arguments. The message arguments can be
passed in as a TypedArray or ArrayBuffer, or a JavaScript array that recursively describes encoded objects.

Each object can be either a TypedArray or ArrayBuffer, which will be treated as encoded message, an array
which will be encoded as a Vector with each item within the array encoded recursively, or a dictionary which
describes a specific type.

When a specific type is described via a dictionary, "value" is encoed based on "type" as follows:

  • When "type" is "String", "value" is encoded as a WTF::String, treating null or undefined as a null string.
  • When "type" is "bool", "int8_t", "int16_t", "int32_t", "int64_t", "uint8_t", "uint16_t", "uint32_t", or "uint64_t", "value" (which can be BigInt or a number) is encoded as the respective C++ type.
  • When "type" is "RGBA", "value" is used as PackedColor::RGBA to construct WebCore::Color to be encoded.
  • When "type" is "IntRect" or "FloatRect", "x", "y", "width", and "height" are treated as respective values of IntRect or FloatRect C++ objects, and the constructed *Rect is encoded.
  • When "type" is "FrameInfoData", the context object's WebFrame's FrameInfoData is encoded.

The list of IPC messages are exposed on window.IPC.messages, and VisitedLinkStore ID, WebPageProxy ID,
and frame identifiers are also exposed as static variables on window.IPC.

  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld): Inject the API if enabled.

  • WebProcess/WebPage/IPCTestingAPI.cpp: Added.

(WebKit::IPCTestingAPI::JSIPC::create): Added.
(WebKit::IPCTestingAPI::JSIPC::webFrame): Added.
(WebKit::IPCTestingAPI::JSIPC::JSIPC): Added.
(WebKit::IPCTestingAPI::JSIPC::wrapperClass): Added.
(WebKit::IPCTestingAPI::JSIPC::unwrap): Added.
(WebKit::IPCTestingAPI::JSIPC::toWrapped): Added.
(WebKit::IPCTestingAPI::JSIPC::initialize): Added.
(WebKit::IPCTestingAPI::JSIPC::finalize): Added.
(WebKit::IPCTestingAPI::JSIPC::staticFunctions): Added.
(WebKit::IPCTestingAPI::JSIPC::staticValues): Added.
(WebKit::IPCTestingAPI::convertToUint64): Added.
(WebKit::IPCTestingAPI::processTargetFromArgument): Added.
(WebKit::IPCTestingAPI::destinationIDFromArgument): Added.
(WebKit::IPCTestingAPI::messageIDFromArgument): Added.
(WebKit::IPCTestingAPI::encodeTypedArray): Added.
(WebKit::IPCTestingAPI::createTypeError): Added.
(WebKit::IPCTestingAPI::encodeRectType): Added.
(WebKit::IPCTestingAPI::encodeIntegralType): Added.
(WebKit::IPCTestingAPI::VectorEncodeHelper::encode const): Added.
(WebKit::IPCTestingAPI::encodeArgument): Added.
(WebKit::IPCTestingAPI::JSIPC::sendMessage): Added.
(WebKit::IPCTestingAPI::JSIPC::sendSyncMessage): Added.
(WebKit::IPCTestingAPI::JSIPC::visitedLinkStoreID): Added.
(WebKit::IPCTestingAPI::JSIPC::webPageProxyID): Added.
(WebKit::IPCTestingAPI::JSIPC::frameIdentifier): Added.
(WebKit::IPCTestingAPI::JSIPC::retrieveID): Added.
(WebKit::IPCTestingAPI::JSIPC::messages): Added.
(WebKit::IPCTestingAPI::inject):

  • WebProcess/WebPage/IPCTestingAPI.h: Added.
  • WebProcess/WebPage/WebFrame.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_limitsNavigationsToAppBoundDomains):
(WebKit::WebPage::updatePreferences):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::ipcTestingAPIEnabled const):
(WebKit::WebPage::webPageProxyID const):
(WebKit::WebPage::visitedLinkTableID const):

Source/WTF:

Added a compile time flag (ENABLE_IPC_TESTING_API) and a runtime flag (IPCTestingAPIEnabled)
for the JavaScript API to test IPC.

  • Scripts/GeneratePreferences.rb:

(Preference::nameLower): Keep IPC uppercase.

  • Scripts/Preferences/WebPreferencesInternal.yaml: Added IPCTestingAPIEnabled.
  • wtf/PlatformEnable.h: Added ENABLE_IPC_TESTING_API.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm: Added.

(-[IPCTestingAPIDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TEST):

5:45 PM Changeset in webkit [268238] by weinig@apple.com
  • 21 edits in trunk

Refactor TestOptions code in WebKitTestRunner to make it easier to rationalize and extend
https://bugs.webkit.org/show_bug.cgi?id=217390

Reviewed by Darin Adler.

Refactors TestOptions code in WebKitTestRunner to make it clear how options coming in at
different levels are treated and what precedence each has. The order is (from least to most):

  • Global features passed to WebKitTestRunner via the command line (e.g. --show-touches)
  • Hardcoded features based on the path of the test being run (hopefully we can remove all soon)
  • Hardcoded platform specific defaults (currently only used by macOS for useThreadedScrolling).
  • Features from the test headers within the test itself.
  • Finally, a second chance for more platform specific defaults (currenly only used the Cocoa ports for setting enableProcessSwapOnNavigation and enableProcessSwapOnWindowOpen based on NSUserDefaults.)

To make this change work, and pave the way for future autogeneration of some of these test options,
the TestOptions struct (now class) was overhauled. Instead of storing the state itself, TestOptions
is now an immutable owner of a TestFeatures object. TestFeatures is a simple struct that contains maps
of option keys to values and can be merged with other TestFeatures objects. TestOptions takes a
TestFeatures at construction, and exposes getters for all keys, as well as defaults for when they are
not in the maps. In future changes, I would like to remove many of these (the ones that correspond
with WebKit preferences anyway) and have the keys and values automatically dealt with by WKPreferences.

  • WebKitTestRunner/Options.cpp:
  • WebKitTestRunner/Options.h:

Switch to std::unordered_map for consistency and ease of conversion.

  • WebKitTestRunner/PlatformWebView.h:

(WTR::PlatformWebView::viewSupportsOptions const):
Update to call new TestOptions functions.

  • WebKitTestRunner/StringFunctions.h:

(WTR::toWK):
(WTR::toWTFString):
Add conversions for std::string.

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize):
Replace some bools with a new global TestFeatures instance that forms the base of
all TestFeatures merges.

(WTR::TestController::generateContextConfiguration const):
(WTR::TestController::generatePageConfiguration):
(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::ensureViewSupportsOptionsForTest):
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::TestController::resetStateToConsistentValues):
Update to call new TestOptions functions.

(WTR::TestController::createTestURL):
Expose as a static member function on TestController for use in other files.

(WTR::TestController::testOptionsForTest const):
Rework to be a sequence of TestFeatures merges.

(WTR::TestController::updateWebViewSizeForTest):
(WTR::TestController::updateWindowScaleForTest):
Update to call new TestOptions functions.

(WTR::createTestURL): Deleted.
(WTR::parseBooleanTestHeaderValue): Deleted.
(WTR::parseStringTestHeaderValueAsRelativePath): Deleted.
(WTR::parseStringTestHeaderValueAsURL): Deleted.
(WTR::updateTestOptionsFromTestHeader): Deleted.
(WTR::TestController::platformAddTestOptions const): Deleted.
Moved TestOptions parsing to TestOptions.cpp

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::createTestSettingsDictionary):
Update to call new TestOptions functions.

  • WebKitTestRunner/TestOptions.h:

Reworks TestOptions to be an immutable owner of a TestFeatures struct, which is a set
of maps that map feature string keys, to values of type bool, double, string or string vector.

  • WebKitTestRunner/TestOptions.cpp:

(WTR::merge):
Merges two TestFeatures objects. If both contain the same key, the 'additional'
TestFeatures overrides the 'base' TestFeatures.

(WTR::dumpFeatures):
Helper to dump features to stderr, useful for debugging.

(WTR::keyType):
Helper for parser to know which value parser to use.

(WTR::parseBooleanTestHeaderValue):
(WTR::parseStringTestHeaderValueAsRelativePath):
(WTR::parseStringTestHeaderValueAsURL):
Value parsers moved from TestController.cpp

(WTR::parseTestHeader):
Header parser moved from TestController.cpp. Update to now return
a TestFeatures object and use keyType to pick value parser rather
than inlining the if statements.

(WTR::hardcodedFeaturesBasedOnPathForTest):
Moved from the TestOptions contructor and reworked to return a TestFeatures
object to be merged by the caller.

(WTR::featureDefaultsFromTestHeaderForTest):
Creates a TestFeatures for the test headers of the current test.

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::platformSpecificFeatureOverridesDefaultsForTest const):
Reworked to now return a TestFeatures object that will be merged, rather than updating
a TestOptions. Moves enableInAppBrowserPrivacy work to TestController::platformWillRunTest
where it is more appropriate.

(WTR::TestController::platformInitializeDataStore):
(WTR::TestController::platformCreateWebView):
(WTR::TestController::finishCreatingPlatformWebView):
(WTR::TestController::setApplicationBundleIdentifier):
(WTR::TestController::cocoaResetStateToConsistentValues):
(WTR::contentMode):
Update to call new TestOptions functions.

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetStateToConsistentValues):
(WTR::TestController::platformConfigureViewForTest):
Update to call new TestOptions functions.

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Moved GeneratedTouchesDebugWindow work to TestController::platformConfigureViewForTest
where it is more appropriate and removed shouldShowTouches setting as that is done
globally now.

  • WebKitTestRunner/mac/PlatformWebViewMac.mm:

(WTR::PlatformWebView::PlatformWebView):
Update to call new TestOptions functions.

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Remove shouldUseRemoteLayerTree and shouldShowWebView, as those are now done globally,
and re-implemented useThreadedScrolling to use boolFeatures.

  • WebKitTestRunner/win/TestControllerWin.cpp:

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Updated for new signature.

  • WebKitTestRunner/wpe/TestControllerWPE.cpp:

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Updated for new signature.

  • WebKitTestRunner/gtk/TestControllerGTK.cpp:

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Updated for new signature.

5:34 PM Changeset in webkit [268237] by Russell Epstein
  • 3 edits in branches/safari-610.2.11.0-branch/Source/WebCore

Apply patch. rdar://problem/70104437

5:27 PM Changeset in webkit [268236] by Wenson Hsieh
  • 2 edits in trunk/LayoutTests

Unreviewed, unskip several canvas-related layout test directories when enabling GPU process

The vast majority of tests in these directories now pass; we can now enable these directories by default, and
track the remaining tests as individual failures.

  • gpu-process/TestExpectations:
5:26 PM Changeset in webkit [268235] by Russell Epstein
  • 3 edits in branches/safari-610.2.11.1-branch/Source/WebCore

Apply patch. rdar://problem/69594474

5:24 PM Changeset in webkit [268234] by James Darpinian
  • 15 edits
    10 adds in trunk

Support EXT_texture_compression_rgtc WebGL extension
https://bugs.webkit.org/show_bug.cgi?id=217198

Reviewed by Kenneth Russell.

Source/WebCore:

Test: webgl/conformance/extensions/ext-texture-compression-rgtc.html

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMConvertWebGL.cpp:

(WebCore::convertToJSValue):

  • html/canvas/EXTTextureCompressionRGTC.cpp: Added.

(WebCore::EXTTextureCompressionRGTC::EXTTextureCompressionRGTC):
(WebCore::EXTTextureCompressionRGTC::getName const):

  • html/canvas/EXTTextureCompressionRGTC.h: Added.
  • html/canvas/EXTTextureCompressionRGTC.idl: Added.
  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::getExtension):
(WebCore::WebGL2RenderingContext::getSupportedExtensions):

  • html/canvas/WebGLExtension.h:
  • html/canvas/WebGLRenderingContext.cpp:

(WebCore::WebGLRenderingContext::getExtension):
(WebCore::WebGLRenderingContext::getSupportedExtensions):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::extensionIsEnabled):
(WebCore::WebGLRenderingContextBase::validateCompressedTexFuncData):
(WebCore::WebGLRenderingContextBase::loseExtensions):

  • html/canvas/WebGLRenderingContextBase.h:
  • platform/graphics/ExtensionsGL.h:

LayoutTests:

  • webgl/conformance/extensions/ext-texture-compression-rgtc-expected.txt: Added.
  • webgl/conformance/extensions/ext-texture-compression-rgtc.html: Added.
  • webgl/conformance/extensions/s3tc-and-rgtc-expected.txt: Added.
  • webgl/conformance/extensions/s3tc-and-rgtc.html: Added.
  • webgl/resources/webgl_test_files/conformance/extensions/ext-texture-compression-rgtc.html: Added.
  • webgl/resources/webgl_test_files/conformance/extensions/s3tc-and-rgtc.html: Added.
  • webgl/resources/webgl_test_files/js/tests/compressed-texture-utils.js: Added.
5:15 PM Changeset in webkit [268233] by Hector Lopez
  • 1 edit
    2 adds in trunk/LayoutTests

Add Mojave specific result
https://bugs.webkit.org/show_bug.cgi?id=167729

Unreviewed test gardening.

  • platform/mac-mojave/imported/w3c/web-platform-tests/css/css-pseudo/text-selection-expected.txt: Added.
5:03 PM Changeset in webkit [268232] by achristensen@apple.com
  • 7 edits in trunk

FileReader.result should return null if it isn't done yet
https://bugs.webkit.org/show_bug.cgi?id=217484

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

  • web-platform-tests/FileAPI/reading-data-section/filereader_result-expected.txt:

Source/WebCore:

This matches Chrome and Firefox.
Covered by newly passing web platform tests.

  • fileapi/FileReader.cpp:

(WebCore::FileReader::result const):

LayoutTests:

  • fast/files/read-file-async-expected.txt:
  • fast/files/workers/worker-read-file-async-expected.txt:
4:44 PM Changeset in webkit [268231] by Peng Liu
  • 4 edits in trunk

[Media in GPU Process] Cannot activate or deactivate an audio session
https://bugs.webkit.org/show_bug.cgi?id=217492

Reviewed by Eric Carlson.

Source/WebKit:

No new tests, covered by existing tests.

  • WebProcess/GPU/media/RemoteAudioSession.cpp:

(WebKit::RemoteAudioSession::tryToSetActiveInternal):

LayoutTests:

  • gpu-process/TestExpectations:
4:28 PM Changeset in webkit [268230] by Alan Coon
  • 1 edit in branches/safari-610-branch/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm

Build fix for makeBlockPtr.

4:28 PM Changeset in webkit [268229] by Alan Coon
  • 4 edits in branches/safari-610-branch/Source

Cherry-pick r268052. rdar://problem/70097377

Enable video capture in WebProcess by default on MacOS
https://bugs.webkit.org/show_bug.cgi?id=217385
<rdar://problem/69999542>

Reviewed by Sam Weinig.

Source/WebKit:

Manually tested in MiniBrowser.

  • Shared/WebPreferencesDefaultValues.cpp:
  • Shared/WebPreferencesDefaultValues.h:

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:

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

4:28 PM Changeset in webkit [268228] by achristensen@apple.com
  • 16 edits
    5 adds in trunk

Implement Blob.stream
https://bugs.webkit.org/show_bug.cgi?id=217457

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/FileAPI/blob/Blob-stream.any-expected.txt:
  • web-platform-tests/FileAPI/blob/Blob-stream.any.worker-expected.txt:
  • web-platform-tests/FileAPI/idlharness-expected.txt:
  • web-platform-tests/FileAPI/idlharness.worker-expected.txt:

Source/WebCore:

It's implemented in Chrome and Firefox.

  • Modules/async-clipboard/ClipboardItemBindingsDataSource.h:
  • bindings/js/ReadableStream.h:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/CodeGeneratorJS.pm:

(AddToIncludesForIDLType):

  • fileapi/Blob.cpp:

(WebCore::Blob::stream):

  • fileapi/Blob.h:
  • fileapi/Blob.idl:
  • fileapi/FileReaderLoader.cpp:

(WebCore::FileReaderLoader::FileReaderLoader):
(WebCore::FileReaderLoader::takeRawData):

  • fileapi/FileReaderLoader.h:
  • fileapi/FileReaderLoaderClient.h:

LayoutTests:

  • fast/files/blob-stream-error-expected.txt: Added.
  • fast/files/blob-stream-error.html: Added.
  • fast/files/blob-stream-frame-expected.txt: Added.
  • fast/files/blob-stream-frame.html: Added.
  • fast/files/resources/blob-stream-iframe.html: Added.
4:28 PM Changeset in webkit [268227] by Alan Coon
  • 3 edits in branches/safari-610-branch/Tools

Cherry-pick r268023. rdar://problem/70056589

Disable media capture if an app's entitlements won't allow access to capture devices
https://bugs.webkit.org/show_bug.cgi?id=217319
<rdar://problem/69956112>

Unreviewed, address post-review comments.

  • MiniBrowser/mac/Info.plist: Update media capture usage strings.
  • MobileMiniBrowser/MobileMiniBrowser/Info.plist: Ditto.

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

4:28 PM Changeset in webkit [268226] by Alan Coon
  • 8 edits in branches/safari-610-branch

Cherry-pick r268012. rdar://problem/70056589

Disable media capture if an app's entitlements won't allow access to capture devices
https://bugs.webkit.org/show_bug.cgi?id=217319
<rdar://problem/69956112>

Reviewed by Youenn Fablet.

Source/WebKit:

No new tests, tested manually with MiniBrowser and Safari.

  • UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm: (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio): If the app is sandboxed, check for the entitlement required for audio capture. Don't bother checking for usage string if TCC has already authorized capture. (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo): Ditto for video capture.
  • UIProcess/Cocoa/WebPreferencesCocoa.mm: (WebKit::WebPreferences::platformInitializeStore): Initialize mediaDevicesEnabled manually because its default value is always false in the WebProcess and may be true in the UIProcess. WebPreferences assumes the default will always be the same in both processes, and so has an optimization that only sends values to the WebProcess if they differ from the default value. This means if the default in the UIProcess is true it won't be pushed to the WebProcess, so capture won't work.
  • Platform/spi/ios/TCCSPI.h: Update TCCAccessPreflightResult.

Tools:

  • MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
  • MiniBrowser/mac/AppDelegate.m: (-[BrowserAppDelegate defaultConfiguration]): Don't set configuration._mediaCaptureEnabled, it should no longer be necessary.
  • MiniBrowser/mac/Info.plist: Remove unneeded keys.
  • MobileMiniBrowser/MobileMiniBrowser/Info.plist: Ditto. Add usage strings.

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

4:28 PM Changeset in webkit [268225] by Alan Coon
  • 10 edits
    1 add in branches/safari-610-branch

Cherry-pick r267844. rdar://problem/70056601

Prevent media capture unless the application has correct data for system permission prompt
https://bugs.webkit.org/show_bug.cgi?id=217104
<rdar://problem/69761929>

Reviewed by Darin Adler.

Source/WebKit:

Tested manually with MiniBrowser.

  • SourcesCocoa.txt:
  • UIProcess/Cocoa/UIDelegate.mm: (WebKit::requestAVCaptureAccessForMediaType): Renamed from requestAccessForMediaType. (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): Deny requests of the application is not permitted to capture. Restructure logic to make it easier to understand. (WebKit::requestAccessForMediaType): Deleted.
  • UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm: Added. (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio): Check for required Info.plist string. (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo): Ditto.
  • UIProcess/Cocoa/WebPageProxyCocoa.mm: Update for unified build.
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp: (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio): (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo):
  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

  • MiniBrowser/mac/Info.plist: Add necessary entitlements and usage strings.
  • MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.m: (-[WebViewController createWebView]): Setting the private capture preference is not necessary because we set configuration._mediaCaptureEnabled.

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

4:28 PM Changeset in webkit [268224] by Alan Coon
  • 3 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r267698. rdar://problem/70056601

Make sure our calls to AVCaptureDevice requestAccessForMediaType do processing on the main thread
https://bugs.webkit.org/show_bug.cgi?id=216974

Reviewed by Darin Adler.

The completion handler to [AVCaptureDeviceClass requestAccessForMediaType:] may sometimes be called in a background thread on iOS.
Make sure to hop to the main thread if that is the case.
Also make sure to ref/weakref lambda captured variables.

  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm: (WebKit::requestAccessForMediaType): (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):

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

4:28 PM Changeset in webkit [268223] by Alan Coon
  • 16 edits in branches/safari-610-branch

Cherry-pick r267563. rdar://problem/70056594

Introduce WKWebViewConfiguration mediaCaptureEnabled
https://bugs.webkit.org/show_bug.cgi?id=216872

Reviewed by Alex Christensen.

Source/WebKit:

Add a new boolean configuration to enable/disable mediaDevices exposure.
Value is off by default.
A future patch will remove the mediaDevices WebPreferences based API, given there is no need
to enable/disable mediaDevices during the lifetime of a page.

Covered by existing tests.

  • UIProcess/API/APIPageConfiguration.cpp: (API::PageConfiguration::copy const):
  • UIProcess/API/APIPageConfiguration.h: (API::PageConfiguration::setMediaDevicesEnabled): (API::PageConfiguration::mediaDevicesEnabled const):
  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _setupPageConfiguration:]):
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration _mediaDevicesEnabled]): (-[WKWebViewConfiguration _setMediaDevicesEnabled:]):
  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

Tools:

Make use of new configuration boolean instead of mediaDevicesEnabled WebPreferences API.

  • MiniBrowser/mac/AppDelegate.m: (-[BrowserAppDelegate defaultConfiguration]):
  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm: (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKit/GetUserMediaNavigation.mm: (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm: (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKit/MediaStreamTrackDetached.mm: (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKitCocoa/GetDisplayMedia.mm: (TestWebKitAPI::GetDisplayMediaTest::SetUp):
  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/UserMediaDisabled.mm: (MediaCaptureDisabledTest::SetUp):
  • TestWebKitAPI/Tests/WebKitCocoa/UserMediaSimulateFailedSandbox.mm: (MediaCaptureSimulateFailedSandbox::SetUp):

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

4:28 PM Changeset in webkit [268222] by Alan Coon
  • 13 edits in branches/safari-610-branch

Cherry-pick r267081. rdar://problem/70056594

End of media capture should not be reported before 3 seconds of the start of capture
https://bugs.webkit.org/show_bug.cgi?id=216415
Source/WebCore:

Reviewed by Eric Carlson.

Add a timer that allows taking a function and a delay as parameter.
Covered by added API test.

  • platform/Timer.h: (WebCore::DeferrableTaskTimer::fired): (WebCore::DeferrableTaskTimer::doTask): (WebCore::DeferrableTaskTimer::cancel):

Source/WebKit:

<rdar://problem/68512358>

Reviewed by Eric Carlson.

Add support for delaying of end of capture notification to the application.
This allows to ensure that a capture indicator stays for long enough for the user to notice it.
A capture indicator should be visible to the user for at least three seconds.

A timer is scheduled when starting a capture and there is no ongoing capture.
As long as the timer is active, the capture state cannot be transitioned to no capture.
Other transitions are allowed.
Once the timer kicks in, any capture state update is done synchronously.
Ensure to update the capture state when the timer kicks in.

Note that even navigations will not allow transitioning the capture state sooner.
This is done to ensure a page does not try to capture one frame before navigating to another page.
In practice, very few pages should navigate quickly after starting capture.

  • UIProcess/API/C/WKPage.cpp: (WKPageGetMediaState): (WKPageSetMediaCaptureReportingDelayForTesting):
  • UIProcess/API/C/WKPagePrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _mediaCaptureState]):
  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm: (-[WKWebView _mediaCaptureReportingDelayForTesting]): (-[WKWebView _setMediaCaptureReportingDelayForTesting:]):
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::updatePlayingMediaDidChange): (WebKit::WebPageProxy::updateReportedMediaCaptureState):
  • UIProcess/WebPageProxy.h: (WebKit::WebPageProxy::reportedMediaCaptureState const): (WebKit::WebPageProxy::mediaCaptureReportingDelay const): (WebKit::WebPageProxy::setMediaCaptureReportingDelay):

Tools:

Reviewed by Eric Carlson.

  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm: (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm: (-[GetUserMediaUIDelegate _webView:mediaCaptureStateDidChange:]): Add a notCapturing boolean and wait for the notification before going back to the capturing page. Decrease delay to 1 second to make the test run faster.
  • WebKitTestRunner/TestController.cpp: (WTR::TestController::resetStateToConsistentValues): Make sure to set media capture state delay to zero.

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

4:28 PM Changeset in webkit [268221] by Alan Coon
  • 6 edits
    2 adds in branches/safari-610-branch

Cherry-pick r267838. rdar://problem/70056580

getUserMedia with sampleRate constraints may fail
https://bugs.webkit.org/show_bug.cgi?id=217147
<rdar://problem/69831144>

Reviewed by Eric Carlson.

In case of new capture, make sure to reset sample rate and volume to default values.
This ensures that a sample rate that will fail the capture will not stick for other pages.
Manually tested.

  • platform/mediastream/mac/BaseAudioSharedUnit.cpp: (WebCore::BaseAudioSharedUnit::prepareForNewCapture):

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

4:28 PM Changeset in webkit [268220] by Alan Coon
  • 10 edits
    1 move
    1 delete in branches/safari-610-branch

Cherry-pick r267568. rdar://problem/70056584

Implement default behavior for getUserMedia requests in case where there is no delegate set
https://bugs.webkit.org/show_bug.cgi?id=216968

Reviewed by Eric Carlson.

Source/WebKit:

In case page UIDelegate is not set, make the getUserMedia request do its default action.
In case there is a UIDelegate but no getUserMedia specific delegates, make the getUserMedia request do its default action.
Default action is deny for getDisplayMedia and for non cocoa ports.
For cocoa ports, a prompt is shown.

Manually tested with MiniBrowser and MobileMiniBrowser.

  • SourcesCocoa.txt:
  • UIProcess/API/APIUIClient.h: (API::UIClient::decidePolicyForUserMediaPermissionRequest):
  • UIProcess/Cocoa/UIDelegate.mm: (WebKit::requestUserMediaAuthorizationForFrame):
  • UIProcess/Cocoa/UserMediaPermissionRequestProxy.mm: Renamed from Source/WebKit/UIProcess/Cocoa/WKUserMediaCaptureAccessAlert.mm. (WebKit::alertMessageText): (WebKit::UserMediaPermissionRequestProxy::doDefaultAction):
  • UIProcess/Cocoa/WKUserMediaCaptureAccessAlert.h: Removed.
  • UIProcess/UserMediaPermissionRequestProxy.cpp: (WebKit::UserMediaPermissionRequestProxy::doDefaultAction):
  • UIProcess/UserMediaPermissionRequestProxy.h:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

Add camera and microphone entitlements to MobileMiniBrowser.
Expose mediaDevices to web pages and use mock devices.

  • MobileMiniBrowser/MobileMiniBrowser/Info.plist:
  • MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.m: (-[WebViewController createWebView]):

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

4:28 PM Changeset in webkit [268219] by Alan Coon
  • 11 edits
    2 adds in branches/safari-610-branch

Cherry-pick r267414. rdar://problem/70056613

Implement a default prompt for getUserMedia
https://bugs.webkit.org/show_bug.cgi?id=216821

Reviewed by Eric Carlson.

Source/WebCore:

Manually tested by running Minibrowser.

  • en.lproj/Localizable.strings:

Source/WebKit:

Move preferences used by WebRTC develop menu to internals.
This allows having them in MiniBrowser.

Enable video capture in UIProcess by default for non Safari applications.
Add support for a getUserMedia prompt, very similar to iOS current prompt.
Use the prompt in case the application does not implement any of the two delegates.

  • Shared/WebPreferences.yaml:
  • Shared/WebPreferencesDefaultValues.cpp: (WebKit::defaultCaptureVideoInUIProcessEnabled):
  • Shared/WebPreferencesDefaultValues.h:
  • Shared/WebPreferencesExperimental.yaml:
  • Shared/WebPreferencesInternal.yaml:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm: (WebKit::UIDelegate::setDelegate): (WebKit::requestUserMediaAuthorizationForFrame): (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
  • UIProcess/Cocoa/WKUserMediaCaptureAccessAlert.h: Added.
  • UIProcess/Cocoa/WKUserMediaCaptureAccessAlert.mm: Added. (WebKit::visibleDomain): (WebKit::alertMessageText): (WebKit::presentUserMediaCaptureAccessAlert):
  • WebKit.xcodeproj/project.pbxproj:

Tools:

Remove getUserMedia delegate implementations to use WebKit built-in prompt.
Add camera and microphone entitlements to allow using real cameras and microphones.
Keep using mock devices as the default.

  • MiniBrowser/MiniBrowser.entitlements:
  • MiniBrowser/mac/WK2BrowserWindowController.m: (-[WK2BrowserWindowController _webView:requestMediaCaptureAuthorization:decisionHandler:]): Deleted. (-[WK2BrowserWindowController _webView:includeSensitiveMediaDeviceDetails:]): Deleted.

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

4:27 PM Changeset in webkit [268218] by Alan Coon
  • 6 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r267237. rdar://problem/70056605

Unified build fixes in media code
https://bugs.webkit.org/show_bug.cgi?id=216691

Reviewed by Sam Weinig.

Add missing includes and/or missing undef.
No change of behavior.

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.cpp:
  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:
  • WebProcess/WebPage/WebPageOverlay.h:
  • WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:
  • WebProcess/cocoa/RemoteRealtimeMediaSource.h:

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

4:05 PM Changeset in webkit [268217] by Hector Lopez
  • 2 edits
    2 deletes in trunk/Source/WebKit

Unreviewed, reverting r268155.

This reverts r268155 becasue it broke internal builds

Reverted changeset:

"[WebAuthn] Implement a dummy WebAuthenticationAgent"
https://bugs.webkit.org/show_bug.cgi?id=217401
https://trac.webkit.org/changeset/268155

3:33 PM Changeset in webkit [268216] by Russell Epstein
  • 1 copy in branches/safari-610.2.11.3-branch

New branch.

3:33 PM Changeset in webkit [268215] by Russell Epstein
  • 1 copy in branches/safari-610.2.11.2-branch

New branch.

3:20 PM Changeset in webkit [268214] by commit-queue@webkit.org
  • 16 edits in trunk

REGRESSION (r267763): [ iOS wk2 ] http/tests/in-app-browser-privacy/non-app-bound-domain-does-not-get-app-bound-session.html is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=217386

Patch by Alex Christensen <achristensen@webkit.org> on 2020-10-08
Reviewed by Brent Fulgham.

Source/WebKit:

Use SPI instead of NSUserDefaults to turn on test mode for app browser privacy.
This is more reliable with the timing change of when a WebsiteDataStore's parameters are sent to the network process.

  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration enableInAppBrowserPrivacyForTesting]):
(-[_WKWebsiteDataStoreConfiguration setEnableInAppBrowserPrivacyForTesting:]):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::platformSetNetworkParameters):
(WebKit::WebsiteDataStore::ensureAppBoundDomains const):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy const):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::enableInAppBrowserPrivacyForTesting const):
(WebKit::WebsiteDataStoreConfiguration::setEnableInAppBrowserPrivacyForTesting):

Source/WTF:

  • Scripts/Preferences/WebPreferencesDebug.yaml:

Tools:

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::platformAddTestOptions const):
(WTR::TestController::platformInitializeDataStore):

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetStateToConsistentValues):

LayoutTests:

  • platform/ios-simulator-wk2/TestExpectations:
2:41 PM Changeset in webkit [268213] by Russell Epstein
  • 5 edits in branches/safari-610.2.11.0-branch

Cherry-pick r268117. rdar://problem/70097482

Presidential Executive Order pages not accessible with Safari.
https://bugs.webkit.org/show_bug.cgi?id=217415

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/aria-modal.html.

These pages have a dialog modal element of the form

<div class="popover" role="dialog" aria-modal="true">

with style visible and a display value different from none. This makes
WebCore/accessibility to treat it as if the dialog were always visible,
and thus do not convey the content of the page outside the dialog to
VoiceOver. The author controls the visibility of the dialog using the
style opacity. This patch adds the check for the opacity to determine
whether an element is visible or not.

  • accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::isNodeVisible const):

LayoutTests:

Expanded this test to cover the case whether the modal dialog visibility
is controlled by its opacity. Cleaned up JS code and made it work in
isolated tree mode.

  • accessibility/aria-modal-expected.txt:
  • accessibility/aria-modal.html:

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

2:40 PM Changeset in webkit [268212] by Russell Epstein
  • 4 edits in branches/safari-610.2.11.1-branch/Source/WebCore/dom

Cherry-pick f9437de2cd47. rdar://problem/69101091

Fix the build after cherry-picking r266909.

2:40 PM Changeset in webkit [268211] by Russell Epstein
  • 8 edits
    2 adds in branches/safari-610.2.11.1-branch

Cherry-pick r266909. rdar://problem/69101091

Source/WebCore:
Text replacements at the beginning of a second line are replaced too early
https://bugs.webkit.org/show_bug.cgi?id=216327
<rdar://problem/68170353>

Reviewed by Darin Adler.

In the changes in r258871, using SimpleRanges instead of Range causing some side effects
when the replacements at the beginning of lines. The ranges that we are counting are backwards
and the return characters are being counted instead of being ignored. There is almost
certainly a better fix than this, but this patch restores the original logic that
was present when Range was being used, until a better fix can be worked out.

Test: editing/spelling/text-replacement-first-word-second-line.html

  • editing/Editor.cpp: (WebCore::Editor::markAndReplaceFor):
  • editing/TextCheckingHelper.cpp: (WebCore::TextCheckingParagraph::automaticReplacementStart const): (WebCore::TextCheckingParagraph::automaticReplacementLength const):
  • editing/TextCheckingHelper.h:

LayoutTests:
Overlapping text replacements at the beginning of a line are replaced too early
https://bugs.webkit.org/show_bug.cgi?id=216327

Reviewed by Darin Adler.

  • editing/spelling/text-replacement-first-word-second-line-expected.txt: Added.
  • editing/spelling/text-replacement-first-word-second-line.html: Added.

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

2:39 PM Changeset in webkit [268210] by Russell Epstein
  • 4 edits
    2 adds in branches/safari-610.2.11.1-branch

Cherry-pick r268162. rdar://problem/70097353

REGRESSION: Safari unable to load PDF in <embed> (docs.legalconnect.com)
https://bugs.webkit.org/show_bug.cgi?id=217451
<rdar://problem/69767043>

Reviewed by Alex Christensen.

Source/WebCore:

Test: fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank.html

If plugins are enabled, we'll always let the request go through, and WebKit will
guess that files with PDFPlugin-handled extensions should instantiate PDFPlugin,
even if no other plugins are available.

However, if plugins are disabled, requestPlugin() will early return if the explicitly
specified MIME type is not handled by an application plugin (even though the downstream
WebKit code would have happily instantiated an application plugin for us).

Application plugins shouldn't depend on the plugin enablement setting.
To fix this, have SubframeLoader guess the MIME type if not explicitly specified
(matching WebKit's behavior), and allow the request if it matches an application plugin.

  • loader/SubframeLoader.cpp: (WebCore::findPluginMIMETypeFromURL): Improve this previously logging-only function to use the lastPathComponent of the URL instead of randomly looking at the end of the URL, to ignore query strings and fragments when looking for the file extension.

(WebCore::FrameLoader::SubframeLoader::requestPlugin):
Make use of findPluginMIMETypeFromURL to guess the MIME type if it's not
explicitly specified. If the guessed MIME type is one that is handled
by application plugins, allow the request to go out to WebKit (which
may then instantiate a PDFPlugin, for example).

(WebCore::logPluginRequest):
(WebCore::FrameLoader::SubframeLoader::requestObject):
(WebCore::FrameLoader::SubframeLoader::createJavaAppletWidget):
Pass the URL instead of stringifying it, so we can lastPathComponent as above.

LayoutTests:

  • fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank-expected-mismatch.html: Added.
  • fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank.html: Added. Add a test ensuring that <embed> with no specified MIME type still renders the PDF.

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

2:39 PM Changeset in webkit [268209] by Russell Epstein
  • 5 edits in branches/safari-610.2.11.1-branch

Cherry-pick r268117. rdar://problem/70104128

Presidential Executive Order pages not accessible with Safari.
https://bugs.webkit.org/show_bug.cgi?id=217415

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/aria-modal.html.

These pages have a dialog modal element of the form

<div class="popover" role="dialog" aria-modal="true">

with style visible and a display value different from none. This makes
WebCore/accessibility to treat it as if the dialog were always visible,
and thus do not convey the content of the page outside the dialog to
VoiceOver. The author controls the visibility of the dialog using the
style opacity. This patch adds the check for the opacity to determine
whether an element is visible or not.

  • accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::isNodeVisible const):

LayoutTests:

Expanded this test to cover the case whether the modal dialog visibility
is controlled by its opacity. Cleaned up JS code and made it work in
isolated tree mode.

  • accessibility/aria-modal-expected.txt:
  • accessibility/aria-modal.html:

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

2:17 PM Changeset in webkit [268208] by Fujii Hironori
  • 3 edits in trunk/Source/WebCore

[WinCairo] ASSERTION FAILED: m_renderingUpdateRemainingSteps.last().isEmpty() in WebCore::Page::finalizeRenderingUpdate since r268075
https://bugs.webkit.org/show_bug.cgi?id=217490

Reviewed by Simon Fraser.

When the assertion failed, m_renderingUpdateRemainingSteps was
0x2000 (ScrollingTreeUpdate). The flag ScrollingTreeUpdate should
be used only if ENABLE(ASYNC_SCROLLING).

  • page/Page.cpp:

(WebCore::operator<<):

  • page/Page.h:

Conditioned out ScrollingTreeUpdate by ENABLE(ASYNC_SCROLLING).

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

[webkitpy] Support custom version information
https://bugs.webkit.org/show_bug.cgi?id=217485
<rdar://problem/70069051>

Rubber-stamped by Aakash Jain.

  • Scripts/webkitpy/common/system/platforminfo.py:

(PlatformInfo.init):

1:20 PM Changeset in webkit [268206] by Andres Gonzalez
  • 4 edits in trunk

Presidential Executive Order pages not accessible with Safari.
https://bugs.webkit.org/show_bug.cgi?id=217415
<rdar://problem/69922416>

Reviewed by Chris Fleizach and Simon Fraser.

Follow up to the previous change for this bug per Simon Fraser's comment.
Check not only the visibility and opacity of the object in question but
also of its ancestors.
Expanded the test accessibility/aria-modal.html to include the case
where the visibility of the modal dialog is determined by the opacity of
its parent object.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::isNodeVisible const):

12:53 PM Changeset in webkit [268205] by Russell Epstein
  • 8 edits in branches/safari-610.2.11.0-branch/Source

Versioning.

WebKit-7610.2.11.0.1

12:47 PM Changeset in webkit [268204] by Russell Epstein
  • 8 edits in branches/safari-610.2.11.1-branch/Source

Versioning.

WebKit-7610.2.11.1.1

12:29 PM Changeset in webkit [268203] by Russell Epstein
  • 1 copy in branches/safari-610.2.11.1-branch

New branch.

12:29 PM Changeset in webkit [268202] by Alan Bujtas
  • 10 edits in trunk

[LFC][Integration] Enable float clear for <br>
https://bugs.webkit.org/show_bug.cgi?id=217450

Reviewed by Antti Koivisto.

Source/WebCore:

This patch enables IFC layout for <br clear> content.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

  • layout/integration/LayoutIntegrationInlineContent.h:
  • layout/integration/LayoutIntegrationLine.h:
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::constructContent):
(WebCore::LayoutIntegration::LineLayout::contentLogicalHeight const):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::clearFloats): Match the floored position of the float boxes in the search tree.

LayoutTests:

  • platform/ios-wk1/fast/css/word-space-extra-expected.txt: Rebaselining.
  • platform/ios/fast/css/word-space-extra-expected.txt:
  • platform/mac/fast/css/word-space-extra-expected.txt:
12:23 PM Changeset in webkit [268201] by Russell Epstein
  • 1 copy in branches/safari-610.2.11.0-branch

New branch.

12:10 PM Changeset in webkit [268200] by Keith Rollin
  • 6 edits
    2 deletes in trunk

Remove copy-webkitlibraries-to-product-directory
https://bugs.webkit.org/show_bug.cgi?id=217465
<rdar://problem/70082193>

Reviewed by Darin Adler.

This script no longer does anything, so remove it along with the
scaffolding around it that invokes it during the build.

.:

  • Makefile:

Tools:

  • Scripts/build-jsc:
  • Scripts/build-webkit:
  • Scripts/copy-webkitlibraries-to-product-directory: Removed.

WebKitLibraries:

  • Makefile: Removed.
12:03 PM Changeset in webkit [268199] by Chris Dumez
  • 4 edits in trunk

Crash under WebKit::WebProcessCache::clear()
https://bugs.webkit.org/show_bug.cgi?id=217480

Reviewed by Geoffrey Garen.

Source/WebKit:

Protect |process| in the responsiveness check lambda in WebProcessCache::addProcessIfPossible().
If we fail to do so and WebProcessCache::clear() gets called while the responsiveness check is
pending, the WebProcessProxy destructor may get called while clear() clears m_pendingAddRequests,
which would resolve the responsiveness check with responsive=false, and cause the lambda to
try and remove the entry from m_pendingAddRequests (while clear() is clearing it).

  • UIProcess/WebProcessCache.cpp:

(WebKit::WebProcessCache::addProcessIfPossible):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
11:56 AM Changeset in webkit [268198] by commit-queue@webkit.org
  • 28 edits
    3 deletes in trunk/Source/WebCore

Mac: Remove OpenGL and OpenGL ES backends
https://bugs.webkit.org/show_bug.cgi?id=217374

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-10-08
Reviewed by Darin Adler.

Remove macOS OpenGL (CGL) and iOS OpenGL ES (EAGL)
implementations of GraphicsContextGLOpenGL. These
are not used anymore and cannot be used for conformant
WebGL. The two removed backends would just create
maintainance burden.

Removes TextureCacheCV, this was not implemented for
ANGLE and in comments it was said to be disabled in
the platform.

Fixes a bug where iOS apps on Mac Apple Silicon would
not use correct texture target to convert the video
frames in VideoTextureCopierCV.

Fixes few instances of using GL types in WebGL implementation
instead of WebCore defined GCGL types. This is needed
now that the includes are (a bit) more correct.

No new tests, a refactoring.

  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/canvas/ANGLEInstancedArrays.cpp:

(WebCore::ANGLEInstancedArrays::supported):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::create):
(WebCore::WebGLRenderingContextBase::readPixels):

  • platform/graphics/GraphicsContextGL.cpp:
  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::reshapeFBOs):
(WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToCanvas):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::IOSurfaceTextureTarget):
(WebCore::GraphicsContextGLOpenGL::IOSurfaceTextureTargetQuery):
(WebCore::GraphicsContextGLOpenGL::EGLIOSurfaceTextureTarget):
(WebCore::GraphicsContextGLOpenGL::makeContextCurrent):
(WebCore::GraphicsContextGLOpenGL::checkGPUStatus):
(WebCore::GraphicsContextGLOpenGL::setContextVisibility):
(WebCore::GraphicsContextGLOpenGL::screenDidChange):

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

(-[WebGLLayer initWithGraphicsContextGL:]):
(-[WebGLLayer setAnchorPoint:]):
(-[WebGLLayer copyImageSnapshotWithColorSpace:]):
(-[WebGLLayer prepareForDisplay]):
(-[WebGLLayer display]):
(-[WebGLLayer releaseGLResources]):
(-[WebGLLayer allocateIOSurfaceBackingStoreWithSize:usingAlpha:]):
(-[WebGLLayer bindFramebufferToNextAvailableSurface]):

  • platform/graphics/cv/TextureCacheCV.h: Removed.
  • platform/graphics/cv/TextureCacheCV.mm: Removed.
  • platform/graphics/cv/VideoTextureCopierCV.cpp:

(WebCore::VideoTextureCopierCV::initializeContextObjects):
(WebCore::VideoTextureCopierCV::initializeUVContextObjects):
(WebCore::VideoTextureCopierCV::attachIOSurfaceToTexture):
(WebCore::VideoTextureCopierCV::detachIOSurfaceFromTexture):
(WebCore::VideoTextureCopierCV::copyImageToPlatformTexture):
(WebCore::VideoTextureCopierCV::copyVideoTextureToPlatformTexture):

  • platform/graphics/cv/VideoTextureCopierCV.h:
  • platform/graphics/ios/GraphicsContextGLOpenGLESIOS.h: Removed.
  • platform/graphics/opengl/ExtensionsGLOpenGL.cpp:

(WebCore::ExtensionsGLOpenGL::blitFramebuffer):
(WebCore::ExtensionsGLOpenGL::createVertexArrayOES):
(WebCore::ExtensionsGLOpenGL::deleteVertexArrayOES):
(WebCore::ExtensionsGLOpenGL::isVertexArrayOES):
(WebCore::ExtensionsGLOpenGL::bindVertexArrayOES):
(WebCore::ExtensionsGLOpenGL::supportsExtension):
(WebCore::ExtensionsGLOpenGL::drawBuffersEXT):
(WebCore::ExtensionsGLOpenGL::drawArraysInstanced):
(WebCore::ExtensionsGLOpenGL::drawElementsInstanced):
(WebCore::ExtensionsGLOpenGL::vertexAttribDivisor):

  • platform/graphics/opengl/ExtensionsGLOpenGL.h:
  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp:

(WebCore::ExtensionsGLOpenGLCommon::initializeAvailableExtensions):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:

(WebCore::GraphicsContextGLOpenGL::setContextVisibility):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:

(WebCore::GraphicsContextGLOpenGL::readPixelsAndConvertToBGRAIfNecessary):
(WebCore::GraphicsContextGLOpenGL::reshapeFBOs):
(WebCore::GraphicsContextGLOpenGL::resolveMultisamplingIfNecessary):
(WebCore::GraphicsContextGLOpenGL::getIntegerv):
(WebCore::GraphicsContextGLOpenGL::depthRange):
(WebCore::GraphicsContextGLOpenGL::clearDepth):
(WebCore::GraphicsContextGLOpenGL::getExtensions):
(WebCore::GraphicsContextGLOpenGL::readPixels):

  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToCanvas):
(WebCore::GraphicsContextGLOpenGL::copyTexImage2D):
(WebCore::GraphicsContextGLOpenGL::copyTexSubImage2D):
(WebCore::GraphicsContextGLOpenGL::finish):
(WebCore::GraphicsContextGLOpenGL::flush):
(WebCore::GraphicsContextGLOpenGL::deleteTexture):

  • platform/graphics/opengl/GraphicsContextGLOpenGLES.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGLManager.cpp:

(WebCore::GraphicsContextGLOpenGLManager::updateAllContexts):
(WebCore::GraphicsContextGLOpenGLManager::updateHighPerformanceState):
(WebCore::GraphicsContextGLOpenGLManager::disableHighPerformanceGPUTimerFired):

  • platform/graphics/opengl/GraphicsContextGLOpenGLManager.h:
11:50 AM Changeset in webkit [268197] by david_quesada@apple.com
  • 2 edits in trunk/Source/WebKit

WKWebViewConfiguration._shouldRelaxThirdPartyCookieBlocking should be available on iOS
https://bugs.webkit.org/show_bug.cgi?id=217443
rdar://problem/69900089

Reviewed by Youenn Fablet.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _setShouldRelaxThirdPartyCookieBlocking:]):

Allow this method to be used by Safari and SafariViewService on iOS-family platforms.

11:18 AM Changeset in webkit [268196] by Peng Liu
  • 6 edits in trunk

RemoteAudioSession::category() returns an incorrect value after category changing
https://bugs.webkit.org/show_bug.cgi?id=217459

Reviewed by Youenn Fablet.

Source/WebKit:

No new tests, covered by existing tests.

  • WebProcess/GPU/media/RemoteAudioSession.cpp:

(WebKit::RemoteAudioSession::setCategory): Update m_configuration.category
and m_configuration.routeSharingPolicy so that RemoteAudioSession::category()
will return the correct value.

  • WebProcess/GPU/media/RemoteAudioSession.h:

LayoutTests:

  • gpu-process/TestExpectations: Minor clean-up and unskip some tests after fixing

the bug of RemoteAudioSession::category().

  • platform/mac/media/audio-session-category-audio-autoplay.html:
11:18 AM Changeset in webkit [268195] by Antti Koivisto
  • 11 edits in trunk/Source/WebCore

[LFC][Integration] Convert RenderText::positionForPoint use iterator
https://bugs.webkit.org/show_bug.cgi?id=217468

Reviewed by Zalan Bujtas.

Replace InlineBox traversal code with a generic version.

  • layout/integration/LayoutIntegrationLineIterator.cpp:

(WebCore::LayoutIntegration::LineIterator::operator== const):

  • layout/integration/LayoutIntegrationLineIterator.h:

(WebCore::LayoutIntegration::LineIterator::operator!= const):
(WebCore::LayoutIntegration::PathLine::top const):
(WebCore::LayoutIntegration::PathLine::bottom const):
(WebCore::LayoutIntegration::PathLine::selectionTop const):
(WebCore::LayoutIntegration::PathLine::selectionTopForHitTesting const):
(WebCore::LayoutIntegration::PathLine::selectionBottom const):
(WebCore::LayoutIntegration::PathLine::operator!= const): Deleted.
(WebCore::LayoutIntegration::PathLine::rect const): Deleted.
(WebCore::LayoutIntegration::PathLine::operator== const): Deleted.

  • layout/integration/LayoutIntegrationLineIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LegacyLinePath::top const):
(WebCore::LayoutIntegration::LegacyLinePath::bottom const):
(WebCore::LayoutIntegration::LegacyLinePath::selectionTop const):
(WebCore::LayoutIntegration::LegacyLinePath::selectionTopForHitTesting const):
(WebCore::LayoutIntegration::LegacyLinePath::selectionBottom const):
(WebCore::LayoutIntegration::LegacyLinePath::rect const): Deleted.

  • layout/integration/LayoutIntegrationLineIteratorModernPath.h:

(WebCore::LayoutIntegration::ModernLinePath::top const):
(WebCore::LayoutIntegration::ModernLinePath::bottom const):
(WebCore::LayoutIntegration::ModernLinePath::selectionTop const):
(WebCore::LayoutIntegration::ModernLinePath::selectionTopForHitTesting const):
(WebCore::LayoutIntegration::ModernLinePath::selectionBottom const):
(WebCore::LayoutIntegration::ModernLinePath::traversePrevious):
(WebCore::LayoutIntegration::ModernLinePath::rect const): Deleted.

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::PathTextRun::offsetForPosition const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LegacyPath::offsetForPosition const):

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::ModernPath::offsetForPosition const):
(WebCore::LayoutIntegration::ModernPath::traversePreviousOnLine):

  • rendering/RenderText.cpp:

(WebCore::lineDirectionPointFitsInBox):
(WebCore::createVisiblePositionForBox):
(WebCore::createVisiblePositionAfterAdjustingOffsetForBiDi):
(WebCore::RenderText::positionForPoint):

  • rendering/RenderTextLineBoxes.cpp:

(): Deleted.
(WebCore::lineDirectionPointFitsInBox): Deleted.
(WebCore::createVisiblePositionForBox): Deleted.
(WebCore::createVisiblePositionAfterAdjustingOffsetForBiDi): Deleted.
(WebCore::RenderTextLineBoxes::positionForPoint const): Deleted.

  • rendering/RenderTextLineBoxes.h:
11:01 AM Changeset in webkit [268194] by Alan Coon
  • 8 edits in branches/safari-611.1.3-branch

Cherry-pick r268012. rdar://problem/70100644

Disable media capture if an app's entitlements won't allow access to capture devices
https://bugs.webkit.org/show_bug.cgi?id=217319
<rdar://problem/69956112>

Reviewed by Youenn Fablet.

Source/WebKit:

No new tests, tested manually with MiniBrowser and Safari.

  • UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm: (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio): If the app is sandboxed, check for the entitlement required for audio capture. Don't bother checking for usage string if TCC has already authorized capture. (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo): Ditto for video capture.
  • UIProcess/Cocoa/WebPreferencesCocoa.mm: (WebKit::WebPreferences::platformInitializeStore): Initialize mediaDevicesEnabled manually because its default value is always false in the WebProcess and may be true in the UIProcess. WebPreferences assumes the default will always be the same in both processes, and so has an optimization that only sends values to the WebProcess if they differ from the default value. This means if the default in the UIProcess is true it won't be pushed to the WebProcess, so capture won't work.
  • Platform/spi/ios/TCCSPI.h: Update TCCAccessPreflightResult.

Tools:

  • MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
  • MiniBrowser/mac/AppDelegate.m: (-[BrowserAppDelegate defaultConfiguration]): Don't set configuration._mediaCaptureEnabled, it should no longer be necessary.
  • MiniBrowser/mac/Info.plist: Remove unneeded keys.
  • MobileMiniBrowser/MobileMiniBrowser/Info.plist: Ditto. Add usage strings.

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

11:00 AM Changeset in webkit [268193] by Alan Coon
  • 8 edits in branches/safari-611.1.3-branch/Source

Versioning.

WebKit-7611.1.3

10:59 AM Changeset in webkit [268192] by sihui_liu@apple.com
  • 5 edits
    1 add in trunk

Adjust heuristic for checking whether view reaches visually non-empty state
https://bugs.webkit.org/show_bug.cgi?id=217400

Reviewed by Geoffrey Garen.

Source/WebCore:

We decide that view reaches visually non-empty state and fire corresponding events when main document is parsed
and no more content (font or css resources) is to be loaded. An edge case is when the page has an empty document
and depends on async scripts to fill content (like wpt.fyi), then we may fire the events too early. To mitigate
this issue, now we don't set the state if content is completely empty and there are scripts to be loaded. Also,
because lazily loading elements need rendering update to decide if they can be loaded, we should not wait for
scripts where there are such elements.

API Test: WebKit.FirstVisuallyNonEmptyMilestoneWithDeferredScriptInEmptyDocument

  • page/FrameView.cpp:

(WebCore::FrameView::checkAndDispatchDidReachVisuallyNonEmptyState):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/deferred-script-load-in-empty-document.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/FirstVisuallyNonEmptyMilestone.mm:

(-[RenderingProgressNavigationDelegate _webView:renderingProgressDidChange:]):
(TEST):

10:58 AM Changeset in webkit [268191] by Alan Coon
  • 1 copy in branches/safari-611.1.3-branch

New branch.

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

Unreviewed, build fix for ARM64E
https://bugs.webkit.org/show_bug.cgi?id=217460

  • wtf/PtrTag.h:

(WTF::tagCodePtr):
(WTF::untagCodePtr):
(WTF::assertIsCFunctionPtr):
(WTF::assertIsNullOrCFunctionPtr):
(WTF::assertIsNotTagged):
(WTF::assertIsTagged):
(WTF::assertIsNullOrTagged):
(WTF::isTaggedWith):
(WTF::assertIsTaggedWith):
(WTF::assertIsNullOrTaggedWith):

10:40 AM Changeset in webkit [268189] by Russell Epstein
  • 4 edits
    2 adds in branches/safari-610.2-branch

Cherry-pick r268162. rdar://problem/70097353

REGRESSION: Safari unable to load PDF in <embed> (docs.legalconnect.com)
https://bugs.webkit.org/show_bug.cgi?id=217451
<rdar://problem/69767043>

Reviewed by Alex Christensen.

Source/WebCore:

Test: fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank.html

If plugins are enabled, we'll always let the request go through, and WebKit will
guess that files with PDFPlugin-handled extensions should instantiate PDFPlugin,
even if no other plugins are available.

However, if plugins are disabled, requestPlugin() will early return if the explicitly
specified MIME type is not handled by an application plugin (even though the downstream
WebKit code would have happily instantiated an application plugin for us).

Application plugins shouldn't depend on the plugin enablement setting.
To fix this, have SubframeLoader guess the MIME type if not explicitly specified
(matching WebKit's behavior), and allow the request if it matches an application plugin.

  • loader/SubframeLoader.cpp: (WebCore::findPluginMIMETypeFromURL): Improve this previously logging-only function to use the lastPathComponent of the URL instead of randomly looking at the end of the URL, to ignore query strings and fragments when looking for the file extension.

(WebCore::FrameLoader::SubframeLoader::requestPlugin):
Make use of findPluginMIMETypeFromURL to guess the MIME type if it's not
explicitly specified. If the guessed MIME type is one that is handled
by application plugins, allow the request to go out to WebKit (which
may then instantiate a PDFPlugin, for example).

(WebCore::logPluginRequest):
(WebCore::FrameLoader::SubframeLoader::requestObject):
(WebCore::FrameLoader::SubframeLoader::createJavaAppletWidget):
Pass the URL instead of stringifying it, so we can lastPathComponent as above.

LayoutTests:

  • fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank-expected-mismatch.html: Added.
  • fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank.html: Added. Add a test ensuring that <embed> with no specified MIME type still renders the PDF.

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

10:40 AM Changeset in webkit [268188] by Russell Epstein
  • 5 edits in branches/safari-610.2-branch

Cherry-pick r268117. rdar://problem/70097482

Presidential Executive Order pages not accessible with Safari.
https://bugs.webkit.org/show_bug.cgi?id=217415

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/aria-modal.html.

These pages have a dialog modal element of the form

<div class="popover" role="dialog" aria-modal="true">

with style visible and a display value different from none. This makes
WebCore/accessibility to treat it as if the dialog were always visible,
and thus do not convey the content of the page outside the dialog to
VoiceOver. The author controls the visibility of the dialog using the
style opacity. This patch adds the check for the opacity to determine
whether an element is visible or not.

  • accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::isNodeVisible const):

LayoutTests:

Expanded this test to cover the case whether the modal dialog visibility
is controlled by its opacity. Cleaned up JS code and made it work in
isolated tree mode.

  • accessibility/aria-modal-expected.txt:
  • accessibility/aria-modal.html:

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

10:29 AM Changeset in webkit [268187] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

AudioParamMap.idl has the Exposed extended attribute twice. (With the same value)
https://bugs.webkit.org/show_bug.cgi?id=217472

Patch by Tuomas Karkkainen <tuomas.webkit@apple.com> on 2020-10-08
Reviewed by Antti Koivisto.

This commit removes one of the two identical Exposed=Window extended
attributes from the IDL files.

  • Modules/webaudio/AudioParamMap.idl:
9:52 AM Changeset in webkit [268186] by Karl Rackler
  • 3 edits in trunk/LayoutTests

Move test expectations from ios-wk2 to ios-simulator-wk2
https://bugs.webkit.org/show_bug.cgi?id=217357
https://bugs.webkit.org/show_bug.cgi?id=217412

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-wk2/TestExpectations:
9:49 AM Changeset in webkit [268185] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Rename AudioParamTimeline::valuesForTimeRangeImpl() and split it into separate functions
https://bugs.webkit.org/show_bug.cgi?id=217453

Reviewed by Eric Carlson.

Rename AudioParamTimeline::valuesForTimeRangeImpl() to valuesForFrameRangeImpl() since
the function takes start / end frames in argument nowadays (This changed fairly recently).

Also split event processing into separate function for each event type. This reduces the
size of AudioParamTimeline::valuesForTimeRangeImpl() as the function was getting huge.
The size will also increase in the future when we vectorize processing for more event
types.

This change is based on the corresponding Blink implementation:

No new tests, no behavior change.

  • Modules/webaudio/AudioParam.cpp:

(WebCore::AudioParam::calculateTimelineValues):

  • Modules/webaudio/AudioParamTimeline.cpp:

(WebCore::AudioParamTimeline::valueForContextTime):
(WebCore::AudioParamTimeline::valuesForFrameRange):
(WebCore::AudioParamTimeline::valuesForFrameRangeImpl):
(WebCore::AudioParamTimeline::processLinearRamp):
(WebCore::AudioParamTimeline::processExponentialRamp):
(WebCore::AudioParamTimeline::processCancelValues):
(WebCore::AudioParamTimeline::processSetTarget):
(WebCore::AudioParamTimeline::processSetValueCurve):

  • Modules/webaudio/AudioParamTimeline.h:

(WebCore::AudioParamTimeline::ParamEvent::curve const):

  • WebCore.xcodeproj/project.pbxproj:
9:11 AM Changeset in webkit [268184] by Hector Lopez
  • 2 edits in trunk/LayoutTests

Test expectation correction
https://bugs.webkit.org/show_bug.cgi?id=167729

Unreviewed test gardening.

  • platform/mac/TestExpectations:
9:07 AM Changeset in webkit [268183] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION (r268138): [ Mojave+ wk1 ] imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-descendant-text-mutated-001.html is a flaky image failure
https://bugs.webkit.org/show_bug.cgi?id=217478

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
8:10 AM Changeset in webkit [268182] by Aditya Keerthi
  • 3 edits
    2 adds in trunk

[iOS] Blurring a text input and focusing a date input changes the scrollable area
https://bugs.webkit.org/show_bug.cgi?id=217325
<rdar://problem/69979171>

Reviewed by Wenson Hsieh.

Source/WebKit:

iOS 14 changed the presentation style of date/time pickers on iPhones.
Previously, date/time pickers would show up in the keyboard view. Now,
pickers are shown in UIContextMenus.

When the change was made, shouldShowKeyboardForElement in WKContentViewInteraction
was not updated to reflect the new behavior, and continued to return
true for date/time inputs.

This inaccuracy led to WKContentView ignoring the UIKeyboardWillHideNotification
when blurring a text input and focusing a date input, since it assumed
the keyboard would stay presented. Consequently, the UIScrollView
adjustments made when presenting the keyboard for the text input are not
reverted when presenting the date picker, leading to a permanent change
in the scrollable area.

To fix, update shouldShowKeyboardForElement to return false for date/time
inputs. Note that the original patch which changed the behavior
correctly updated [WKContentView requiresAccessoryView] but did not
update shouldShowKeyboardForElement. To prevent a similar mistake from
happening again, the logic which determines which input types have a
keyboard view was moved into elementTypeRequiresAccessoryView.

Test: fast/forms/ios/constant-scroll-area-when-moving-focus-between-fields.html

  • UIProcess/ios/WKContentViewInteraction.mm:

(elementTypeRequiresAccessoryView):
(-[WKContentView requiresAccessoryView]):
(shouldShowKeyboardForElement):

LayoutTests:

Added a regression test which focuses a text input, then focuses a date
input, and finally attempts to scroll the content.

  • fast/forms/ios/constant-scroll-area-when-moving-focus-between-fields-expected.txt: Added.
  • fast/forms/ios/constant-scroll-area-when-moving-focus-between-fields.html: Added.
6:45 AM Changeset in webkit [268181] by pvollan@apple.com
  • 5 edits in trunk

[macOS] Deny access to performance analysis service in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=217452
Source/WebKit:

<rdar://problem/68878318>

Reviewed by Youenn Fablet.

It has been confirmed that mach-lookup to 'com.apple.PerformanceAnalysis.animationperfd' can be denied in the WebContent process on macOS.

Test: fast/sandbox/sandbox-mach-lookup.html

  • WebProcess/com.apple.WebProcess.sb.in:

LayoutTests:

Reviewed by Youenn Fablet.

  • fast/sandbox/mac/sandbox-mach-lookup-expected.txt:
  • fast/sandbox/mac/sandbox-mach-lookup.html:
6:23 AM Changeset in webkit [268180] by Noam Rosenthal
  • 2 edits in trunk/LayoutTests

REGRESSION (r268138): [ iOS Mojave+ ] imported/w3c/web-platform-tests/css/css-masking/clip-path/svg-clipPath.svg is missing expected results
https://bugs.webkit.org/show_bug.cgi?id=217461
<rdar://problem/70074200>

Unreviewed, skipping a test resource file.

6:17 AM Changeset in webkit [268179] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Using the mixture of LayoutUnit and InlineLayoutUnit types causes ASSERT(verticalGap >= 0)
https://bugs.webkit.org/show_bug.cgi?id=217458

Reviewed by Antti Koivisto.

Line gap computation can produce an incorrect result when the LayoutUnit based lineLogicalTop
holds LayoutUnit::max() value while lineLogicalRect.bottom() (float atm) holds a larger value.
(This is a great opportunity to transition the line logical constraints to InlineRect(FloatRect)).

  • layout/inlineformatting/InlineFormattingContext.cpp:

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

  • layout/inlineformatting/InlineLineBuilder.cpp:

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

  • layout/inlineformatting/InlineLineBuilder.h:
5:49 AM Changeset in webkit [268178] by commit-queue@webkit.org
  • 4 edits in trunk

Fix image-loading-lazy-multiple-times.html
https://bugs.webkit.org/show_bug.cgi?id=216979

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

LayoutTests/imported/w3c:

Add improved test result.

  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-multiple-times-expected.txt:

Source/WebCore:

Once an image has been lazy loaded, it should be possible
to trigger a new lazy load through relevant mutations.

Test: imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-multiple-times.html

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::updateFromElement):

5:42 AM Changeset in webkit [268177] by youenn@apple.com
  • 3 edits in trunk/LayoutTests

Add a test case to verify WebRTC getCapabilities expose H264 profiles
https://bugs.webkit.org/show_bug.cgi?id=217464

Reviewed by Eric Carlson.

Validate the exposed profiles in sender/receiver getCapabilities.

  • webrtc/video-h264-expected.txt:
  • webrtc/video-h264.html:
5:40 AM Changeset in webkit [268176] by Lauro Moura
  • 6 edits in trunk

[GTK][WPE] Missing Exif Orientation support
https://bugs.webkit.org/show_bug.cgi?id=95299

Reviewed by Carlos Alberto Lopez Perez.

Source/WebCore:

CairoOperations::drawSurface is not taking 90/270 degrees orientation
changes in account correctly.

As in these operations the size of the surfaces will be the same but
not exactly equal (by transposing width and height), drawSurface
currently wrongly presumes the need for some some padding. The same
happens to the scale factors.

Covered by existing tests.

  • platform/graphics/cairo/CairoOperations.cpp:

(WebCore::Cairo::drawNativeImage): Forward usesWidthAsHeight to
drawSurface.
(WebCore::Cairo::drawSurface): use correct scaling/padding when
getting surfaces from images rotated 90/270 degrees.

  • platform/graphics/cairo/CairoOperations.h: Add new enum to forward

Orientation.usesWidthAsHeight.

LayoutTests:

Update expectations after partial EXIF support

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
12:57 AM Changeset in webkit [268175] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Replace unqualified use of PlatformDisplayID in WebViewImpl
https://bugs.webkit.org/show_bug.cgi?id=217422

Patch by Saagar Jha <saagar@saagarjha.com> on 2020-10-08
Reviewed by Youenn Fablet.

WebViewImpl utilizes things from WebCore but doesn't use the namespace, instead choosing to
qualify each reference. However, there is one use of WebCore::PlatformDisplayID that
doesn't use the the namespace qualifier. Usually this "works" because the code is in the
WebKit namespace, and other files that get included above this one often contain code of
the form

namespace WebKit {
using WebCore;
code
}

which hides the issue by making PlatformDisplayID visible to this file as well without the
prefix. If we use auto none of this matters because it'll deduce the prefix even if
WebViewImpl.mm ends up near the top of a unified source file, before another file with the
using declaration shows up.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::windowDidChangeScreen): Replace PlatformDisplayID with auto.

12:54 AM Changeset in webkit [268174] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

Web Inspector: inspector/cpu-profiler/threads.html, use only 4 decimal digits to compare total and workers usage
https://bugs.webkit.org/show_bug.cgi?id=195134

Reviewed by Darin Adler.

  • inspector/cpu-profiler/threads.html:
12:11 AM Changeset in webkit [268173] by graouts@webkit.org
  • 19 edits in trunk

Add support for non-accelerated animation of individual transform properties
https://bugs.webkit.org/show_bug.cgi?id=217429
<rdar://problem/70046645>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update WPT expectations after adding support for animating the rotate, scale and translate properties.

  • web-platform-tests/css/css-transforms/animation/rotate-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/rotate-interpolation-expected.txt:
  • web-platform-tests/css/css-transforms/animation/scale-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/scale-interpolation-expected.txt:
  • web-platform-tests/css/css-transforms/animation/translate-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/translate-interpolation-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

We add support for animating the rotate, scale and translate properties. The required changes were mainly to
add the relevant wrappers and blendFunc() implementations in CSSPropertyAnimation.cpp as well as improving
the computed style for those properties to match the "shortest serialization principle" from CSSOM so that
WPT tests would pass and not fail due to some incorrect computed style output.

We also had to update the rareNonInheritedDataChangeRequiresLayout() method such that layout may be required
when RenderStyle::diff() is called with changing values for rotate, scale or translate.

Additionally, since the rotate, scale and translate properties are currently enabled by a setting, we needed
to make sure that setting properties and values on the MutableStyleProperties objects during parsing of styles
provided through the Web Animations JS API had a CSSParserContext with knowledge of the current document
to access the settings.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc):
(WebCore::PropertyWrapperScale::PropertyWrapperScale):
(WebCore::PropertyWrapperRotate::PropertyWrapperRotate):
(WebCore::PropertyWrapperTranslate::PropertyWrapperTranslate):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • animation/KeyframeEffect.cpp:

(WebCore::processIterableKeyframes):
(WebCore::processPropertyIndexedKeyframes):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::computedTranslate):
(WebCore::computedScale):
(WebCore::computedRotate):

  • platform/graphics/transforms/RotateTransformOperation.h:
  • platform/graphics/transforms/ScaleTransformOperation.h:
  • platform/graphics/transforms/TranslateTransformOperation.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::rareNonInheritedDataChangeRequiresLayout):

  • rendering/style/StyleRareNonInheritedData.cpp:

(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator== const):

Note: See TracTimeline for information about the timeline view.