Timeline



Jan 21, 2020:

11:00 PM Changeset in webkit [254900] by commit-queue@webkit.org
  • 9 edits
    1 move
    1 add in trunk/Source/WebCore

Move ImageBuffer utilities function to separate files
https://bugs.webkit.org/show_bug.cgi?id=206519

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-01-21
Reviewed by Tim Horton.

These utilities function are merely related to the ImageData.

  • SourcesGTK.txt:
  • html/HTMLCanvasElement.cpp:
  • platform/SourcesCairo.txt:
  • platform/graphics/ImageBuffer.h:
  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::toData const):
(WebCore::writeFunction): Deleted.
(WebCore::encodeImage): Deleted.

  • platform/graphics/cairo/ImageBufferUtilitiesCairo.cpp: Added.

(WebCore::writeFunction):
(WebCore::encodeImage):
(WebCore::data):

  • platform/graphics/cairo/ImageBufferUtilitiesCairo.h: Added.
  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::jpegUTI): Deleted.
(WebCore::utiFromImageBufferMIMEType): Deleted.
(WebCore::encodeImage): Deleted.
(WebCore::dataURL): Deleted.
(WebCore::dataVector): Deleted.
(WebCore::cfData): Deleted.
(WebCore::data): Deleted.

  • platform/graphics/cg/ImageBufferDataCG.h:
  • platform/graphics/cg/ImageBufferUtilitiesCG.cpp:

(WebCore::jpegUTI):
(WebCore::utiFromImageBufferMIMEType):
(WebCore::encodeImage):
(WebCore::cfData):
(WebCore::dataURL):
(WebCore::dataVector):
(WebCore::data):

  • platform/graphics/cg/ImageBufferUtilitiesCG.h:
  • platform/graphics/gtk/ImageBufferGtk.cpp: Removed.
7:11 PM Changeset in webkit [254899] by Ross Kirsling
  • 5 edits in trunk/Source

[JSC] Date parse logic should be less redundant
https://bugs.webkit.org/show_bug.cgi?id=206560

Reviewed by Darin Adler.

Source/JavaScriptCore:

Our date parsing logic is doing an excessive amount of NaN-checking;
let's streamline this by having one JSC-side helper function instead of two.

  • runtime/JSDateMath.cpp:

(JSC::parseDate):
(JSC::parseDateFromNullTerminatedCharacters): Deleted.
(JSC::parseES5DateFromNullTerminatedCharacters): Deleted.

Source/WTF:

  • wtf/DateMath.cpp:

(WTF::parseDateFromNullTerminatedCharacters):

  • wtf/DateMath.h:

Align function signature with parseES5DateFromNullTerminatedCharacters.
Namely, drop the integer out param and flip the boolean one.

5:59 PM Changeset in webkit [254898] by Fujii Hironori
  • 9 edits
    2 adds in trunk

A partially selected RTL text is placed at a wrong vertical position if it has a vertical initial advance
https://bugs.webkit.org/show_bug.cgi?id=205990

Reviewed by Darin Adler.

Source/WebCore:

FontCascade::getGlyphsAndAdvancesForComplexText returned only X
position of the first glyph, but Y position.

Because GlyphBuffer is using glyph advances instead glyph
positions, it's not simple to get the first glyph position of the
part of a RTL texts.
FontCascade::getGlyphsAndAdvancesForComplexText is calculating the
X position of it by subtracting right side part width from the
total width. It should do same for Y position.

macOS and iOS ports don't use the code to draw selected texts.

Test: fast/text/initial-advance-selected-text.html

  • platform/graphics/ComplexTextController.cpp:

(WebCore::ComplexTextController::offsetForPosition):
(WebCore::ComplexTextController::adjustGlyphsAndAdvances):

  • platform/graphics/ComplexTextController.h: Replaced m_totalWidth with m_totalAdvance.

(WebCore::ComplexTextController::totalWidth const): Removed.
(WebCore::ComplexTextController::totalAdvance const): Added.

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::glyphBufferForTextRun const): Changed the return type from float to FloatSize.
(WebCore::FontCascade::drawText const):
(WebCore::FontCascade::displayListForTextRun const):
(WebCore::FontCascade::getGlyphsAndAdvancesForComplexText const): Changed the return type from float to FloatSize.
(WebCore::FontCascade::drawGlyphBuffer const):
(WebCore::FontCascade::floatWidthForComplexText const):
(WebCore::FontCascade::adjustSelectionRectForComplexText const):
(WebCore::FontCascade::drawEmphasisMarksForComplexText const):
(WebCore::FontCascade::dashesForIntersectionsWithRect const):

  • platform/graphics/FontCascade.h:
  • platform/graphics/GlyphBuffer.h:

(WebCore::toFloatSize): Added.

Tools:

  • TestWebKitAPI/Tests/WebCore/ComplexTextController.cpp:

Replaced all "controller.totalWidth()" with "controller.totalAdvance().width()".

LayoutTests:

  • fast/text/initial-advance-selected-text-expected.html: Added.
  • fast/text/initial-advance-selected-text.html: Added.
5:54 PM Changeset in webkit [254897] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[Win][WK2] Pressing space key on text input form scrolls the page
https://bugs.webkit.org/show_bug.cgi?id=201632

Reviewed by Ross Kirsling.

r223262 was add WebPage::performDefaultBehaviorForKeyEvent for
Windows port by copying GTK port's implementation. But, Windows
port is using unique key event processing. It dispatches
WebEvent::RawKeyDown and WebEvent::Char separately even though
other ports dispatch only WebEvent::KeyDown by unifying them.

Because WebPage::performDefaultBehaviorForKeyEvent handled
WebEvent::RawKeyDown of space key to scroll page, and consumed the
event, the keypress event of space key wasn't dispatched.

The keypress event of a space key is handled in
EventHandler::defaultSpaceEventHandler.
performDefaultBehaviorForKeyEvent don't need to do it.

Tests: Coverted by fast/events/space-scroll-event.html

  • WebProcess/WebPage/win/WebPageWin.cpp:

(WebKit::WebPage::performDefaultBehaviorForKeyEvent): Don't handle VK_SPACE.

5:45 PM Changeset in webkit [254896] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[EME] Only emit an array of persistent-usage-records when we discover > 1
https://bugs.webkit.org/show_bug.cgi?id=206205
<rdar://problem/58691769>

Patch by Jer Noble <jer.noble@apple.com> on 2020-01-21
Reviewed by Eric Carlson.

The persistent-usage-record cache should never have more than one record per sessionId, but
that assumption is not enforced in the file format. To not break clients that aren't
expecting a serialized plist array, only emit an array when more than one matching data item
is found.

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

(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::removeSessionData):

5:30 PM Changeset in webkit [254895] by achristensen@apple.com
  • 4 edits in trunk/Source/WebCore

Add missing NS_NOESCAPE to CFNetwork SPI
https://bugs.webkit.org/show_bug.cgi?id=206561
<rdar://problem/58774422>

Reviewed by Joe Pecoraro.

Source/WebCore:

  • platform/network/cocoa/NetworkStorageSessionCocoa.mm:

Source/WebCore/PAL:

  • pal/spi/cf/CFNetworkSPI.h:
5:25 PM Changeset in webkit [254894] by jiewen_tan@apple.com
  • 5 edits in trunk

[WebAuthn] Incorporate more detailed UnknownError messages for LocalAuthenticator
https://bugs.webkit.org/show_bug.cgi?id=191530

Reviewed by Brent Fulgham.

Source/WebKit:

This patch replaces UnknownError messages within LocalAuthenticator with the LOG_ERROR
messages. At the meantime, it enhances MockLocalConnection::getAttestation to return
errors instead of assertions.

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticator::makeCredential):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterUserConsented):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
(WebKit::LocalAuthenticator::getAssertion):
(WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented):

  • UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:

(WebKit::MockLocalConnection::getAttestation const):

LayoutTests:

  • http/wpt/webauthn/public-key-credential-create-failure-local.https.html:
4:26 PM Changeset in webkit [254893] by commit-queue@webkit.org
  • 36 edits
    2 copies in trunk/Source

Make RenderingMode and AlphaPremultiplication enum classes and move them to separate headers
https://bugs.webkit.org/show_bug.cgi?id=206516

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-01-21
Reviewed by Tim Horton.

Source/WebCore:

RenderingMode and AlphaPremultiplication need to be encoded and decoded
when they are sent from the WebProcess to the GPUProcess.

  • Headers.cmake:
  • Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:

(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::sanitizeDataIfNeeded):

  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneDeserializer::readImageBitmap):

  • css/CSSFilterImageValue.cpp:

(WebCore::CSSFilterImageValue::image):

  • html/CustomPaintCanvas.cpp:

(WebCore::CustomPaintCanvas::copiedImage const):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createImageBuffer const):

  • html/ImageBitmap.cpp:
  • html/OffscreenCanvas.cpp:

(WebCore::OffscreenCanvas::transferToImageBitmap):
(WebCore::OffscreenCanvas::createImageBuffer const):
(WebCore::OffscreenCanvas::takeImageBuffer const):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::createCompositingBuffer):
(WebCore::CanvasRenderingContext2DBase::createPattern):

  • html/canvas/ImageBitmapRenderingContext.cpp:

(WebCore::ImageBitmapRenderingContext::isAccelerated const):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::LRUImageBufferCache::imageBuffer):

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage):

  • page/FrameSnapshotting.cpp:

(WebCore::snapshotFrameRectWithClip):

  • platform/graphics/AlphaPremultiplication.h: Added.
  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::nativeImageForCurrentFrameRespectingOrientation):

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::renderingMode const):

  • platform/graphics/GraphicsTypes.cpp:
  • platform/graphics/GraphicsTypes.h:
  • platform/graphics/ImageBuffer.h:
  • platform/graphics/RenderingMode.h: Added.
  • platform/graphics/ShadowBlur.cpp:

(WebCore::ScratchBuffer::getScratchBuffer):
(WebCore::ShadowBlur::drawRectShadowWithoutTiling):
(WebCore::ShadowBlur::drawInsetShadowWithoutTiling):
(WebCore::ShadowBlur::drawRectShadowWithTiling):
(WebCore::ShadowBlur::drawInsetShadowWithTiling):
(WebCore::ShadowBlur::drawShadowLayer):

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBufferData::~ImageBufferData):
(WebCore::ImageBuffer::ImageBuffer):

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::ImageBuffer::ImageBuffer):

  • platform/graphics/cg/ImageBufferDataCG.h:
  • platform/graphics/filters/Filter.h:
  • platform/graphics/texmap/BitmapTexture.cpp:

(WebCore::BitmapTexture::updateContents):

  • platform/graphics/win/ImageBufferDirect2D.cpp:

(WebCore::ImageBuffer::ImageBuffer):

  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::imageBuffer const):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects const):

  • rendering/shapes/Shape.cpp:

(WebCore::Shape::createRasterShape):

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::applyClippingToContext):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::applyResource):

  • rendering/svg/RenderSVGResourceMasker.cpp:

(WebCore::RenderSVGResourceMasker::applyResource):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::nativeImageForCurrentFrame):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebContextMenuClient.mm:

(WebContextMenuClient::imageForCurrentSharingServicePickerItem):

4:08 PM Changeset in webkit [254892] by Chris Dumez
  • 9 edits in trunk/Source/WebKit

[IPC Hardening] Only process Messages::NetworkProcess messages when sent by the UIProcess
https://bugs.webkit.org/show_bug.cgi?id=206558
<rdar://problem/58733679>

Reviewed by Alex Christensen.

Port UpdateQuotaBasedOnSpaceUsageForTesting IPC from the NetworkProcess to the NetworkConnectionToWebProcess
since it is sent by the WebContent process. As a result, we can now stop forwarding all Messages::NetworkProcess
IPC messages from the WebContent process to the NetworkProcess class.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
(WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage):
(WebKit::NetworkConnectionToWebProcess::updateQuotaBasedOnSpaceUsageForTesting):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::didReceiveMessage):
(WebKit::NetworkProcess::didReceiveSyncMessage):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • Platform/IPC/StringReference.h:

(IPC::StringReference::operator!=):

  • WebProcess/Cache/WebCacheStorageConnection.cpp:

(WebKit::WebCacheStorageConnection::updateQuotaBasedOnSpaceUsage):

3:53 PM Changeset in webkit [254891] by Alan Coon
  • 1 copy in tags/Safari-608.5.12

Tag Safari-608.5.12.

3:38 PM Changeset in webkit [254890] by commit-queue@webkit.org
  • 46 edits in trunk

Unreviewed, rolling out r254807 and r254849.
https://bugs.webkit.org/show_bug.cgi?id=206559

Broke page up/page down on macOW (Requested by smfr on
#webkit).

Reverted changesets:

"Add support for scroll behavior relies on ScrollAnimation of
the Web process"
https://bugs.webkit.org/show_bug.cgi?id=204882
https://trac.webkit.org/changeset/254807

"Add support for scroll behavior relies on ScrollAnimation of
the Web process"
https://bugs.webkit.org/show_bug.cgi?id=204882
https://trac.webkit.org/changeset/254849

3:33 PM Changeset in webkit [254889] by Alan Coon
  • 1 copy in tags/Safari-609.1.15

Tag Safari-609.1.15.

3:32 PM Changeset in webkit [254888] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

imported/w3c/web-platform-tests/html/dom/idlharness.worker.html is timing out on Mojave wk1 debug EWS
https://bugs.webkit.org/show_bug.cgi?id=206503

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations: Mark the test as failing to speed up EWS while we investigate.
3:27 PM Changeset in webkit [254887] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Build fix.

  • rendering/updating/RenderTreeBuilderInline.cpp:

Add missing include.

3:10 PM Changeset in webkit [254886] by dbates@webkit.org
  • 18 edits
    2 adds in trunk

Add Legacy WebKit SPI and WebKit IPI to show and hide placeholder
https://bugs.webkit.org/show_bug.cgi?id=206459
<rdar://problem/58700534>

Reviewed by Wenson Hsieh.

Source/WebCore:

Adds setter and getter to update whether the placeholder can be shown.

Test: fast/forms/placeholder-show-and-hide-via-setCanShowPlaceholder.html

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::HTMLTextFormControlElement): Initialize state. Default to can show
the placeholder to keep the behavior we have currently.
(WebCore::HTMLTextFormControlElement::placeholderShouldBeVisible const): Modified to account for m_canShowPlaceholder.
(WebCore::HTMLTextFormControlElement::setCanShowPlaceholder): Added. Update state and invalidate style.

  • html/HTMLTextFormControlElement.h:

(WebCore::HTMLTextFormControlElement::canShowPlaceholder const): Added.

  • testing/Internals.cpp:

(WebCore::Internals::setCanShowPlaceholder): Added. For testing purposes.

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit:

Add Modern WebKit IPI to control whether the placeholder can be shown or not when a form
control is empty. This is for aesthetics.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setCanShowPlaceholder): Added.

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setCanShowPlaceholder): Added. Maps the input text to its element. If it's
a HTML text form control element then calls through to HTMLTextFormControlElement::setCanShowPlaceholder().

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

Added new message.

Source/WebKitLegacy/mac:

Add Legacy WebKit SPI to allow a client to control whether the placeholder can be shown or
not when a form control is empty. This is for aesthetics.

  • DOM/DOMHTMLInputElement.mm:

(-[DOMHTMLInputElement canShowPlaceholder]): Added.
(-[DOMHTMLInputElement setCanShowPlaceholder:]): Added.

  • DOM/DOMHTMLInputElementPrivate.h:
  • DOM/DOMHTMLTextAreaElement.mm:

(-[DOMHTMLTextAreaElement canShowPlaceholder]): Added.
(-[DOMHTMLTextAreaElement setCanShowPlaceholder:]): Added.

  • DOM/DOMHTMLTextAreaElementPrivate.h:

LayoutTests:

Adds a new test to ensure that HTMLTextFormControlElement::setCanShowPlaceholder() works.

  • fast/forms/placeholder-show-and-hide-via-setCanShowPlaceholder-expected.txt: Added.
  • fast/forms/placeholder-show-and-hide-via-setCanShowPlaceholder.html: Added.
2:57 PM Changeset in webkit [254885] by sihui_liu@apple.com
  • 2 edits in trunk/Tools

REGRESSION (r254856?): [Win] http/tests/security/same-origin-websql-blocked.html and 2 fast/dom/Window/window-function-* tests failing
https://bugs.webkit.org/show_bug.cgi?id=206552

Unreviewed fix after r254856. r254856 wanted to enable WebSQL on layout tests but enableWebSQL was set to false.

  • DumpRenderTree/TestOptions.h:
2:51 PM Changeset in webkit [254884] by jiewen_tan@apple.com
  • 6 edits in trunk

ProvisionalPageProxy::loadData should pass last navigation's shouldOpenExternalURLsPolicy flag to WebPageProxy
https://bugs.webkit.org/show_bug.cgi?id=206462
<rdar://problem/57468718>

Reviewed by Chris Dumez.

Source/WebKit:

Covered by API tests.

This patch also does it for ProvisionalPageProxy::loadRequest.

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::loadData):
(WebKit::ProvisionalPageProxy::loadRequest):

  • UIProcess/ProvisionalPageProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::continueNavigationInNewProcess):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(TestWebKitAPI::TEST):

2:33 PM Changeset in webkit [254883] by commit-queue@webkit.org
  • 22 edits in trunk

Add build flag for stale-while-revalidate
https://bugs.webkit.org/show_bug.cgi?id=204169

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

.:

Add build flag for stale-while-revalidate to make it
independent from the NETWORK_CACHE_SPECULATIVE_REVALIDATION build flag.

  • Source/cmake/OptionsFTW.cmake:
  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

  • Configurations/FeatureDefines.xcconfig:
  • NetworkProcess/cache/AsyncRevalidation.cpp:
  • NetworkProcess/cache/AsyncRevalidation.h:
  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::responseNeedsRevalidation):
(WebKit::NetworkCache::makeStoreDecision):
(WebKit::NetworkCache::Cache::retrieve):

  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
2:13 PM Changeset in webkit [254882] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

IPC::Decoder should use nullptr as invalid value
<https://webkit.org/b/203880>
<rdar://problem/53159906>

Follow-up fix noticed by Chris Dumez.

  • Platform/IPC/Decoder.cpp:

(IPC::alignedBufferIsLargeEnoughToContain): Fix typo in comment.

2:05 PM Changeset in webkit [254881] by ysuzuki@apple.com
  • 19 edits in trunk

[WTF] AtomStringTable should be small
https://bugs.webkit.org/show_bug.cgi?id=206400

Reviewed by Sam Weinig.

Source/WebCore:

  • dom/GCReachableRef.h:

(WebCore::GCReachableRef::GCReachableRef):

  • dom/QualifiedName.h:

(WebCore::QualifiedName::hashTableDeletedValue):

Source/WTF:

AtomStringTable is the largest hashtable typically. It takes more
than 256KB per WebProcess (sometimes, it took 1MB or more).
This patch leverages PackedPtr to compact it from 8 bytes per entry
to 6 bytes per entry.

While this is still large, we should investigate how to compact C++
pointers in 4 bytes[1] to shrink memory footprint, since WebKit
memory is used by Vector and HashTable fulfilled with pointers.

[1]: https://bugs.webkit.org/show_bug.cgi?id=206469

  • wtf/DumbPtrTraits.h:

(WTF::DumbPtrTraits::hashTableDeletedValue):
(WTF::DumbPtrTraits::isHashTableDeletedValue):

  • wtf/Forward.h:
  • wtf/HashTraits.h:
  • wtf/Packed.h:

(WTF::Packed<T::Packed):
(WTF::Packed<T::isHashTableDeletedValue const):
(WTF::GetPtrHelper<PackedPtr<T>>::getPtr):
(WTF::PackedPtrTraits::hashTableDeletedValue):
(WTF::PackedPtrTraits::isHashTableDeletedValue):
(WTF::alignof): Deleted.

  • wtf/Ref.h:

(WTF::Ref::Ref):
(WTF::Ref::isHashTableDeletedValue const):
(WTF::Ref::hashTableDeletedValue): Deleted.

  • wtf/RefPtr.h:

(WTF::RefPtr::RefPtr):
(WTF::RefPtr::isHashTableDeletedValue const):
(WTF::RefPtr::hashTableDeletedValue): Deleted.

  • wtf/text/AtomStringImpl.cpp:

(WTF::addToStringTable):
(WTF::CStringTranslator::equal):
(WTF::CStringTranslator::translate):
(WTF::UCharBufferTranslator::equal):
(WTF::UCharBufferTranslator::translate):
(WTF::HashAndUTF8CharactersTranslator::equal):
(WTF::HashAndUTF8CharactersTranslator::translate):
(WTF::SubstringTranslator::translate):
(WTF::SubstringTranslator8::equal):
(WTF::SubstringTranslator16::equal):
(WTF::LCharBufferTranslator::equal):
(WTF::LCharBufferTranslator::translate):
(WTF::BufferFromStaticDataTranslator::equal):
(WTF::BufferFromStaticDataTranslator::translate):
(WTF::AtomStringImpl::addSlowCase):
(WTF::AtomStringImpl::remove):
(WTF::AtomStringImpl::lookUpSlowCase):
(WTF::AtomStringImpl::lookUp):

  • wtf/text/AtomStringTable.cpp:

(WTF::AtomStringTable::~AtomStringTable):

  • wtf/text/AtomStringTable.h:

(WTF::AtomStringTable::table):
(): Deleted.

  • wtf/text/StringHash.h:

(WTF::StringHash::hash):
(WTF::StringHash::equal):
(WTF::ASCIICaseInsensitiveHash::hash):
(WTF::ASCIICaseInsensitiveHash::equal):

  • wtf/text/StringImpl.h:

Tools:

  • TestWebKitAPI/Tests/WTF/HashMap.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/HashSet.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/Packed.cpp:

(TestWebKitAPI::TEST):

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

[macOS] Add managed preference to allow synchronous XHR during page dismissal
https://bugs.webkit.org/show_bug.cgi?id=206540
<rdar://problem/58644447>

Reviewed by Alex Christensen.

Add managed preference to allow synchronous XHR during page dismissal. This is temporarily needed by some
enterprise products until they can update their code.

  • Shared/WebPreferences.yaml:
  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultDisallowSyncXHRDuringPageDismissalEnabled):

  • Shared/WebPreferencesDefaultValues.h:
2:02 PM Changeset in webkit [254879] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit

Unreviewed, rolling out r254876.

Broke Catalina builds.

Reverted changeset:

"Fix SDK availability macros"
https://bugs.webkit.org/show_bug.cgi?id=206463
https://trac.webkit.org/changeset/254876

1:44 PM Changeset in webkit [254878] by commit-queue@webkit.org
  • 10 edits
    2 moves in trunk/Source

[iPad] YouTube does not automatically AirPlay when a route is selected from Control Center
https://bugs.webkit.org/show_bug.cgi?id=206539
Source/WebCore:

Patch by Jer Noble <jer.noble@apple.com> on 2020-01-21
Reviewed by Eric Carlson.

No new tests; change affects an interaction with two platform features (local AirPlay
route picking and actual remote playback over AirPlay routes) that is not testable in
an automated fashion.

The underlying source of the bug is the difference in how the platform communitcates that an
AirPlay route was picked between iOS and macOS. On iOS, route changes are global and are
generally pushed up from AVPlayer notifications. On macOS, route changes are local to the
app and are pushed down from the UIProcess. But when MSE playback was enabled on iPadOS,
there was now a limbo where media playback was no longer using an AVPlayer, but at the same
time, route changes could be initiated globally. The end result is that MSE-based media
elements are never notified that they "should play to playback target", and no remote
playback events are ever fired.

To re-create the same macOS behavior when MSE-backed media elements are used on iPadOS,
re-use the existing route change detection logic in MediaSessionManageriOS to query whether
the newly established route supports AirPlay Video, and if so, send a message to the "now
playing" media element that it should begin AirPlaying, which will fail, but will trigger
the YouTube player to switch to a HLS-backed media element.

This requires renaming MediaPlaybackTargetMac -> MediaPlaybackTargetCocoa.

  • SourcesCocoa.txt:
  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/audio/ios/MediaSessionManagerIOS.h:
  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::MediaSessionManageriOS::activeVideoRouteDidChange):
(-[WebMediaSessionHelper activeAudioRouteDidChange:]):

  • platform/graphics/avfoundation/MediaPlaybackTargetCocoa.h: Renamed from Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.h.

(WebCore::MediaPlaybackTargetCocoa::outputContext const):

  • platform/graphics/avfoundation/MediaPlaybackTargetCocoa.mm: Renamed from Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.mm.

(WebCore::MediaPlaybackTargetCocoa::create):
(WebCore::MediaPlaybackTargetCocoa::MediaPlaybackTargetCocoa):
(WebCore::MediaPlaybackTargetCocoa::~MediaPlaybackTargetCocoa):
(WebCore::MediaPlaybackTargetCocoa::targetContext const):
(WebCore::MediaPlaybackTargetCocoa::hasActiveRoute const):
(WebCore::MediaPlaybackTargetCocoa::deviceName const):
(WebCore::toMediaPlaybackTargetCocoa):

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

(WebCore::MediaPlaybackTargetPickerMac::playbackTarget):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget):

Source/WebKit:

<rdar://problem/54173689>

Patch by Jer Noble <jer.noble@apple.com> on 2020-01-21
Reviewed by Eric Carlson.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::playbackTargetSelected const):

1:25 PM Changeset in webkit [254877] by commit-queue@webkit.org
  • 17 edits in trunk

Add SPI on WKURLSchemeTask to access WKFrameInfo of originating frame
https://bugs.webkit.org/show_bug.cgi?id=204265
<rdar://57193883>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-01-21
Reviewed by Brady Eidson.

Source/WebKit:

Covered by API tests.

  • Shared/URLSchemeTaskParameters.cpp:

(WebKit::URLSchemeTaskParameters::encode const):
(WebKit::URLSchemeTaskParameters::decode):

  • Shared/URLSchemeTaskParameters.h:
  • UIProcess/API/Cocoa/WKURLSchemeTask.mm:

(-[WKURLSchemeTaskImpl _frame]):

  • UIProcess/API/Cocoa/WKURLSchemeTaskPrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::startURLSchemeTaskShared):
(WebKit::WebPageProxy::loadSynchronousURLSchemeTask):

  • UIProcess/WebURLSchemeHandler.cpp:

(WebKit::WebURLSchemeHandler::startTask):

  • UIProcess/WebURLSchemeHandler.h:
  • UIProcess/WebURLSchemeTask.cpp:

(WebKit::WebURLSchemeTask::create):
(WebKit::WebURLSchemeTask::WebURLSchemeTask):

  • UIProcess/WebURLSchemeTask.h:

(WebKit::WebURLSchemeTask::frameInfo const):

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::tryLoadingUsingURLSchemeHandler):

  • WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:

(WebKit::WebURLSchemeHandlerProxy::startNewTask):

  • WebProcess/WebPage/WebURLSchemeHandlerProxy.h:
  • WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:

(WebKit::WebURLSchemeTaskProxy::WebURLSchemeTaskProxy):
(WebKit::WebURLSchemeTaskProxy::startLoading):
(WebKit::WebURLSchemeTaskProxy::stopLoading):
(WebKit::WebURLSchemeTaskProxy::didComplete):
(WebKit::WebURLSchemeTaskProxy::hasLoader):

  • WebProcess/WebPage/WebURLSchemeTaskProxy.h:

(WebKit::WebURLSchemeTaskProxy::create):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:

(-[FrameSchemeHandler waitForAllRequests]):
(-[FrameSchemeHandler setExpectedWebView:]):
(-[FrameSchemeHandler webView:startURLSchemeTask:]):
(-[FrameSchemeHandler webView:stopURLSchemeTask:]):

1:12 PM Changeset in webkit [254876] by Keith Rollin
  • 2 edits in trunk/Source/WebKit

Fix SDK availability macros
https://bugs.webkit.org/show_bug.cgi?id=206463
<rdar://problem/58581906>

Reviewed by Timothy Hatcher.

Bug 197841 updated WebKit.xcconfig with regards to when it runs a
header post-processing script. This post-processing script grovels
over our exported headers, changing macros like WK_API_AVAILABLE to
the standard API_AVAILABLE. Because of the change in Bug 197841, the
script was no longer being run when preparing macOS 10.15 SDKs, which
was breaking those SDKs. Fix this by reverting the change, allowing
the macros to be replaced for macOS 10.15.

No new tests - no added or changed functionality.

  • Configurations/WebKit.xcconfig:
1:08 PM Changeset in webkit [254875] by Antti Koivisto
  • 12 edits in trunk/Source/WebCore

[LFC] Typed accessors for formatting states
https://bugs.webkit.org/show_bug.cgi?id=206538

Reviewed by Zalan Bujtas.

Almost all clients know what sort of formatting state they want and immediately cast it.

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):

  • layout/LayoutContext.cpp:

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

  • layout/LayoutState.cpp:

(WebCore::Layout::LayoutState::formattingStateForBox const):
(WebCore::Layout::LayoutState::establishedFormattingState const):
(WebCore::Layout::LayoutState::establishedInlineFormattingState const):
(WebCore::Layout::LayoutState::establishedBlockFormattingState const):
(WebCore::Layout::LayoutState::establishedTableFormattingState const):

Typed function for getting established states.

(WebCore::Layout::LayoutState::ensureFormattingState):
(WebCore::Layout::LayoutState::ensureInlineFormattingState):

Also add a fast path for integrated layout.

(WebCore::Layout::LayoutState::ensureBlockFormattingState):
(WebCore::Layout::LayoutState::ensureTableFormattingState):

Typed function for creating states.

(WebCore::Layout::LayoutState::createFormattingStateForFormattingRootIfNeeded): Deleted.

  • layout/LayoutState.h:

(WebCore::Layout::LayoutState::hasInlineFormattingState const):
(WebCore::Layout::LayoutState::hasFormattingState const): Deleted.

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough const):

  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::paintSubtree):
(WebCore::Display::Painter::paintInlineFlow):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::alignContentVertically):
(WebCore::Layout::LineBuilder::adjustBaselineAndLineHeight):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

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

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::outputInlineRuns):

1:07 PM Changeset in webkit [254874] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

macCatalyst: Two-finger click is dispatched to DOM as left click
https://bugs.webkit.org/show_bug.cgi?id=206549

Reviewed by Simon Fraser.

  • UIProcess/ios/WKMouseGestureRecognizer.mm:

(-[WKMouseGestureRecognizer createMouseEventWithType:forEvent:]):
(-[WKMouseGestureRecognizer touchesBegan:withEvent:]):
(-[WKMouseGestureRecognizer touchesMoved:withEvent:]):
(-[WKMouseGestureRecognizer touchesEnded:withEvent:]):
(-[WKMouseGestureRecognizer _hoverEntered:withEvent:]):
(-[WKMouseGestureRecognizer _hoverMoved:withEvent:]):
(-[WKMouseGestureRecognizer _hoverExited:withEvent:]):
(-[WKMouseGestureRecognizer createMouseEventWithType:]): Deleted.
We correctly say button=2 for ctrl-click, but not for secondary-button click.

12:58 PM Changeset in webkit [254873] by achristensen@apple.com
  • 11 edits in trunk/Source/WebKit

Revert suppressesConnectionTerminationOnSystemChange part of r254081
https://bugs.webkit.org/show_bug.cgi?id=205751
<rdar://problem/58725096>

There was an API client that still hadn't migrated to the replacement SPI.

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::suppressesConnectionTerminationOnSystemChange const):

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::copy):

  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:

(-[_WKProcessPoolConfiguration suppressesConnectionTerminationOnSystemChange]):
(-[_WKProcessPoolConfiguration setSuppressesConnectionTerminationOnSystemChange:]):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

12:34 PM Changeset in webkit [254872] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

Performance tests fail if stderr logging is encountered
https://bugs.webkit.org/show_bug.cgi?id=206544
<rdar://problem/58714766>

Reviewed by Per Arne Vollan.

Switch to LOG_ERROR, rather than WTFLogAlways, to avoid confusing the PerformanceTests system.

  • Shared/Cocoa/SandboxExtensionCocoa.mm:

(WebKit::SandboxExtension::createHandleForReadByAuditToken):

12:33 PM Changeset in webkit [254871] by basuke.suzuki@sony.com
  • 3 edits in trunk/Source/bmalloc

[bmalloc] Make use of LockHolder strict in some methods of Scavenger
https://bugs.webkit.org/show_bug.cgi?id=206460

Reviewed by Darin Adler.

For instance, Scavenger::runHoldingLock() assume the caller has lock and express that by its function name. This rule can be
strict by passing LockHolder and that's the way as other code do.

Same change to runSoonHoldingLock and scheduleIfUnderMemoryPressureHoldingLock.

  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::run):
(bmalloc::Scavenger::runSoon):
(bmalloc::Scavenger::scheduleIfUnderMemoryPressure):
(bmalloc::Scavenger::schedule):
(bmalloc::Scavenger::runHoldingLock): Renamed.
(bmalloc::Scavenger::runSoonHoldingLock): Renamed.
(bmalloc::Scavenger::scheduleIfUnderMemoryPressureHoldingLock): Renamed.

  • bmalloc/Scavenger.h:
12:05 PM Changeset in webkit [254870] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[ews] commit-queue should check cq+ flag
https://bugs.webkit.org/show_bug.cgi?id=206530

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

ValidatePatch._is_patch_cq_plus): Method to check cq+ flag on patch.
(ValidatePatch.start):

  • BuildSlaveSupport/ews-build/factories.py:
  • BuildSlaveSupport/ews-build/factories_unittest.py: Updated unit-tests.
11:48 AM Changeset in webkit [254869] by Justin Fan
  • 10 edits in trunk

[WebGL2] Sampler objects
https://bugs.webkit.org/show_bug.cgi?id=126941
<rdar://problem/15002402>

Source/WebCore:

Implement enough of Samplers to pass the "samplers" conformance tests with ANGLE enabled.

Reviewed by Dean Jackson.

Covered by webgl/2.0.0/conformance2/samplers directory of tests.

  • bindings/js/JSDOMConvertWebGL.cpp:

(WebCore::convertToJSValue):

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::WebGL2RenderingContext):
(WebCore::WebGL2RenderingContext::initializeSamplerCache):
(WebCore::WebGL2RenderingContext::createSampler):
(WebCore::WebGL2RenderingContext::deleteSampler):
(WebCore::WebGL2RenderingContext::isSampler):
(WebCore::WebGL2RenderingContext::bindSampler):
(WebCore::WebGL2RenderingContext::samplerParameteri):
(WebCore::WebGL2RenderingContext::samplerParameterf):
(WebCore::WebGL2RenderingContext::getSamplerParameter):
(WebCore::WebGL2RenderingContext::bindTransformFeedback):
(WebCore::WebGL2RenderingContext::getParameter):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGLAny.h:
  • html/canvas/WebGLSampler.cpp:

(WebCore::WebGLSampler::WebGLSampler):
(WebCore::WebGLSampler::deleteObjectImpl):

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::createSampler):
(WebCore::GraphicsContextGLOpenGL::deleteSampler):
(WebCore::GraphicsContextGLOpenGL::isSampler):
(WebCore::GraphicsContextGLOpenGL::bindSampler):
(WebCore::GraphicsContextGLOpenGL::samplerParameteri):
(WebCore::GraphicsContextGLOpenGL::samplerParameterf):
(WebCore::GraphicsContextGLOpenGL::getSamplerParameterfv):
(WebCore::GraphicsContextGLOpenGL::getSamplerParameteriv):

LayoutTests:

Reviewed by Dean Jackson.

Update to passing expectations, though these tests remain skipped until ANGLE backend is enabled.

  • webgl/2.0.0/conformance2/samplers/sampler-drawing-test-expected.txt:
  • webgl/2.0.0/conformance2/samplers/samplers-expected.txt:
11:40 AM Changeset in webkit [254868] by Keith Rollin
  • 9 edits in trunk

Fix tvOS values in SUPPORTED_PLATFORMS
https://bugs.webkit.org/show_bug.cgi?id=206435
<rdar://problem/58674587>

Reviewed by Alexey Proskuryakov.

A number of targets in WebKit have 'tvos' and 'tvsimulator' in
SUPPORTED_PLATFORMS. The correct values are 'appletvos' and
'appletvsimulator'. These should be updated to the correct ones as the
wrong values prevent the tvOS run destination from being usable in the
UI to build for tvOS.

Source/ThirdParty:

  • gtest/xcode/Config/General.xcconfig:

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:

Tools:

  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • ImageDiff/cg/Configurations/Base.xcconfig:
  • MiniBrowser/Configurations/Base.xcconfig:
  • WebKitTestRunner/Configurations/Base.xcconfig:
11:36 AM Changeset in webkit [254867] by youenn@apple.com
  • 6 edits in trunk/Source/WebKit

Provide camera/microphone sandbox extensions to GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=206531

Reviewed by Eric Carlson.

Send at creation of GPUProcess sandbox extensions to camera and microphone.
This is currently gated by the UIProcess application being Safari.
This should be changed to checks based on camera/microphone entitlements.

Extensions are provided at creation of the GPUProcess as it is as trusted as the UIProcess.
We do not make it conditional to getUserMedia being enabled as GPUProcess may be created for more than one configuration.

Relax the GPUProcess sandbox on MacOS to allow microphone access until we can use microphone sandbox extension for that purpose.

Manually tested by capturing audio/video with real devices.

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::initializeGPUProcess):

  • GPUProcess/GPUProcessCreationParameters.cpp:

(WebKit::GPUProcessCreationParameters::encode const):
(WebKit::GPUProcessCreationParameters::decode):

  • GPUProcess/GPUProcessCreationParameters.h:
  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::isSafari):
(WebKit::shouldCreateCameraSandboxExtension):
(WebKit::shouldCreateMicrophoneSandboxExtension):
(WebKit::GPUProcessProxy::singleton):

11:36 AM Changeset in webkit [254866] by Tadeu Zagallo
  • 3 edits
    1 add in trunk

JSTests:
Object allocation sinking is missing PutHint for allocations unreachable in the graph
https://bugs.webkit.org/show_bug.cgi?id=203799
<rdar://problem/56852162>

Reviewed by Saam Barati.

  • stress/allocation-sinking-puthint-control-flow-2.js: Added.

(f.handler.construct):
(f):

Source/JavaScriptCore:
Object allocation sinking is missing PutHint for sunken allocations
https://bugs.webkit.org/show_bug.cgi?id=203799
<rdar://problem/56852162>

Reviewed by Saam Barati.

Consider the following graph:

Block #0:

1: PhantomCreateActivation()
2: PhantomNewFunction()
PutHint(@2, @1, FunctionActivationPLoc)
Branch(#1, #2)

Block #1:

3: MaterializeCreateActivation()
PutHint(@2, @3, FunctionActivationPLoc)
Upsilon(@3, 5)
Jump(#3)

Block #2:

4: MaterializeCreateActivation()
PutHint(@2, @4, FunctionActivationPLoc)
Upsilon(@4, 5)
Jump(#3)

Block #3:

5: Phi()
ExitOK()

On Block #3, we need to emit a PutHint after the Phi, since we might exit after it. However,
object allocation sinking skipped this Phi because it was checking whether the base of the
location that caused us to create this Phi (@2) was live, but it's dead in the graph (there
are no pointers to it). The issue is that, even though there are no pointers to the base, the
location PromotedHeapLocation(@2, FunctionActivationPLoc) is still live, so we should PutHint
to it. We fix it by checking for liveness of the location rather than its base.

  • dfg/DFGObjectAllocationSinkingPhase.cpp:
11:30 AM Changeset in webkit [254865] by Alan Coon
  • 183 edits
    7 deletes in branches/safari-609-branch

Cherry-pick r254632. rdar://problem/58764714

Revert bytecode checkpoints since it breaks watch
https://bugs.webkit.org/show_bug.cgi?id=206301

Unreviewed, revert.

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

11:16 AM Changeset in webkit [254864] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r254125. rdar://problem/58353217

Fix non GPUProcess build issue in UserMediaCaptureManager
https://bugs.webkit.org/show_bug.cgi?id=205851

Reviewed by Eric Carlson.

Build fix, no change of behavior.

  • WebProcess/cocoa/UserMediaCaptureManager.cpp: (WebKit::UserMediaCaptureManager::Source::connection):

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

10:58 AM Changeset in webkit [254863] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Disallow setting SVGElement currentScale to non-finite values
https://bugs.webkit.org/show_bug.cgi?id=206019

Align SVGElement currentScale definition to SVG2 section 5.14.2
(https://www.w3.org/TR/SVG2/struct.html#InterfaceSVGSVGElement)

Patch by Sunny He <sunny_he@apple.com> on 2020-01-21
Reviewed by Darin Adler.

Source/WebCore:

Test: svg/dom/set-currentScale-nonfinite.html

  • svg/SVGSVGElement.idl:

LayoutTests:

  • svg/dom/set-currentScale-nonfinite-expected.txt: Added.
  • svg/dom/set-currentScale-nonfinite.html: Added.
10:42 AM Changeset in webkit [254862] by beidson@apple.com
  • 8 edits in trunk/Source/WebKit

API::(User)ContentWorld cleanup
https://bugs.webkit.org/show_bug.cgi?id=206509

Reviewed by Darin Adler.

No behavior change.

  • Give (User)ContentWorld a shared base class for upcoming work.
  • Reference them by identifier instead of object instance whenever possible.
  • Other shared class cleanup.
  • UIProcess/API/APIContentWorld.cpp:

(API::ContentWorldBase::generateIdentifier):
(API::ContentWorld::ContentWorld):
(API::ContentWorld::~ContentWorld):

  • UIProcess/API/APIContentWorld.h:

(API::ContentWorldBase::identifier const):
(API::ContentWorldBase::name const):
(API::ContentWorldBase::worldData const):
(API::ContentWorldBase::ContentWorldBase):

  • UIProcess/API/APIUserContentWorld.cpp:

(API::UserContentWorld::UserContentWorld):
(API::UserContentWorld::generateIdentifier): Deleted.

  • UIProcess/API/APIUserContentWorld.h:
  • UIProcess/UserContent/WebScriptMessageHandler.h:

(WebKit::WebScriptMessageHandler::world):
(WebKit::WebScriptMessageHandler::userContentWorld const): Deleted.
(WebKit::WebScriptMessageHandler::userContentWorld): Deleted.

  • UIProcess/UserContent/WebUserContentControllerProxy.cpp:

(WebKit::WebUserContentControllerProxy::addProcess):
(WebKit::WebUserContentControllerProxy::addUserContentWorldUse):
(WebKit::WebUserContentControllerProxy::shouldSendRemoveUserContentWorldsMessage):
(WebKit::WebUserContentControllerProxy::addUserScriptMessageHandler):
(WebKit::WebUserContentControllerProxy::removeUserMessageHandlerForName):
(WebKit::WebUserContentControllerProxy::removeAllUserMessageHandlers):

  • UIProcess/UserContent/WebUserContentControllerProxy.h:
10:28 AM Changeset in webkit [254861] by commit-queue@webkit.org
  • 26 edits
    16 adds in trunk

-webkit-image-set should support all the image functions WebKit supports, not just url()
https://bugs.webkit.org/show_bug.cgi?id=81941

Patch by Noam Rosenthal <Noam Rosenthal> on 2020-01-21
Reviewed by Darin Adler.

Source/WebCore:

Separate StyleCachedImage to 4 classes:

  • StyleCachedImage: for single images only
  • StyleMultiImage: for values that can contain multiple images: like cursor/image-set
  • StyleImageSet
  • StyleCursorImage

The new classes only deal with their own value type. Before, ImageSet and cursor were resolved
as a StyleCachedImage, which is no longer a valid assumption if image-set can contain generated images.
Though cursors still can only contain cached images, it was cleaner to refactor it out as well.

Refactored best-fit image selection from loading. Now StyleCachedImage is in charge of loading
the actual image, and StyleImageSet/StyleCursorImage perform the source selection.

Also, added the necessary logic in the CSS parser to consume generated images inside image-sets, excluding
when the image-set is a cursor value.

Tests: fast/css/image-set-parsing-generated.html

fast/hidpi/image-set-cross-fade.html
fast/hidpi/image-set-gradient-multi.html
fast/hidpi/image-set-gradient-single.html
fast/hidpi/image-set-gradient.html

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Added new files

  • css/CSSCursorImageValue.cpp:

(WebCore::CSSCursorImageValue::selectBestFitImage):
(WebCore::CSSCursorImageValue::loadImage): Deleted.

  • css/CSSCursorImageValue.h:

Instead of cursor loading the image, it selects an image CSS value

  • css/CSSImageSetValue.cpp:

(WebCore::CSSImageSetValue::CSSImageSetValue):
(WebCore::CSSImageSetValue::fillImageSet):
(WebCore::CSSImageSetValue::cachedImage const):
(WebCore::CSSImageSetValue::selectBestFitImage):
(WebCore::CSSImageSetValue::updateDeviceScaleFactor):
(WebCore::CSSImageSetValue::imageSetWithStylesResolved):
(WebCore::CSSImageSetValue::traverseSubresources const):
(WebCore::CSSImageSetValue::loadBestFitImage): Deleted.

  • css/CSSImageSetValue.h:

Refactor CSSImageSetValue to include non-cachedImage images

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeCursor):

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::consumeImageSet):
(WebCore::CSSPropertyParserHelpers::consumeImage):
(WebCore::CSSPropertyParserHelpers::consumeUrlOrStringAsStringView): Deleted.

  • css/parser/CSSPropertyParserHelpers.h:
  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc):

When blending two images, get the selected images in case it is an image-set

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/RenderImageResourceStyleImage.cpp:

(WebCore::RenderImageResourceStyleImage::initialize):

  • rendering/RenderLayerBacking.cpp:

(WebCore::canDirectlyCompositeBackgroundBackgroundImage):

  • rendering/style/ShapeValue.cpp:

(WebCore::ShapeValue::isImageValid const):

Use hasCachedImage() instead of isCachedImage() as a StyleImageSet is no longer an isCachedImage()

  • rendering/style/StyleCachedImage.cpp:

(WebCore::StyleCachedImage::StyleCachedImage):
(WebCore::StyleCachedImage::imageURL):
(WebCore::StyleCachedImage::load):

  • rendering/style/StyleCachedImage.h:
  • rendering/style/StyleCursorImage.h:
  • rendering/style/StyleCursorImage.cpp:
  • rendering/style/StyleMultiImage.h:
  • rendering/style/StyleMultiImage.cpp:
  • rendering/style/StyleImageSet.h:
  • rendering/style/StyleImageSet.cpp:
  • rendering/style/StyleImage.h:

(WebCore::StyleImage::selectedImage):
(WebCore::StyleImage::selectedImage const):
(WebCore::StyleImage::isCursorImage const):
(WebCore::StyleImage::isImageSet const):
(WebCore::StyleImage::hasCachedImage const):
(WebCore::StyleImage::StyleImage):

Separate cursor/image-set related stuff away from StyleCachedImage.

  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyValueContent):

  • style/StyleBuilderState.cpp:

(WebCore::Style::BuilderState::resolveImageStyles):
(WebCore::Style::BuilderState::createStyleImage):

  • style/StyleBuilderState.h:

Match the CSS values with the correct Style class. Also, ensure image-sets resolve their
images' styles as they may contain gradients and other context-aware values.

LayoutTests:

  • fast/css/cursor-parsing-expected.txt:
  • fast/css/cursor-parsing.html:

Added parsing test to ensure arrow image-sets disable generated images

  • fast/css/image-set-parsing-generated-expected.txt: Added.
  • fast/css/image-set-parsing-generated.html: Added.
  • fast/css/image-set-parsing-invalid-expected.txt:
  • fast/css/image-set-parsing-invalid.html:

Added parsing tests for new generated-inside-image-set use cases
Test that image-set inside image-set is not supported

  • fast/hidpi/image-set-cross-fade-expected.html: Added.
  • fast/hidpi/image-set-cross-fade.html: Added.
  • fast/hidpi/image-set-gradient-expected.html: Added.
  • fast/hidpi/image-set-gradient-multi-expected.html: Added.
  • fast/hidpi/image-set-gradient-multi.html: Added.
  • fast/hidpi/image-set-gradient-single-expected.html: Added.
  • fast/hidpi/image-set-gradient-single.html: Added.
  • fast/hidpi/image-set-gradient.html: Added.

Added ref-tests for several generated-inside-image-set use-cases

10:07 AM Changeset in webkit [254860] by Chris Dumez
  • 2 edits
    2 adds in trunk/LayoutTests

Regression r254652: fast/xmlhttprequest/xmlhttprequest-multiple-sync-xhr-during-unload.html fails on windows
https://bugs.webkit.org/show_bug.cgi?id=206474

Unreviewed, land Windows-specific baseline and unskip the test.

  • platform/win/TestExpectations:
  • platform/win/fast/xmlhttprequest/xmlhttprequest-multiple-sync-xhr-during-unload-expected.txt: Added.
9:57 AM Changeset in webkit [254859] by Chris Dumez
  • 15 edits in trunk/Source

Minor improvements to StorageAreaMap
https://bugs.webkit.org/show_bug.cgi?id=206433

Reviewed by Darin Adler.

Source/WebCore:

Use inline initialization for some of StorageMap's data member.
Also specify uint8_t as underlying type of StorageType enum class for better packing.

  • inspector/InspectorInstrumentation.h:
  • storage/StorageArea.h:
  • storage/StorageMap.cpp:

(WebCore::StorageMap::StorageMap):

  • storage/StorageMap.h:
  • storage/StorageType.h:

Source/WebKit:

Minor improvements to StorageAreaMap:

  1. The class does not need to be RefCounted, as it is solely owned by StorageNamespaceImpl. Having it RefCounted was actually dangerous because StorageAreaMap had a raw pointer data member to its owner: m_storageNamespace. This raw pointer could become stale if you extend the lifetime of the StorageAreaMap object to outlive its StorageNamespaceImpl.
  2. Make StorageAreaMap::connect() private as it is never called from outside the class
  3. Reorder data members for better packing
  4. Use modern loops in the implementation
  5. Rename loadValuesIfNeeded() to ensureStorageMap() and have it return the StorageMap object. This makes calls site more concise and it makes it clearer when this method needs to be called.
  6. Mark class as final
  7. Replace LOG_ERROR() with RELEASE_LOG_ERROR() so that we can see error logging in sysdiagnoses
  8. Use more references instead of raw pointers to make it clear when null checks are not needed
  • WebProcess/WebStorage/StorageAreaImpl.cpp:

(WebKit::StorageAreaImpl::create):
(WebKit::StorageAreaImpl::StorageAreaImpl):

  • WebProcess/WebStorage/StorageAreaImpl.h:
  • WebProcess/WebStorage/StorageAreaMap.cpp:

(WebKit::StorageAreaMap::StorageAreaMap):
(WebKit::StorageAreaMap::length):
(WebKit::StorageAreaMap::key):
(WebKit::StorageAreaMap::item):
(WebKit::StorageAreaMap::setItem):
(WebKit::StorageAreaMap::removeItem):
(WebKit::StorageAreaMap::clear):
(WebKit::StorageAreaMap::contains):
(WebKit::StorageAreaMap::resetValues):
(WebKit::StorageAreaMap::ensureStorageMap):
(WebKit::StorageAreaMap::applyChange):
(WebKit::StorageAreaMap::dispatchSessionStorageEvent):
(WebKit::StorageAreaMap::dispatchLocalStorageEvent):
(WebKit::StorageAreaMap::connect):
(WebKit::StorageAreaMap::disconnect):

  • WebProcess/WebStorage/StorageAreaMap.h:
  • WebProcess/WebStorage/StorageAreaMap.messages.in:
  • WebProcess/WebStorage/StorageNamespaceImpl.cpp:

(WebKit::StorageNamespaceImpl::storageArea):

  • WebProcess/WebStorage/StorageNamespaceImpl.h:
9:55 AM Changeset in webkit [254858] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, add comment to make it clearer that the code restored in r254857 is not dead

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::prewarmLocalStorageIfNecessary):

9:52 AM Changeset in webkit [254857] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Unreviewed, rolling out r254753.

It turns out this is not dead code

Reverted changeset:

"Drop dead code related to local storage prewarming"
https://bugs.webkit.org/show_bug.cgi?id=206418
https://trac.webkit.org/changeset/254753

9:51 AM Changeset in webkit [254856] by sihui_liu@apple.com
  • 17 edits in trunk

Disable WebSQL everywhere by default except in tests
https://bugs.webkit.org/show_bug.cgi?id=204907

Reviewed by Ryosuke Niwa.

Source/WebCore:

No new tests. All WebSQL tests are enabled for now.

  • page/RuntimeEnabledFeatures.h:

Source/WebKitLegacy/mac:

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

(+[WebPreferences initialize]):
(-[WebPreferences webSQLEnabled]):
(-[WebPreferences setWebSQLEnabled:]):

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

(-[WebView _preferencesChanged:]):

Source/WebKitLegacy/win:

  • Interfaces/IWebPreferencesPrivate.idl:
  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings):
(WebPreferences::webSQLEnabled):
(WebPreferences::setWebSQLEnabled):

  • WebPreferences.h:
  • WebView.cpp:

(WebView::notifyPreferencesChanged):

Tools:

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

(resetWebPreferencesToConsistentValues):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(setWebPreferencesForTestOptions):

9:05 AM Changeset in webkit [254855] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Add build and layout-test steps for commit-queue in new ews
https://bugs.webkit.org/show_bug.cgi?id=206510

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/factories.py:
8:12 AM Changeset in webkit [254854] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GTK][WPE] Gardening, mark remote-playback tests as failure
https://bugs.webkit.org/show_bug.cgi?id=206529

Unreviewed gardening.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
8:07 AM Changeset in webkit [254853] by Antti Koivisto
  • 7 edits in trunk/Source/WebCore

[LFC][Integration] Use InlineFormattingContext directly
https://bugs.webkit.org/show_bug.cgi?id=206526

Reviewed by Zalan Bujtas.

Stop using LayoutContext (which is more of a full tree layout thing) and use InlineFormattingContext directly instead.
This has a side benefit of not needing to setup a root display box.

  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::layoutFormattingContextSubtree):

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::LineLayout):
(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::displayInlineContent const):
(WebCore::LayoutIntegration::LineLayout::prepareRootGeometryForLayout): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/tableformatting/TableFormattingContext.h:
7:39 AM Changeset in webkit [254852] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] TestWebKitUserContentFilterStore is crashing
https://bugs.webkit.org/show_bug.cgi?id=206527

Patch by Alejandro G. Castro <alex@igalia.com> on 2020-01-21
Reviewed by Adrian Perez de Castro.

We are asserting looking for a category of error when converting
in the toGError function, but depending on the function called the
category can be different.

  • UIProcess/API/glib/WebKitUserContentFilterStore.cpp:

(toGError):
(webkitUserContentFilterStoreSaveBytes): Moved the ASSERT to the
function that uses this category, the other functions calling
toGError were already ASSERTing the correct category.

7:38 AM Changeset in webkit [254851] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Layout Test fast/xmlhttprequest/xmlhttprequest-multiple-sync-xhr-during-unload.html is failing
https://bugs.webkit.org/show_bug.cgi?id=206515

Unreviewed test gardening.

  • platform/win/TestExpectations:
5:30 AM Changeset in webkit [254850] by commit-queue@webkit.org
  • 2 edits
    1 add in trunk/LayoutTests/imported/w3c

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

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

Fix fetch/api/policies/referrer-origin-worker.html by adding
referrer-origin-worker.html.headers, which got lost in the
automated import process.

  • web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt:
  • web-platform-tests/fetch/api/policies/referrer-origin-worker.html.headers: Added.
4:25 AM Changeset in webkit [254849] by cathiechen
  • 46 edits in trunk

Add support for scroll behavior relies on ScrollAnimation of the Web process
https://bugs.webkit.org/show_bug.cgi?id=204882

Reviewed by Frédéric Wang

Based on the patch by Frédéric Wang.

LayoutTests/imported/w3c:

Enable CSSOMViewSmoothScrollingEnabled on scroll behavior tests and update expectations.

  • web-platform-tests/css/cssom-view/scroll-behavior-default-css-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-default-css.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-element-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-element.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-root-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-window-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html:

Source/WebCore:

This patch introduces a programmatic smooth scrolling in WebKit from the CSSOM View
specification [1]. To use this effect, web developers can pass a behavior parameter (auto,
smooth, or instant) to Element.scroll, Element.scrollTo, Element.scrollBy,
Element.scrollIntoView, Window.scroll, Window.scrollTo or Window.scrollBy [2]. When behavior
is auto, the instant/smooth characteristic is actually taken from the value of a new CSS
scroll-behavior property [3]. Both the new CSS and DOM behavior are protected by a runtime
flag.

[1] https://drafts.csswg.org/cssom-view
[2] https://drafts.csswg.org/cssom-view/#dictdef-scrolloptions
[3] https://drafts.csswg.org/cssom-view/#propdef-scroll-behavior

Tests: imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-default-css.html

imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-element.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html

  • Sources.txt: Build ScrollAnimationSmooth.cpp on all platforms.
  • SourcesGTK.txt: Remove ScrollAnimationSmooth.cpp since it is built on all platforms now.
  • dom/Element.cpp:

(WebCore::Element::scrollIntoView): Pass scroll behavior, if any.
(WebCore::Element::scrollBy):
(WebCore::Element::scrollTo): Handle the case when scroll behavior is smooth.
(WebCore::Element::setScrollLeft): Handle the case when scroll behavior is smooth.
(WebCore::Element::setScrollTop): Handle the case when scroll behavior is smooth.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::scrollBy const):
(WebCore::DOMWindow::scrollTo const): Handle the case when scroll behavior is smooth.
The optimization of cancel (0, 0) scrolling is skipped if an animated scroll is in progress.
Otherwise, the previous scroll won't be stopped by a follow-up scroll.

  • page/FrameView.cpp:

(WebCore::FrameView::setScrollPosition):
(WebCore::FrameView::scrollToOffsetWithAnimation): Start an animated scroll.

  • page/FrameView.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):

  • platform/ScrollAnimation.h:

(WebCore::ScrollAnimation::scroll): Function to animate scrolling to a specified position.

  • platform/ScrollAnimationSmooth.cpp: Build this file on all platforms. Add a

smoothFactorForProgrammaticScroll parameter to slow down the smooth scrolling.
(WebCore::ScrollAnimationSmooth::scroll):
(WebCore::ScrollAnimationSmooth::updatePerAxisData): Scale the time parameters of the
animation so that it looks smoother.

  • platform/ScrollAnimationSmooth.h: Declare the class on all platforms.
  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::ScrollAnimator): Initialize animation member for programmatic scrolling.
(WebCore::ScrollAnimator::scrollToOffset): Animate scrolling to the specified position.
(WebCore::ScrollAnimator::cancelAnimations): Copy logic from ScrollAnimationSmooth.cpp.
(WebCore::ScrollAnimator::serviceScrollAnimations): Ditto.
(WebCore::ScrollAnimator::willEndLiveResize): Ditto.
(WebCore::ScrollAnimator::didAddVerticalScrollbar): Ditto.
(WebCore::ScrollAnimator::didAddHorizontalScrollbar): Ditto.

  • platform/ScrollAnimator.h: New animation member for smooth programmatic scrolling.

(WebCore::ScrollAnimator::ScrollAnimator::cancelAnimations): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::serviceScrollAnimations): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::willEndLiveResize): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::didAddVerticalScrollbar): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::didAddHorizontalScrollbar): Deleted.

  • platform/ScrollTypes.h: Add ScrollBehaviorStatus to indicate the status of scrolling.
  • platform/ScrollView.cpp:

(WebCore::ScrollView::setScrollPosition): Follow the CSSOM View spec: If a scroll is in
progress, we interrupt it and continue the scroll call (even when we are at the final position).

  • platform/ScrollView.h:
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::scrollToOffsetWithAnimation):
(WebCore::ScrollableArea::setScrollOffsetFromInternals):
(WebCore::ScrollableArea::setScrollOffsetFromAnimation): To avoid iterate calling,
move the requestScrollPositionUpdate(position) checking out of setScrollOffsetFromAnimation().

  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::currentScrollBehaviorStatus const): Maintain currentScrollBehaviorStatus.
(WebCore::ScrollableArea::setScrollBehaviorStatus):

  • platform/generic/ScrollAnimatorGeneric.cpp:

(WebCore::ScrollAnimatorGeneric::updatePosition):

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::cancelAnimations): Call parent member to handle programmatic scrolling.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::setScrollLeft): Add flag to indicate animated or not.
(WebCore::RenderBox::setScrollTop): Ditto.
(WebCore::RenderBox::setScrollPosition):

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

(WebCore::RenderLayer::scrollToXPosition): Ditto.
(WebCore::RenderLayer::scrollToYPosition): Ditto.
(WebCore::RenderLayer::scrollToPosition):
(WebCore::RenderLayer::scrollToOffset): Follow the CSSOM View spec: If a scroll is in
progress, we interrupt it and continue the scroll call (even when we are at the final
position). It's ScrollBehaviorType::Instant scroll.
(WebCore::RenderLayer::requestScrollPositionUpdate):
(WebCore::RenderLayer::scrollToOffsetWithAnimation): Ditto. This is similar to scrollToOffset
but animates the scroll. It's ScrollBehaviorType::Smooth scroll.
(WebCore::RenderLayer::scrollTo):
(WebCore::RenderLayer::scrollRectToVisible): Again don't do an early return if scroll is in
progress. We call scrollToOffsetWithAnimation instead of scrollToOffset when appropriate.
Note that this function may not work well for several nested scroll boxes with at least one
element with smooth behavior. It will handled in bug Follow.

  • rendering/RenderLayer.h: Add scroll behavior to ScrollTectToVisibleOptions.
  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::setScrollLeft): Add animated flag.
(WebCore::RenderListBox::setScrollTop): Ditto.

  • rendering/RenderListBox.h:
  • rendering/RenderTextControlSingleLine.cpp:

(WebCore::RenderTextControlSingleLine::setScrollLeft):
(WebCore::RenderTextControlSingleLine::setScrollTop):

  • rendering/RenderTextControlSingleLine.h:
  • testing/Internals.cpp:

(WebCore::Internals::unconstrainedScrollTo):

LayoutTests:

  • platform/mac-wk1/TestExpectations: Skip these tests on WK1 as they don't work for now.
3:28 AM Changeset in webkit [254848] by Carlos Garcia Campos
  • 4 edits in trunk

[GTK][WPE] Enable WebGL by default
https://bugs.webkit.org/show_bug.cgi?id=205335

Reviewed by Adrian Perez de Castro.

Source/WebKit:

  • UIProcess/API/glib/WebKitSettings.cpp:

(webkit_settings_class_init):

Tools:

Update the unit test.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:

(testWebKitSettings):

3:15 AM Changeset in webkit [254847] by Carlos Garcia Campos
  • 4 edits in trunk

[GTK][WPE] Enable WebAudio by default
https://bugs.webkit.org/show_bug.cgi?id=205334

Reviewed by Adrian Perez de Castro.

Source/WebKit:

  • UIProcess/API/glib/WebKitSettings.cpp:

(webkit_settings_class_init):

Tools:

Update the unit test.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:

(testWebKitSettings):

1:41 AM Changeset in webkit [254846] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Rename JSPromiseFields abstract heap to JSInternalFields.
https://bugs.webkit.org/show_bug.cgi?id=206518
<rdar://problem/58751778>

Reviewed by Yusuke Suzuki.

This is because it is used for all internal fields, not just the ones in JSPromise.

  • dfg/DFGAbstractHeap.h:
  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

12:03 AM Changeset in webkit [254845] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Log the destination of a load when hitting network process
https://bugs.webkit.org/show_bug.cgi?id=206422

Reviewed by Darin Adler.

  • NetworkProcess/NetworkResourceLoader.cpp:

No change of behavior, adding more precise logging.

Jan 20, 2020:

11:21 PM Changeset in webkit [254844] by Diego Pino Garcia
  • 2 edits
    8 adds in trunk/LayoutTests

[GTK] Gardening, update TestExpectations and baselines
https://bugs.webkit.org/show_bug.cgi?id=206501

Unreviewed gardening.

  • platform/gtk/TestExpectations:
  • platform/gtk/compositing/visibility/visibility-change-in-subframe-expected.txt: Added.
  • platform/gtk/editing/input/scroll-to-edge-if-line-break-at-end-of-document-contenteditable-expected.txt: Added.
  • platform/gtk/fast/block/basic/fieldset-stretch-to-legend-expected.txt: Added.
  • platform/gtk/js/dom/navigator-maxtouchpoints-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/color-prop-02-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/color-prop-03-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.txt: Added.
8:01 PM Changeset in webkit [254843] by weinig@apple.com
  • 40 edits in trunk

Platform.h is out of control Part 8: Macros are used inconsistently
https://bugs.webkit.org/show_bug.cgi?id=206425

Reviewed by Darin Adler.

Source/bmalloc:

  • bmalloc/BPlatform.h:

Update OS_EFFECTIVE_ADDRESS_WIDTH to match WTF definition, add needed OS macros.

Source/JavaScriptCore:

  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::cacheFlush):
(JSC::ARM64Assembler::xOrSp):
(JSC::ARM64Assembler::xOrZr):

  • assembler/ARM64Registers.h:
  • assembler/ARMv7Assembler.h:

(JSC::ARMv7Assembler::cacheFlush):

  • assembler/ARMv7Registers.h:
  • assembler/AssemblerCommon.h:

(JSC::isDarwin):

  • b3/air/AirCCallingConvention.cpp:
  • jit/ExecutableAllocator.h:
  • jit/ThunkGenerators.cpp:
  • jsc.cpp:
  • runtime/MathCommon.cpp:

Use OS(DARWIN) more consistently for darwin level functionality.

  • bytecode/CodeOrigin.h:
  • runtime/JSString.h:

Update to use OS_CONSTANT.

  • disassembler/ARM64/A64DOpcode.cpp:
  • disassembler/ARM64Disassembler.cpp:
  • disassembler/UDis86Disassembler.cpp:
  • disassembler/UDis86Disassembler.h:
  • disassembler/X86Disassembler.cpp:
  • disassembler/udis86/udis86.c:
  • disassembler/udis86/udis86_decode.c:
  • disassembler/udis86/udis86_itab_holder.c:
  • disassembler/udis86/udis86_syn-att.c:
  • disassembler/udis86/udis86_syn-intel.c:
  • disassembler/udis86/udis86_syn.c:
  • interpreter/Interpreter.cpp:
  • interpreter/Interpreter.h:
  • interpreter/InterpreterInlines.h:

(JSC::Interpreter::getOpcodeID):

  • llint/LowLevelInterpreter.cpp:
  • tools/SigillCrashAnalyzer.cpp:

Switch to using ENABLE rather than USE for features internal to WebKit

Source/WTF:

Start addressing FIXMEs added to Platform.h (and helper files) during previous
cleanup work.

  • Renames WTF_CPU_EFFECTIVE_ADDRESS_WIDTH to WTF_OS_CONSTANT_EFFECTIVE_ADDRESS_WIDTH, making it available via new macro OS_CONSTANT(...), and syncs bmalloc redefinition.
  • Renames:

USE_LLINT_EMBEDDED_OPCODE_ID to ENABLE_LLINT_EMBEDDED_OPCODE_ID
USE_UDIS86 to ENABLE_UDIS86
USE_ARM64_DISASSEMBLER to ENABLE_ARM64_DISASSEMBLER

Enable is more appropriate here as these enable functionality within webkit.

  • Removes undefs that are no longer needed due to only defining the macro once now.
  • Removes dead defined(LP64) check after PLATFORM(MAC) macOS is always 64-bit these days.
  • wtf/Packed.h:

(WTF::alignof):

  • wtf/Platform.h:
  • wtf/PlatformEnable.h:
  • wtf/PlatformOS.h:
  • wtf/WTFAssertions.cpp:
  • wtf/text/StringCommon.h:

Tools:

  • TestWebKitAPI/Tests/WTF/Packed.cpp:

(TestWebKitAPI::TEST):
Update to use OS_CONSTANT.

7:48 PM Changeset in webkit [254842] by commit-queue@webkit.org
  • 9 edits
    1 add in trunk

Remove own toString from NativeError prototype
https://bugs.webkit.org/show_bug.cgi?id=204629

Patch by Gus Caplan <me@gus.host> on 2020-01-20
Reviewed by Ross Kirsling.

NativeError prototypes are expected to inherit toString from
Error.prototype. See https://github.com/tc39/ecma262/issues/1794
for additional details.

JSTests:

  • stress/nativeerror-prototype-tostring.js:

Source/JavaScriptCore:

  • runtime/ErrorPrototype.cpp:

(JSC::ErrorPrototypeBase::ErrorPrototypeBase):
(JSC::ErrorPrototypeBase::finishCreation):
(JSC::ErrorPrototype::ErrorPrototype):
(JSC::ErrorPrototype::create): Deleted.
(JSC::ErrorPrototype::finishCreation): Deleted.

  • runtime/ErrorPrototype.h:

(JSC::ErrorPrototype::createStructure): Deleted.

  • runtime/NativeErrorPrototype.cpp:

(JSC::NativeErrorPrototype::NativeErrorPrototype):

  • runtime/NativeErrorPrototype.h:

LayoutTests:

  • http/tests/security/regress-52192-expected.txt:
  • http/tests/security/regress-52192.html:
6:54 PM Changeset in webkit [254841] by commit-queue@webkit.org
  • 9 edits
    6 adds in trunk

EXIF orientation is ignored for some CSS images
https://bugs.webkit.org/show_bug.cgi?id=203355

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-01-20
Reviewed by Simon Fraser.

Source/WebCore:

Unlike GraphicsContext::drawNativeImage(), GraphicsContext::drawPattern()
can't change the coordinates system before drawing the image to respect
the EXIF orientation. Drawing a pattern tries to fill the destination
rectangle with the image according to the GraphicsContext origin and the
direction of its axes. So we need to create temporary NativeImage with
respecting the EXIF orientation and then use it to draw the pattern.

Tests: fast/images/exif-orientation-background-image-no-repeat.html

fast/images/exif-orientation-background-image-repeat.html
fast/images/exif-orientation-border-image.html

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::nativeImageForCurrentFrameRespectingOrientation):
(WebCore::BitmapImage::drawPattern):

  • platform/graphics/BitmapImage.h:
  • platform/graphics/Image.h:

(WebCore::Image::nativeImage):
(WebCore::Image::nativeImageForCurrentFrameRespectingOrientation):
(WebCore::Image::nativeImageOfSize):

  • platform/graphics/ImageBuffer.h:
  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::drawPattern):

  • platform/graphics/cg/NativeImageCG.cpp:

(WebCore::drawNativeImage):

  • rendering/style/NinePieceImage.cpp:

(WebCore::NinePieceImage::paint const):

LayoutTests:

  • fast/images/exif-orientation-background-image-no-repeat-expected.html: Added.
  • fast/images/exif-orientation-background-image-no-repeat.html: Added.
  • fast/images/exif-orientation-background-image-repeat-expected.html: Added.
  • fast/images/exif-orientation-background-image-repeat.html: Added.
  • fast/images/exif-orientation-border-image-expected.html: Added.
  • fast/images/exif-orientation-border-image.html: Added.
5:48 PM Changeset in webkit [254840] by mjs@apple.com
  • 2 edits in trunk/Source/WebCore

Update status of Resize Observer to "Supported In Preview"
https://bugs.webkit.org/show_bug.cgi?id=206513

Reviewed by Darin Adler.

No new tests. Just updating status.

  • features.json: Update Resize Observer to "Supported In Preview"
5:35 PM Changeset in webkit [254839] by Fujii Hironori
  • 47 edits in trunk

Unreviewed, rolling out r254807.

Breaks Apple internal builds.

Reverted changeset:

"Add support for scroll behavior relies on ScrollAnimation of
the Web process"
https://bugs.webkit.org/show_bug.cgi?id=204882
https://trac.webkit.org/changeset/254807

3:55 PM Changeset in webkit [254838] by sbarati@apple.com
  • 2 edits in trunk/Tools

REGRESSION(r254788): mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla fails
https://bugs.webkit.org/show_bug.cgi?id=206477
<rdar://problem/58714886>

Unreviewed.

In r232603 when we added test specific options, the implementation did not
clear the test specific options before parsing each test inside a yaml
file. It only worked for tests where we ran each js file inside a directory.
This patch makes it also work for yaml files.

  • Scripts/run-jsc-stress-tests:
3:32 PM Changeset in webkit [254837] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] InlineFormattingContext::lineLayout should take a InlineItem range
https://bugs.webkit.org/show_bug.cgi?id=206507
<rdar://problem/58742468>

Reviewed by Antti Koivisto.

This is in preparation for being able to run inline layout on partial IFC content.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):

  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::nextWrapOpportunity):
(WebCore::Layout::LineLayoutContext::layoutLine):
(WebCore::Layout::LineLayoutContext::close):
(WebCore::Layout::LineLayoutContext::nextContentForLine):

  • layout/inlineformatting/LineLayoutContext.h:
1:21 PM Changeset in webkit [254836] by ddkilzer@apple.com
  • 42 edits
    5 deletes in trunk

Fix missing header guards and clean up empty files in WebCore, WebKitLegacy, WebKit, Tools
<https://webkit.org/b/206505>

Reviewed by Eric Carlson.

Source/WebCore:

  • bindings/js/StructuredClone.h:
  • bridge/npruntime_internal.h:
  • editing/cocoa/AutofillElements.h:
  • platform/graphics/FormatConverter.h:
  • platform/graphics/ImageBufferData.h:
  • platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h:
  • platform/ios/wak/WebCoreThreadSystemInterface.h:
  • platform/network/mac/WebCoreURLResponse.h:
  • Add #pragma once statement.
  • platform/cocoa/SystemVersion.h:
  • platform/mac/WebNSAttributedStringExtras.h:
  • Add @class declarations as hint that this header is only used by Objective-C[++] source files.
  • platform/mediastream/libwebrtc/VideoToolBoxDecoderFactory.cpp: Remove.
  • platform/mediastream/libwebrtc/VideoToolBoxDecoderFactory.h: Remove.
  • platform/mediastream/libwebrtc/VideoToolBoxEncoderFactory.cpp: Remove.
  • platform/mediastream/libwebrtc/VideoToolBoxEncoderFactory.h: Remove.
  • Remove unused, empty files.
  • platform/network/HTTPStatusCodes.h: Remove.
  • Remove unused header.

Source/WebCore/PAL:

  • pal/ios/QuickLookSoftLink.h:
  • pal/spi/ios/SQLite3SPI.h:
  • Add #pragma once statement.

Source/WebKit:

  • Platform/IPC/Attachment.h:
  • Fix "# pragma" formatting. (It functioned, but WebKit style doesn't indent macros like this.)
  • Platform/ios/AccessibilityIOS.h:
  • Shared/ShareSheetCallbackID.h:
  • Shared/mac/SecItemShim.h:
  • UIProcess/API/C/WKPageRenderingProgressEventsInternal.h:
  • UIProcess/API/Cocoa/WKNavigationData.h:
  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/API/Cocoa/WKWebArchive.h:
  • Add #pragma once statement.

Source/WebKitLegacy:

  • WebCoreSupport/WebViewGroup.h:
  • Add #pragma once statement.

Source/WebKitLegacy/mac:

  • Misc/WebKitStatisticsPrivate.h:
  • Misc/WebLocalizableStrings.h: Modernize OBJC and cplusplus checks.
  • Misc/WebTypesInternal.h:
  • WebView/WebMediaPlaybackTargetPicker.h:
  • Add #pragma once statement.

Source/WebKitLegacy/win:

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebContextMenuClient.h:
  • WebCoreSupport/WebDesktopNotificationsDelegate.h:
  • WebCoreSupport/WebDragClient.h:
  • WebDocumentLoader.h:
  • WebKitStatisticsPrivate.h:
  • WebPreferenceKeysPrivate.h:
  • Add #pragma once statement.

Tools:

  • DumpRenderTree/TestNetscapePlugIn/TestObject.h:
  • TestWebKitAPI/JavaScriptTest.h:
  • TestWebKitAPI/Tests/WebCore/DFAHelpers.h:
  • Add #pragma once statement.
1:00 PM Changeset in webkit [254835] by Devin Rousso
  • 4 edits in trunk/LayoutTests

inspector/heap/getRemoteObject.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=156077
<rdar://problem/25469998>

Reviewed by Darin Adler.

Instead of blindly assuming that the first object is the window global object, iterate all
the objects found by WI.HeapSnapshotProxy.prototype.instancesWithClassName and check that
we see at least one window global object.

  • inspector/heap/getRemoteObject.html:
  • inspector/heap/getRemoteObject-expected.txt:
  • platform/mac-wk2/TestExpectations:
12:51 PM Changeset in webkit [254834] by Devin Rousso
  • 4 edits in trunk/LayoutTests

REGRESSION (r250655?): [ Mac Debug ] inspector/runtime/promise-native-getter.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=206303
<rdar://problem/58612520>

Reviewed by Darin Adler.

Rework the test to not be reliant on real world timing.

  • inspector/runtime/promise-native-getter.html:
  • inspector/runtime/promise-native-getter-expected.txt:
  • platform/mac/TestExpectations:
12:24 PM Changeset in webkit [254833] by Wenson Hsieh
  • 2 edits
    2 adds in trunk/LayoutTests

Add a test to verify that the callout bar appears after selecting a word
https://bugs.webkit.org/show_bug.cgi?id=206488
<rdar://problem/58661768>

Reviewed by Darin Adler.

  • editing/selection/ios/show-callout-bar-after-selecting-word-expected.txt: Added.
  • editing/selection/ios/show-callout-bar-after-selecting-word.html: Added.

Add the new layout test.

  • resources/ui-helper.js:

(window.UIHelper.rectForMenuAction):

Wrap this UI script in its own function scope, such that it can be used multiple times in the same layout test.

12:17 PM Changeset in webkit [254832] by ddkilzer@apple.com
  • 10 edits
    4 deletes in trunk/Source

Fix missing header guards and clean up empty files in bmalloc, WTF, JavaScriptCore
<https://webkit.org/b/206481>

Reviewed by Darin Adler.

Source/bmalloc:

  • bmalloc/PerThread.cpp: Remove empty file.
  • bmalloc/ScopeExit.h: Add #pragma once.

Source/JavaScriptCore:

  • dfg/DFGPrePostNumbering.cpp: Remove empty file.
  • dfg/DFGPrePostNumbering.h: Remove empty file.
  • runtime/OptionEntry.h: Remove empty file.
  • API/JSCallbackObjectFunctions.h:
  • b3/testb3.h:
  • heap/IsoInlinedHeapCellType.h:
  • wasm/WasmGeneratorTraits.h:
  • Add #pragma once.

Source/WTF:

  • wtf/cocoa/Entitlements.h:
  • wtf/win/PathWalker.h:
  • Add #pragma once.
10:07 AM Changeset in webkit [254831] by ddkilzer@apple.com
  • 3 edits in trunk/Tools

check-webkit-style: Improve header guard checks
<https://webkit.org/b/206480>

Reviewed by Darin Adler.

  • Scripts/webkitpy/style/checkers/cpp.py:

(check_for_header_guard):

  • Add file_path (filename) argument to check for config.h and *Prefix.h headers.
  • Use hints in header file to determine if this is a header file only used by Objective-C or not.
  • Change #ifndef/#define check to use both lines instead of assuming a format for the macro.
  • Emit new 'build/header_guard_missing' error.

(_process_lines):

  • Pass filename argument to check_for_header_guard().

(CppChecker):

  • Enable new 'build/header_guard_missing' check.
  • Scripts/webkitpy/style/checkers/cpp_unittest.py:

(CppStyleTestBase.perform_header_guard_check):
(CppStyleTestBase.assert_header_guard):

  • Move default filename argument from perform_header_guard_check() to assert_header_guard() so tests may pass in different values for header paths.

(CppStyleTest):

  • Add tests for config.h, *Prefix.h headers.
  • Update test for `build/header_guard' (legacy header guard) error.
  • Update test for missing header guard so that it now expects a 'build/header_guard_missing' error message.
  • Add tests for Objective-C headers with and without OBJC checks.
8:56 AM Changeset in webkit [254830] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.27.4

WPE WebKit 2.27.4

8:55 AM Changeset in webkit [254829] by Adrian Perez de Castro
  • 4 edits in trunk

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.27.4 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.27.4
8:17 AM Changeset in webkit [254828] by zandobersek@gmail.com
  • 12 edits
    2 adds in trunk

[WPE] Add WebKitRectangle, use it for WebKitWebView's SHOW_MENU signal
https://bugs.webkit.org/show_bug.cgi?id=206495

Reviewed by Carlos Garcia Campos.

Source/WebKit:

Add WebKitRectangle, a new boxed-type API containing information about
a simple rectangle consisting of integer coordinates. This would
correspond to types like GdkRectangle or cairo_rectangle_int_t.

Objects of this type are for now needed to inform the position and size
of the option menu. The show-menu signal signature is adjusted
accordingly.

No new tests -- the relevant test was updated.

  • PlatformWPE.cmake:
  • SourcesWPE.txt:
  • UIProcess/API/glib/WebKitWebView.cpp:

(WebKitWebViewClient::showOptionMenu):
(webkit_web_view_class_init):
(webkitWebViewShowOptionMenu):

  • UIProcess/API/glib/WebKitWebViewPrivate.h:
  • UIProcess/API/wpe/WebKitPopupMenu.cpp:

(WebKit::WebKitPopupMenu::showPopupMenu):

  • UIProcess/API/wpe/WebKitRectangle.cpp: Added.

(webkit_rectangle_copy):
(webkit_rectangle_free):

  • UIProcess/API/wpe/WebKitRectangle.h: Added.
  • UIProcess/API/wpe/WebKitWebView.h:
  • UIProcess/API/wpe/WebKitWebViewClient.h:
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:
  • UIProcess/API/wpe/docs/wpe-docs.sgml:

Tools:

Update the TestOptionMenu test case for WPE now that a rectangle object
is also passed through to the signal handler.

  • TestWebKitAPI/Tests/WebKitGLib/TestOptionMenu.cpp:

(OptionMenuTest::showOptionMenuCallback):
(OptionMenuTest::showOptionMenu):

8:06 AM Changeset in webkit [254827] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Add support for the rare case of revert
https://bugs.webkit.org/show_bug.cgi?id=206486
<rdar://problem/58720638>

Reviewed by Antti Koivisto.

This patch re-introduces the support for revert when a previous wrap position turns out to be the line end position.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::clearContent):

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

(WebCore::Layout::LineLayoutContext::layoutLine):
(WebCore::Layout::LineLayoutContext::rebuildLineForRevert):

  • layout/inlineformatting/LineLayoutContext.h:
7:52 AM Changeset in webkit [254826] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit

[GTK][WPE] InputMethodFilter: do not notify about focus in when only content type changed
https://bugs.webkit.org/show_bug.cgi?id=206502

Reviewed by Adrian Perez de Castro.

That's unbalancing the focus in/out notifications.

  • UIProcess/API/glib/InputMethodFilter.cpp:

(WebKit::InputMethodFilter::setContext): Always call notifyContentType().
(WebKit::InputMethodFilter::setState): Only call notifyFocusedIn() and notifyFocusedOut when there's a focus change.
(WebKit::InputMethodFilter::notifyContentType): Notify content type if changed.
(WebKit::InputMethodFilter::notifyFocusedIn): Move the content type notification to its own function.

  • UIProcess/API/glib/InputMethodFilter.h:
7:43 AM Changeset in webkit [254825] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebCore

Invalid usage of ENABLE() before it's defined in WebCore/layout/integration/LayoutIntegrationBoxTree.cpp
https://bugs.webkit.org/show_bug.cgi?id=206500

Reviewed by Žan Doberšek.

No new tests needed.

  • layout/integration/LayoutIntegrationBoxTree.cpp: Include "config.h"

before using the ENABLE() macro, to make sure that it gets defined.

7:20 AM Changeset in webkit [254824] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GTK] Gardening, remove expected to fail but pass
https://bugs.webkit.org/show_bug.cgi?id=206493

Unreviewed gardening.

  • platform/gtk/TestExpectations:
7:07 AM Changeset in webkit [254823] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

REGRESSION: ( r254256 ) [ Mojave wk2 ] http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-gpuprocess.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=206437
<rdar://problem/58692880>

Reviewed by Eric Carlson.

Hypothesis from flakiness is that, in GPUProcess, the call to stopRecording is not synchronously followed by a call to fetchData.
If too much time happened between the two calls, stopRecording will trigger setting m_isStopped and m_hasStartedWriting to false.
Any further call to fetchData will then fail.

To circumvent this issue, we add a flag m_isStopping.
If we are stopping, the completionHandler to fetchData call is delayed until stopRecording is fully finished.
When stopping will be finished, the completionHandler will send back the data.
This also allows to read the file in a background thread.

No new tests, this should unflake the flaky test.

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

(WebCore::MediaRecorderPrivateWriter::stopRecording):
(WebCore::MediaRecorderPrivateWriter::fetchData):

6:46 AM Changeset in webkit [254822] by Carlos Garcia Campos
  • 14 edits in trunk

[GTK][WPE] Also include the selection index in webkit_input_method_context_notify_surrounding()
https://bugs.webkit.org/show_bug.cgi?id=206497

Reviewed by Adrian Perez de Castro.

Source/WebKit:

Input methods also want to know the selection.

  • Shared/EditorState.cpp:

(WebKit::EditorState::PostLayoutData::encode const): Encode paragraphContextSelectionPosition.
(WebKit::EditorState::PostLayoutData::decode): Decode paragraphContextSelectionPosition.

  • Shared/EditorState.h: Add paragraphContextSelectionPosition.
  • UIProcess/API/glib/InputMethodFilter.cpp:

(WebKit::InputMethodFilter::notifySurrounding): Also include the selection index.

  • UIProcess/API/glib/InputMethodFilter.h:
  • UIProcess/API/glib/WebKitInputMethodContext.cpp:

(webkit_input_method_context_notify_surrounding):

  • UIProcess/API/gtk/WebKitInputMethodContext.h:
  • UIProcess/API/gtk/WebKitInputMethodContextImplGtk.cpp:

(webkitInputMethodContextImplGtkNotifySurrounding): Ignore the selection index, since GtkIMContext doesn't
support it.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseUpdateTextInputState): Pass paragraphContextSelectionPosition to InputMethodFilter::notifySurrounding().

  • UIProcess/API/wpe/WPEView.cpp:

(WKWPE::View::selectionDidChange): Ditto.

  • UIProcess/API/wpe/WebKitInputMethodContext.h:
  • WebProcess/WebPage/glib/WebPageGLib.cpp:

(WebKit::WebPage::platformEditorState const): Get the selection index too.

Tools:

Add new test case to check the selection index when there's a selection.

  • TestWebKitAPI/Tests/WebKitGLib/TestInputMethodContext.cpp:

(webkitInputMethodContextMockNotifySurrounding):
(webkitInputMethodContextMockReset):
(testWebKitInputMethodContextSurrounding):

6:43 AM Changeset in webkit [254821] by commit-queue@webkit.org
  • 4 edits in trunk

Implement "create a potential-CORS request"
https://bugs.webkit.org/show_bug.cgi?id=205326

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

LayoutTests/imported/w3c:

Update improved test result.

  • web-platform-tests/html/semantics/scripting-1/the-script-element/script-crossorigin-network-expected.txt:

Source/WebCore:

The storedCredentialsPolicy should be calculated using a same origin
check when credentials are computed as same-origin.

Test: imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/script-crossorigin-network.html

  • loader/CrossOriginAccessControl.cpp:

(WebCore::createPotentialAccessControlRequest):

6:28 AM Changeset in webkit [254820] by Caio Lima
  • 9 edits in trunk/JSTests

Skip tests when there is no JIT build on ARMv7 and MIPS
https://bugs.webkit.org/show_bug.cgi?id=206496

Unreviewed gardening.

  • microbenchmarks/bit-test-constant.js:
  • microbenchmarks/bit-test-nonconstant.js:
  • microbenchmarks/memcpy-typed-loop-large.js:
  • microbenchmarks/memcpy-typed-loop-small.js:
  • microbenchmarks/mul-immediate-sub.js:
  • stress/dont-range-based-iterate-vector-that-is-mutated.js:
  • stress/int8-repeat-in-then-out-of-bounds.js:
  • stress/sampling-profiler-richards.js:
3:24 AM Changeset in webkit [254819] by zandobersek@gmail.com
  • 14 edits
    6 adds
    1 delete in trunk

[WPE] Expose the WebKitOptionMenu APIs
https://bugs.webkit.org/show_bug.cgi?id=206287

Source/WebKit:

Reviewed by Carlos Garcia Campos.

Enable the GLib-based API covering option menu functionality for WPE.

Most of this can be shared with the GTK port. The only difference is in
the two additional parameters emitted on the WebKitWebView's "show-menu"
signal (GdkEvent and GdkRectangle) that WPE doesn't support at the
moment. The rectangle information will be possible to emit in the near
future once a usable API type is available for this information.

The WebKitPopupMenu implementation for WPE would only work with the
GLib-based API. To avoid using it with other APIs, this is implemented
only on the WebKitWebViewClient interface (renamed from 'WebViewClient'
and its declaration moved into a separate header file) inheriting from
API::ViewClient.

The relevant API test is enabled for WPE.

  • PlatformWPE.cmake:
  • SourcesWPE.txt:
  • UIProcess/API/glib/WebKitWebView.cpp:

(WebKitWebViewClient::WebKitWebViewClient):
(WebKitWebViewClient::showOptionMenu):
(WebKitWebViewClient::handleDownloadRequest):
(WebKitWebViewClient::frameDisplayed):
(WebKitWebViewClient::willStartLoad):
(WebKitWebViewClient::didChangePageID):
(WebKitWebViewClient::didReceiveUserMessage):
(webkitWebViewConstructed):
(webkit_web_view_class_init):
(webkitWebViewShowOptionMenu):

  • UIProcess/API/glib/WebKitWebViewPrivate.h:
  • UIProcess/API/wpe/APIViewClient.h:

(API::ViewClient::isGLibBasedAPI):

  • UIProcess/API/wpe/PageClientImpl.cpp:

(WebKit::PageClientImpl::createPopupMenuProxy):

  • UIProcess/API/wpe/WPEView.h:

(WKWPE::View::client const):

  • UIProcess/API/wpe/WebKitOptionMenu.h: Added.
  • UIProcess/API/wpe/WebKitOptionMenuItem.h: Added.
  • UIProcess/API/wpe/WebKitPopupMenu.cpp: Added.

(WebKit::WebKitPopupMenu::create):
(WebKit::WebKitPopupMenu::WebKitPopupMenu):
(WebKit::menuCloseCallback):
(WebKit::WebKitPopupMenu::showPopupMenu):
(WebKit::WebKitPopupMenu::hidePopupMenu):
(WebKit::WebKitPopupMenu::cancelTracking):
(WebKit::WebKitPopupMenu::selectItem):
(WebKit::WebKitPopupMenu::activateItem):

  • UIProcess/API/wpe/WebKitPopupMenu.h: Added.
  • UIProcess/API/wpe/WebKitWebView.h:
  • UIProcess/API/wpe/WebKitWebViewClient.h: Added.
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:
  • UIProcess/API/wpe/webkit.h:

Tools:

Move TestOptionMenu under the WebKitGLib directory, adding the
appropriate adjustments for the WPE variant of the API

  • TestWebKitAPI/Tests/WebKitGLib/TestOptionMenu.cpp: Renamed from Tools/TestWebKitAPI/Tests/WebKitGtk/TestOptionMenu.cpp.

(OptionMenuTest::OptionMenuTest):
(OptionMenuTest::~OptionMenuTest):
(OptionMenuTest::destroyMenu):
(OptionMenuTest::showOptionMenuCallback):
(OptionMenuTest::menuCloseCallback):
(OptionMenuTest::showOptionMenu):
(OptionMenuTest::clickAtPositionAndWaitUntilOptionMenuShown):
(OptionMenuTest::close):
(OptionMenuTest::activateItem):
(OptionMenuTest::selectItem):
(testOptionMenuSimple):
(testOptionMenuGroups):
(testOptionMenuActivate):
(testOptionMenuSelect):
(beforeAll):
(afterAll):

  • TestWebKitAPI/glib/CMakeLists.txt:
  • TestWebKitAPI/glib/PlatformGTK.cmake:
2:59 AM Changeset in webkit [254818] by commit-queue@webkit.org
  • 5 edits in trunk

Make isValidUserAgentHeaderValue GLib only
https://bugs.webkit.org/show_bug.cgi?id=206475

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

Source/WebCore:

The function isValidUserAgentHeaderValue is only used
by code that requires GLib, so move it behind USE(GLIB).

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

Tools:

Make the unit test that tests isValidUserAgentHeaderValue
depend on USE(GLIB) as well.

  • TestWebKitAPI/Tests/WebCore/HTTPParsers.cpp:
2:39 AM Changeset in webkit [254817] by youenn@apple.com
  • 26 edits
    3 copies
    10 adds in trunk/Source

Add support for MediaStream video track rendering in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=206286

Reviewed by Eric Carlson.

Source/WebCore:

Add a way for WebKit layer to create its own specific SampleBufferDisplayLayer.
WebKit layer can set a function pointer that will be used to create SampleBufferDisplayLayer.
If none is provided, LocalSampleBufferDisplayLayer is used.

Update MediaPlayerPrivateMediaStreamAVFObjC to monitor itself its root layer bounds change.
Conversely, LocalSampleBufferDisplayLayer no longer monitors its root layer bounds change.
This removes the need for SampleBufferDisplayLayer::Client to be notified of bounds change.
We add an API to update the root layer bounds of a LocalSampleBufferDisplayLayer as well,
this API being used by GPUProcess to mirror changes done to WebProcess root layer.

WebRTC incoming video tracks do not have presentation timestamps so we mark them as kCMSampleAttachmentKey_DisplayImmediately.
This is currently lost when doing IPC from WebProcess to NetworkProcess. Add this information for every enqueued sample in LocalSampleBufferDisplayLayer.
We might want in the future to serialize all attachments of the sample.

Manually tested.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/avfoundation/SampleBufferDisplayLayer.cpp: Added.

(WebCore::SampleBufferDisplayLayer::setCreator):
(WebCore::SampleBufferDisplayLayer::create):

  • platform/graphics/avfoundation/SampleBufferDisplayLayer.h:
  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.h:
  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:

(-[WebAVSampleBufferStatusChangeListener invalidate]):
(-[WebAVSampleBufferStatusChangeListener start]):
(-[WebAVSampleBufferStatusChangeListener stop]):
(-[WebAVSampleBufferStatusChangeListener observeValueForKeyPath:ofObject:change:context:]):
(WebCore::LocalSampleBufferDisplayLayer::LocalSampleBufferDisplayLayer):
(WebCore::LocalSampleBufferDisplayLayer::~LocalSampleBufferDisplayLayer):
(WebCore::LocalSampleBufferDisplayLayer::updateBoundsAndPosition):
(WebCore::LocalSampleBufferDisplayLayer::enqueueSample):

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

(-[WebRootSampleBufferBoundsChangeListener initWithParent:]):
(-[WebRootSampleBufferBoundsChangeListener dealloc]):
(-[WebRootSampleBufferBoundsChangeListener invalidate]):
(-[WebRootSampleBufferBoundsChangeListener start]):
(-[WebRootSampleBufferBoundsChangeListener stop]):
(-[WebRootSampleBufferBoundsChangeListener observeValueForKeyPath:ofObject:change:context:]):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::~MediaPlayerPrivateMediaStreamAVFObjC):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::rootLayer const):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateDisplayLayer):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::rootLayerBoundsDidChange):

  • platform/graphics/cg/PDFDocumentImage.cpp:

Unified build fix.

Source/WebKit:

Implement WebProcess SampleBufferDisplayLayer and GPUProcess RemoteSampleBufferDisplayLayer.
RemoteSampleBufferDisplayLayer is a wrapper around LocalSampleBufferDisplayLayer.

A synchronous IPC is used at creation time of the layer to make sure we have a shared layer synchronously.
Future refactoring should allow to remove that constraint as done in regular video playing.

Override SampleBufferDisplayLayer create function pointer when rendering is to be done in GPUProcess.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::sampleBufferDisplayLayerManager):
(WebKit::GPUConnectionToWebProcess::didReceiveMessage):
(WebKit::GPUConnectionToWebProcess::didReceiveSyncMessage):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.cpp: Added.

(WebKit::RemoteSampleBufferDisplayLayer::create):
(WebKit::RemoteSampleBufferDisplayLayer::RemoteSampleBufferDisplayLayer):
(WebKit::RemoteSampleBufferDisplayLayer::~RemoteSampleBufferDisplayLayer):
(WebKit::RemoteSampleBufferDisplayLayer::contextID):
(WebKit::RemoteSampleBufferDisplayLayer::bounds const):
(WebKit::RemoteSampleBufferDisplayLayer::updateDisplayMode):
(WebKit::RemoteSampleBufferDisplayLayer::updateAffineTransform):
(WebKit::RemoteSampleBufferDisplayLayer::updateBoundsAndPosition):
(WebKit::RemoteSampleBufferDisplayLayer::flush):
(WebKit::RemoteSampleBufferDisplayLayer::flushAndRemoveImage):
(WebKit::RemoteSampleBufferDisplayLayer::enqueueSample):
(WebKit::RemoteSampleBufferDisplayLayer::clearEnqueuedSamples):
(WebKit::RemoteSampleBufferDisplayLayer::messageSenderConnection const):
(WebKit::RemoteSampleBufferDisplayLayer::sampleBufferDisplayLayerStatusDidChange):
(WebKit::RemoteSampleBufferDisplayLayer::streamTime const):

  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.h: Added.
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.messages.in: Added.
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.cpp: Added.

(WebKit::RemoteSampleBufferDisplayLayerManager::RemoteSampleBufferDisplayLayerManager):
(WebKit::RemoteSampleBufferDisplayLayerManager::didReceiveLayerMessage):
(WebKit::RemoteSampleBufferDisplayLayerManager::createLayer):
(WebKit::RemoteSampleBufferDisplayLayerManager::releaseLayer):

  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.h: Added.
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.messages.in: Added.
  • Scripts/webkit/messages.py:
  • Shared/WebCoreArgumentCoders.h:
  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::ArgumentCoder<CGRect>::encode):
(IPC::ArgumentCoder<CGRect>::decode):
(IPC::ArgumentCoder<CGSize>::encode):
(IPC::ArgumentCoder<CGSize>::decode):
(IPC::ArgumentCoder<CGPoint>::encode):
(IPC::ArgumentCoder<CGPoint>::decode):
(IPC::ArgumentCoder<CGAffineTransform>::encode):
(IPC::ArgumentCoder<CGAffineTransform>::decode):

  • Sources.txt:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::sampleBufferDisplayLayerManager):
(WebKit::GPUProcessConnection::didReceiveMessage):

  • WebProcess/GPU/GPUProcessConnection.h:
  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::updatePreferences):

  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.cpp: Added.

(WebKit::SampleBufferDisplayLayer::create):
(WebKit::SampleBufferDisplayLayer::SampleBufferDisplayLayer):
(WebKit::SampleBufferDisplayLayer::~SampleBufferDisplayLayer):
(WebKit::SampleBufferDisplayLayer::didFail const):
(WebKit::SampleBufferDisplayLayer::updateDisplayMode):
(WebKit::SampleBufferDisplayLayer::bounds const):
(WebKit::SampleBufferDisplayLayer::updateAffineTransform):
(WebKit::SampleBufferDisplayLayer::updateBoundsAndPosition):
(WebKit::SampleBufferDisplayLayer::flush):
(WebKit::SampleBufferDisplayLayer::flushAndRemoveImage):
(WebKit::SampleBufferDisplayLayer::enqueueSample):
(WebKit::SampleBufferDisplayLayer::clearEnqueuedSamples):
(WebKit::SampleBufferDisplayLayer::rootLayer):
(WebKit::SampleBufferDisplayLayer::setDidFail):
(WebKit::SampleBufferDisplayLayer::boundsChanged):

  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.h: Added.
  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.messages.in: Added.
  • WebProcess/GPU/webrtc/SampleBufferDisplayLayerIdentifier.h: Added.
  • WebProcess/GPU/webrtc/SampleBufferDisplayLayerManager.cpp: Added.

(WebKit::SampleBufferDisplayLayerManager::didReceiveLayerMessage):
(WebKit::SampleBufferDisplayLayerManager::createLayer):
(WebKit::SampleBufferDisplayLayerManager::addLayer):
(WebKit::SampleBufferDisplayLayerManager::removeLayer):

  • WebProcess/GPU/webrtc/SampleBufferDisplayLayerManager.h: Added.
  • WebProcess/WebProcess.h:
1:49 AM Changeset in webkit [254816] by commit-queue@webkit.org
  • 2 edits
    6 moves in trunk/LayoutTests

[css-grid] Import grid-align-content-distribution tests to WebKit
https://bugs.webkit.org/show_bug.cgi?id=205926

Patch by Rossana Monteriso <rmonteriso@igalia.com> on 2020-01-20
Reviewed by Javier Fernandez.

LayoutTests/imported/w3c:

Add align-content-distribution tests, checked and adapted to the WPT project,
to the css-grid/alignment folder for imported tests inside WebKit.

  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html:

LayoutTests:

Remove align-content-distribution tests that are being replaced by newer tests, adapted to the WPT project and imported
to the corresponding css-grid folder inside WebKit.

  • fast/css-grid-layout/grid-align-content-distribution-expected.txt: Removed.
  • fast/css-grid-layout/grid-align-content-distribution-vertical-lr-expected.txt: Removed.
  • fast/css-grid-layout/grid-align-content-distribution-vertical-rl-expected.txt: Removed.
  • fast/css-grid-layout/grid-align-content-distribution.html: Removed.
  • fast/css-grid-layout/grid-align-content-distribution-vertical-lr.html: Removed.
  • fast/css-grid-layout/grid-align-content-distribution-vertical-rl.html: Removed.
1:44 AM Changeset in webkit [254815] by youenn@apple.com
  • 3 edits in trunk/Source/ThirdParty/libwebrtc

Setting kVTCompressionPropertyKey_DataRateLimits on RTCVideoEncoderH264 fails
https://bugs.webkit.org/show_bug.cgi?id=206402

Reviewed by Eric Carlson.

Add helper routine dedicated to setting VTB/VCP array value properties.
Logging shows the bitrate is then set appropriately.

  • Source/webrtc/sdk/objc/components/video_codec/helpers.cc:
  • Source/webrtc/sdk/objc/components/video_codec/helpers.h:
1:23 AM Changeset in webkit [254814] by youenn@apple.com
  • 4 edits
    4 adds in trunk

Video sound sometimes keeps playing in page cache
https://bugs.webkit.org/show_bug.cgi?id=206408
<rdar://problem/58654047>

Reviewed by Eric Carlson.

Source/WebCore:

In r253375, we made sure to enqueue calls that would trigger state changes, to ensure we would not start playing while in page cache.
But this delayed the order to pause the video when entering page cache.
Fix this by synchronously updating playing state when being suspended for page cache.

Test: http/tests/navigation/page-cache-video.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::pauseAndUpdatePlayStateImmediately):
(WebCore::HTMLMediaElement::stopWithoutDestroyingMediaPlayer):

  • html/HTMLMediaElement.h:

LayoutTests:

  • http/tests/media/resources/sound_5.mp3: Added.

File comes from WPT and is 5 seconds long.

  • http/tests/navigation/page-cache-video-expected.txt: Added.
  • http/tests/navigation/page-cache-video.html: Added.
  • http/tests/navigation/resources/page-cache-video-helper.html: Added.
1:19 AM Changeset in webkit [254813] by youenn@apple.com
  • 5 edits
    3 adds in trunk/Source/WebCore

Introduce an abstract SampleBufferDisplayLayer
https://bugs.webkit.org/show_bug.cgi?id=206066

Reviewed by Eric Carlson.

Move use of display layers in MediaPlayerPrivateMediaStreamAVFObjC to a new class LocalSampleBufferDisplayLayer
that implements an interface named SampleBufferDisplayLayer.
A future patch will implement this interface by IPCing to GPUProcess.
We move both layers and handling of the sample queue to LocalSampleBufferDisplayLayer.

Contrary to previously, we do not call again enqueueVideoSample in case we enqueued a sample for later use in the display layer.
Instead, we directly render it, which should not change much since this is a realtime track and in the future the buffer will be in GPUProcess anyway.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/avfoundation/SampleBufferDisplayLayer.h: Added.

(WebCore::SampleBufferDisplayLayer::SampleBufferDisplayLayer):

  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.h: Added.
  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm: Added.

(-[WebAVSampleBufferStatusChangeListener initWithParent:]):
(-[WebAVSampleBufferStatusChangeListener dealloc]):
(-[WebAVSampleBufferStatusChangeListener invalidate]):
(-[WebAVSampleBufferStatusChangeListener beginObservingLayers]):
(-[WebAVSampleBufferStatusChangeListener stopObservingLayers]):
(-[WebAVSampleBufferStatusChangeListener observeValueForKeyPath:ofObject:change:context:]):
(WebCore::runWithoutAnimations):
(WebCore::LocalSampleBufferDisplayLayer::LocalSampleBufferDisplayLayer):
(WebCore::LocalSampleBufferDisplayLayer::~LocalSampleBufferDisplayLayer):
(WebCore::LocalSampleBufferDisplayLayer::layerStatusDidChange):
(WebCore::LocalSampleBufferDisplayLayer::layerErrorDidChange):
(WebCore::LocalSampleBufferDisplayLayer::rootLayerBoundsDidChange):
(WebCore::LocalSampleBufferDisplayLayer::displayLayer):
(WebCore::LocalSampleBufferDisplayLayer::rootLayer):
(WebCore::LocalSampleBufferDisplayLayer::didFail const):
(WebCore::LocalSampleBufferDisplayLayer::updateDisplayMode):
(WebCore::LocalSampleBufferDisplayLayer::bounds const):
(WebCore::LocalSampleBufferDisplayLayer::updateAffineTransform):
(WebCore::LocalSampleBufferDisplayLayer::updateBoundsAndPosition):
(WebCore::LocalSampleBufferDisplayLayer::ensureLayers):
(WebCore::LocalSampleBufferDisplayLayer::flush):
(WebCore::LocalSampleBufferDisplayLayer::flushAndRemoveImage):
(WebCore::LocalSampleBufferDisplayLayer::enqueueSample):
(WebCore::LocalSampleBufferDisplayLayer::removeOldSamplesFromPendingQueue):
(WebCore::LocalSampleBufferDisplayLayer::addSampleToPendingQueue):
(WebCore::LocalSampleBufferDisplayLayer::clearEnqueuedSamples):
(WebCore::LocalSampleBufferDisplayLayer::requestNotificationWhenReadyForVideoData):

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

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::~MediaPlayerPrivateMediaStreamAVFObjC):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueCorrectedVideoSample):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::sampleBufferDisplayLayerStatusDidChange):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::applicationDidBecomeActive):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::flushRenderers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::destroyLayers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::platformLayer const):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::displayLayer):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateDisplayMode):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::checkSelectedVideoTrack):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setBufferingPolicy):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateDisplayLayer):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::sampleBufferDisplayLayerBoundsDidChange):

1:02 AM Changeset in webkit [254812] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

ASSERT in case a service worker cannot be terminated in a timely manner
https://bugs.webkit.org/show_bug.cgi?id=206413

Reviewed by Alexey Proskuryakov.

No change of behavior, the process will still exit if it does not succeed in stopping a service worker.
In Debug, a crash log will be collected which will allow to help identifying other crashes.

  • workers/service/context/SWContextManager.cpp:

(WebCore::SWContextManager::serviceWorkerFailedToTerminate):

12:07 AM Changeset in webkit [254811] by commit-queue@webkit.org
  • 6 edits
    1 add in trunk

KeyedDecoderGeneric crashes when it accesses data with non-existing key
https://bugs.webkit.org/show_bug.cgi?id=205902

Patch by Takashi Komori <Takashi.Komori@sony.com> on 2020-01-20
Reviewed by Fujii Hironori.

Source/WebCore:

Add null check function for KeyedDecoderGeneric.

Test: TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp

  • platform/generic/KeyedDecoderGeneric.cpp:

(WebCore::KeyedDecoderGeneric::Dictionary::get):
(WebCore::KeyedDecoderGeneric::getPointerFromDictionaryStack):
(WebCore::KeyedDecoderGeneric::decodeSimpleValue):
(WebCore::KeyedDecoderGeneric::decodeBytes):
(WebCore::KeyedDecoderGeneric::decodeBool):
(WebCore::KeyedDecoderGeneric::decodeUInt32):
(WebCore::KeyedDecoderGeneric::decodeUInt64):
(WebCore::KeyedDecoderGeneric::decodeInt32):
(WebCore::KeyedDecoderGeneric::decodeInt64):
(WebCore::KeyedDecoderGeneric::decodeFloat):
(WebCore::KeyedDecoderGeneric::decodeDouble):
(WebCore::KeyedDecoderGeneric::decodeString):
(WebCore::KeyedDecoderGeneric::beginObject):
(WebCore::KeyedDecoderGeneric::beginArray):

  • platform/generic/KeyedDecoderGeneric.h:

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/KeyedCoding.cpp: Added.

(TestWebKitAPI::checkDecodedBytes):
(TestWebKitAPI::TEST):
(TestWebKitAPI::testSimpleValue):
(TestWebKitAPI::KeyedCodingTestObject::encode):
(TestWebKitAPI::KeyedCodingTestObject::decode):
(TestWebKitAPI::KeyedCodingTestObject::KeyedCodingTestObject):
(TestWebKitAPI::KeyedCodingTestObject::equals const):
(TestWebKitAPI::operator==):

Jan 19, 2020:

11:12 PM Changeset in webkit [254810] by zandobersek@gmail.com
  • 8 edits in trunk/Tools

[WPE] HeadlessViewBackend should hande SHM-based buffer exports
https://bugs.webkit.org/show_bug.cgi?id=206283

Reviewed by Adrian Perez de Castro.

The ViewBackend class should also handle any SHM-based exports from
the wpe_view_backend_exportable_fdo_egl instance. In case of such an
export, the buffer is transported down into the implementing object.

For WindowViewBackend, we do nothing with this yet, except emit a
warning. For HeadlessViewBackend, we repeat what's currently done with
EGL exports, storing pending updates until the update timer is fired
and we move the buffer into the locked position, clearing up any
previous locked buffer.

Upon creating a snapshot of the current contents, we add additional
separation in how EGL and SHM exports are handled. Nothing changes
for the former, while for the latter we simply retrieve the
wl_shm_buffer object, map it, copy data from it into the pixel data
storage that's basis for the returned Cairo surface, and unmap it.

  • Scripts/webkitpy/port/wpe.py:

(WPEPort.setup_environ_for_server): Copy the LIBGL_ALWAYS_SOFTWARE
environment variable, if present. This variable is normally used to
force Mesa into software rasterizing mode.

  • wpe/backends/HeadlessViewBackend.cpp:

(WPEToolingBackends::HeadlessViewBackend::~HeadlessViewBackend):
(WPEToolingBackends::HeadlessViewBackend::createSnapshot):
(WPEToolingBackends::HeadlessViewBackend::createEGLSnapshot):
(WPEToolingBackends::HeadlessViewBackend::createSHMSnapshot):
(WPEToolingBackends::HeadlessViewBackend::performUpdate):
(WPEToolingBackends::HeadlessViewBackend::displayBuffer):

  • wpe/backends/HeadlessViewBackend.h:
  • wpe/backends/ViewBackend.cpp:

(WPEToolingBackends::ViewBackend::initialize):

  • wpe/backends/ViewBackend.h:
  • wpe/backends/WindowViewBackend.cpp:
  • wpe/backends/WindowViewBackend.h:
7:18 PM Changeset in webkit [254809] by eric.carlson@apple.com
  • 16 edits
    1 add in trunk/Source/WebKit

Make MediaPlayerPrivateRemote a message receiver
https://bugs.webkit.org/show_bug.cgi?id=206487
<rdar://problem/58721559>

Reviewed by Dean Jackson.

Make MediaPlayerPrivateRemote a message receiver so we don't need a trampoline
for every method in the MediaPlayerPrivateRemoteManager.

No new tests, no change of behavior.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/media/RemoteAudioTrackProxy.cpp:

(WebKit::RemoteAudioTrackProxy::RemoteAudioTrackProxy):
(WebKit::RemoteAudioTrackProxy::configurationChanged):
(WebKit::RemoteAudioTrackProxy::willRemove):

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:
  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::requestResource):
(WebKit::RemoteMediaPlayerProxy::removeResource):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerNetworkStateChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerReadyStateChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerVolumeChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerMuteChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerTimeChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerDurationChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerRateChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerEngineFailedToLoad const):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerPlaybackStateChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerCharacteristicChanged):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerFirstVideoFrameAvailable):
(WebKit::RemoteMediaPlayerProxy::sendCachedState):

  • GPUProcess/media/RemoteMediaResourceManager.cpp:
  • GPUProcess/media/RemoteVideoTrackProxy.cpp:

(WebKit::RemoteVideoTrackProxy::RemoteVideoTrackProxy):
(WebKit::RemoteVideoTrackProxy::configurationChanged):
(WebKit::RemoteVideoTrackProxy::willRemove):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::didReceiveMessage):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::requestResource):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in: Added.
  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::didReceivePlayerMessage):
(WebKit::RemoteMediaPlayerManager::networkStateChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::readyStateChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::volumeChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::muteChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::timeChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::durationChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::rateChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::playbackStateChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::engineFailedToLoad): Deleted.
(WebKit::RemoteMediaPlayerManager::characteristicChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::sizeChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::addRemoteAudioTrack): Deleted.
(WebKit::RemoteMediaPlayerManager::removeRemoteAudioTrack): Deleted.
(WebKit::RemoteMediaPlayerManager::remoteAudioTrackConfigurationChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::addRemoteVideoTrack): Deleted.
(WebKit::RemoteMediaPlayerManager::removeRemoteVideoTrack): Deleted.
(WebKit::RemoteMediaPlayerManager::remoteVideoTrackConfigurationChanged): Deleted.
(WebKit::RemoteMediaPlayerManager::firstVideoFrameAvailable): Deleted.
(WebKit::RemoteMediaPlayerManager::requestResource): Deleted.
(WebKit::RemoteMediaPlayerManager::removeResource): Deleted.
(WebKit::RemoteMediaPlayerManager::updateCachedState): Deleted.

  • WebProcess/GPU/media/RemoteMediaPlayerManager.h:

(WebKit::RemoteMediaPlayerManager::didReceiveMessageFromGPUProcess): Deleted.

  • WebProcess/GPU/media/RemoteMediaPlayerManager.messages.in:
9:08 AM Changeset in webkit [254808] by Antti Koivisto
  • 7 edits in trunk/Source/WebCore

[LFC] Devirtualize FormattingState
https://bugs.webkit.org/show_bug.cgi?id=206485

Reviewed by Zalan Bujtas.

The only reason it is virtual is the destructor.

  • layout/FormattingState.h:
  • layout/LayoutState.cpp:

(WebCore::Layout::LayoutState::createFormattingStateForFormattingRootIfNeeded):

  • layout/LayoutState.h:
  • layout/blockformatting/BlockFormattingState.h:
  • layout/inlineformatting/InlineFormattingState.h:
  • layout/tableformatting/TableFormattingState.h:
8:43 AM Changeset in webkit [254807] by cathiechen
  • 47 edits in trunk

Add support for scroll behavior relies on ScrollAnimation of the Web process
https://bugs.webkit.org/show_bug.cgi?id=204882

Reviewed by Frédéric Wang

Based on the patch by Frédéric Wang.

LayoutTests/imported/w3c:

Enable CSSOMViewSmoothScrollingEnabled on scroll behavior tests and update expectations.

  • web-platform-tests/css/cssom-view/scroll-behavior-default-css-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-default-css.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-element-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-element.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-root-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-window-expected.txt:
  • web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html:

Source/WebCore:

This patch introduces a programmatic smooth scrolling in WebKit from the CSSOM View
specification [1]. To use this effect, web developers can pass a behavior parameter (auto,
smooth, or instant) to Element.scroll, Element.scrollTo, Element.scrollBy,
Element.scrollIntoView, Window.scroll, Window.scrollTo or Window.scrollBy [2]. When behavior
is auto, the instant/smooth characteristic is actually taken from the value of a new CSS
scroll-behavior property [3]. Both the new CSS and DOM behavior are protected by a runtime
flag.

[1] https://drafts.csswg.org/cssom-view
[2] https://drafts.csswg.org/cssom-view/#dictdef-scrolloptions
[3] https://drafts.csswg.org/cssom-view/#propdef-scroll-behavior

Tests: imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-default-css.html

imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-element.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-window.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-scrollintoview-nested.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-smooth-positions.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-subframe-root.html
imported/w3c/web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html

  • Sources.txt: Build ScrollAnimationSmooth.cpp on all platforms.
  • SourcesGTK.txt: Remove ScrollAnimationSmooth.cpp since it is built on all platforms now.
  • dom/Element.cpp:

(WebCore::Element::scrollIntoView): Pass scroll behavior, if any.
(WebCore::Element::scrollBy):
(WebCore::Element::scrollTo): Handle the case when scroll behavior is smooth.
(WebCore::Element::setScrollLeft): Handle the case when scroll behavior is smooth.
(WebCore::Element::setScrollTop): Handle the case when scroll behavior is smooth.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::scrollBy const):
(WebCore::DOMWindow::scrollTo const): Handle the case when scroll behavior is smooth.
The optimization of cancel (0, 0) scrolling is skipped if an animated scroll is in progress.
Otherwise, the previous scroll won't be stopped by a follow-up scroll.

  • page/FrameView.cpp:

(WebCore::FrameView::setScrollPosition):
(WebCore::FrameView::scrollToOffsetWithAnimation): Start an animated scroll.

  • page/FrameView.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):

  • platform/ScrollAnimation.h:

(WebCore::ScrollAnimation::scroll): Function to animate scrolling to a specified position.

  • platform/ScrollAnimationSmooth.cpp: Build this file on all platforms. Add a

smoothFactorForProgrammaticScroll parameter to slow down the smooth scrolling.
(WebCore::ScrollAnimationSmooth::scroll):
(WebCore::ScrollAnimationSmooth::updatePerAxisData): Scale the time parameters of the
animation so that it looks smoother.

  • platform/ScrollAnimationSmooth.h: Declare the class on all platforms.
  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::ScrollAnimator): Initialize animation member for programmatic scrolling.
(WebCore::ScrollAnimator::scrollToOffset): Animate scrolling to the specified position.
(WebCore::ScrollAnimator::cancelAnimations): Copy logic from ScrollAnimationSmooth.cpp.
(WebCore::ScrollAnimator::serviceScrollAnimations): Ditto.
(WebCore::ScrollAnimator::willEndLiveResize): Ditto.
(WebCore::ScrollAnimator::didAddVerticalScrollbar): Ditto.
(WebCore::ScrollAnimator::didAddHorizontalScrollbar): Ditto.

  • platform/ScrollAnimator.h: New animation member for smooth programmatic scrolling.

(WebCore::ScrollAnimator::ScrollAnimator::cancelAnimations): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::serviceScrollAnimations): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::willEndLiveResize): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::didAddVerticalScrollbar): Deleted.
(WebCore::ScrollAnimator::ScrollAnimator::didAddHorizontalScrollbar): Deleted.

  • platform/ScrollTypes.h: Add ScrollBehaviorStatus to indicate the status of scrolling.
  • platform/ScrollView.cpp:

(WebCore::ScrollView::setScrollPosition): Follow the CSSOM View spec: If a scroll is in
progress, we interrupt it and continue the scroll call (even when we are at the final position).

  • platform/ScrollView.h:
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::scrollToOffsetWithAnimation):
(WebCore::ScrollableArea::setScrollOffsetFromInternals):
(WebCore::ScrollableArea::setScrollOffsetFromAnimation): To avoid iterate calling,
move the requestScrollPositionUpdate(position) checking out of setScrollOffsetFromAnimation().

  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::currentScrollBehaviorStatus const): Maintain currentScrollBehaviorStatus.
(WebCore::ScrollableArea::setScrollBehaviorStatus):

  • platform/generic/ScrollAnimatorGeneric.cpp:

(WebCore::ScrollAnimatorGeneric::updatePosition):

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::cancelAnimations): Call parent member to handle programmatic scrolling.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::setScrollLeft): Add flag to indicate animated or not.
(WebCore::RenderBox::setScrollTop): Ditto.
(WebCore::RenderBox::setScrollPosition):

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

(WebCore::RenderLayer::scrollToXPosition): Ditto.
(WebCore::RenderLayer::scrollToYPosition): Ditto.
(WebCore::RenderLayer::scrollToPosition):
(WebCore::RenderLayer::scrollToOffset): Follow the CSSOM View spec: If a scroll is in
progress, we interrupt it and continue the scroll call (even when we are at the final
position). It's ScrollBehaviorType::Instant scroll.
(WebCore::RenderLayer::requestScrollPositionUpdate):
(WebCore::RenderLayer::scrollToOffsetWithAnimation): Ditto. This is similar to scrollToOffset
but animates the scroll. It's ScrollBehaviorType::Smooth scroll.
(WebCore::RenderLayer::scrollTo):
(WebCore::RenderLayer::scrollRectToVisible): Again don't do an early return if scroll is in
progress. We call scrollToOffsetWithAnimation instead of scrollToOffset when appropriate.
Note that this function may not work well for several nested scroll boxes with at least one
element with smooth behavior. It will handled in bug Follow.

  • rendering/RenderLayer.h: Add scroll behavior to ScrollTectToVisibleOptions.
  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::setScrollLeft): Add animated flag.
(WebCore::RenderListBox::setScrollTop): Ditto.

  • rendering/RenderListBox.h:
  • rendering/RenderTextControlSingleLine.cpp:

(WebCore::RenderTextControlSingleLine::setScrollLeft):
(WebCore::RenderTextControlSingleLine::setScrollTop):

  • rendering/RenderTextControlSingleLine.h:
  • testing/Internals.cpp:

(WebCore::Internals::unconstrainedScrollTo):

LayoutTests:

  • platform/mac-wk1/TestExpectations: Skip these tests on WK1 as they don't work for now.
8:30 AM Changeset in webkit [254806] by Antti Koivisto
  • 11 edits
    1 copy
    1 add in trunk/Source/WebCore

[LFC][Integration] Use integration specific layout tree builder and data structures
https://bugs.webkit.org/show_bug.cgi?id=206483

Reviewed by Zalan Bujtas.

The generic tree builder and the LayoutTreeContent class are not optimal for integrated layout.

This patch adds LayoutIntegration::BoxTree type for building and owning Layout::Boxes for a single flow.
It also devirtualizes Layout::Box for faster destruction (the only virtual function was the destructor).

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/integration/LayoutIntegrationBoxTree.cpp: Added.

(WebCore::LayoutIntegration::BoxTree::BoxTree):
(WebCore::LayoutIntegration::BoxTree::buildTree):

Only handle supported content.

(WebCore::LayoutIntegration::BoxTree::layoutBoxForRenderer const):
(WebCore::LayoutIntegration::BoxTree::rendererForLayoutBox const):

For small content just traverse the vector. Construct lookup maps lazily for larger content.

  • layout/integration/LayoutIntegrationBoxTree.h: Copied from Source/WebCore/layout/layouttree/LayoutContainer.h.

(WebCore::LayoutIntegration::BoxTree::rootLayoutBox const):
(WebCore::LayoutIntegration::BoxTree::rootLayoutBox):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::LineLayout):
(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::textBoxesFor const):
(WebCore::LayoutIntegration::LineLayout::elementBoxFor const):
(WebCore::LayoutIntegration::LineLayout::rootLayoutBox const):
(WebCore::LayoutIntegration::LineLayout::rootLayoutBox):
(WebCore::LayoutIntegration::LineLayout::hitTest):

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::~Box):

  • layout/layouttree/LayoutBox.h:

Devirtualize.

  • layout/layouttree/LayoutContainer.cpp:

(WebCore::Layout::Container::appendChild):

  • layout/layouttree/LayoutContainer.h:
  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createBox):
(WebCore::Layout::TreeBuilder::createTextBox):
(WebCore::Layout::TreeBuilder::createContainer):
(WebCore::Layout::TreeBuilder::createLayoutBox):

Factor ownership handling to these create functions.

(WebCore::Layout::TreeBuilder::buildTableStructure):
(WebCore::Layout::TreeBuilder::buildSubTree):

  • layout/layouttree/LayoutTreeBuilder.h:

(WebCore::Layout::LayoutTreeContent::addBox):
(WebCore::Layout::LayoutTreeContent::addContainer):

Put Boxes and Containers to different maps for correct destruction.

8:02 AM Changeset in webkit [254805] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC][IFC] Move away from placing individual InlineItems on the line
https://bugs.webkit.org/show_bug.cgi?id=206479
<rdar://problem/58716223>

Reviewed by Antti Koivisto.

<div> text content and more </div>
[ ][text][ ][content][ ][and][ ]more[ ]

Instead of placing all these inline items on the line (LineBuilder::InlineItemRun) and merge them at InlineBuilder::close(),
let's expand existing runs(LineBuilder::Run) when possible ([text content and ][more]).
This helps performance and memory consumption when the line ends up having many inline itmes (e.g. white-space: nowrap).

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::TextContext::expand):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::LineBuilder):
(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::alignContentVertically):
(WebCore::Layout::LineBuilder::justifyRuns):
(WebCore::Layout::LineBuilder::alignHorizontally):
(WebCore::Layout::LineBuilder::removeTrailingTrimmableContent):
(WebCore::Layout::LineBuilder::visuallyCollapsePreWrapOverflowContent):
(WebCore::Layout::LineBuilder::collectHangingContent):
(WebCore::Layout::LineBuilder::append):
(WebCore::Layout::LineBuilder::appendNonBreakableSpace):
(WebCore::Layout::LineBuilder::appendInlineContainerEnd):
(WebCore::Layout::LineBuilder::appendTextContent):
(WebCore::Layout::LineBuilder::appendNonReplacedInlineBox):
(WebCore::Layout::LineBuilder::appendLineBreak):
(WebCore::Layout::LineBuilder::isVisuallyNonEmpty const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::TrimmableTrailingContent):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::addFullyTrimmableContent):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::addPartiallyTrimmableContent):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::remove):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::removePartiallyTrimmableContent):
(WebCore::Layout::LineBuilder::Run::Run):
(WebCore::Layout::m_textContext):
(WebCore::Layout::LineBuilder::Run::expand):
(WebCore::Layout::LineBuilder::Run::hasTrailingLetterSpacing const):
(WebCore::Layout::LineBuilder::Run::trailingLetterSpacing const):
(WebCore::Layout::LineBuilder::Run::removeTrailingLetterSpacing):
(WebCore::Layout::LineBuilder::Run::removeTrailingWhitespace):
(WebCore::Layout::LineBuilder::Run::visuallyCollapseTrailingWhitespace):
(WebCore::Layout::LineBuilder::Run::adjustExpansionBehavior):
(WebCore::Layout::LineBuilder::Run::expansionBehavior const):
(WebCore::Layout::LineBuilder::Run::setComputedHorizontalExpansion):
(WebCore::Layout::LineBuilder::ContinuousContent::canInlineItemRunBeExpanded): Deleted.
(WebCore::Layout::LineBuilder::ContinuousContent::ContinuousContent): Deleted.
(WebCore::Layout::LineBuilder::ContinuousContent::isEligible const): Deleted.
(WebCore::Layout::LineBuilder::ContinuousContent::append): Deleted.
(WebCore::Layout::LineBuilder::ContinuousContent::close): Deleted.
(WebCore::Layout::m_isCollapsedToVisuallyEmpty): Deleted.
(WebCore::Layout::shouldPreserveLeadingContent): Deleted.
(WebCore::Layout::LineBuilder::revert): Deleted.
(WebCore::Layout::LineBuilder::justifyRuns const): Deleted.
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::append): Deleted.
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::removeTrailingRun): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::InlineItemRun): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isTrimmableWhitespace const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::hasTrailingLetterSpacing const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::trailingLetterSpacing const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::setCollapsesToZeroAdvanceWidth): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::removeTrailingLetterSpacing): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::hasEmptyTextContent const): Deleted.

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::Run::logicalWidth const):
(WebCore::Layout::LineBuilder::Run::shrinkHorizontally):
(WebCore::Layout::LineBuilder::Run::adjustLogicalTop):
(WebCore::Layout::LineBuilder::Run::hasTrailingWhitespace const):
(WebCore::Layout::LineBuilder::Run::hasCollapsibleTrailingWhitespace const):
(WebCore::Layout::LineBuilder::Run::hasCollapsedTrailingWhitespace const):
(WebCore::Layout::LineBuilder::Run::trailingWhitespaceWidth const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::width const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::isTrailingRunFullyTrimmable const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::isTrailingRunPartiallyTrimmable const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::reset):
(WebCore::Layout::LineBuilder::Run::trailingWhitespaceType const):
(WebCore::Layout::LineBuilder::Run::isCollapsedToVisuallyEmpty const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::layoutBox const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::style const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::logicalLeft const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::logicalWidth const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::textContext const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isText const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isBox const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isContainerStart const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isContainerEnd const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isLineBreak const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::type const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isCollapsed const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::moveHorizontally): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::adjustLogicalWidth): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isCollapsedToZeroAdvanceWidth const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isCollapsible const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isWhitespace const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::hasExpansionOpportunity const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::operator== const): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::operator!= const): Deleted.
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::firstRunIndex): Deleted.

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::layoutLine):

7:19 AM Changeset in webkit [254804] by Claudio Saavedra
  • 4 edits in trunk/Source

[GTK] Remove usage of deprecated GTimeVal
https://bugs.webkit.org/show_bug.cgi?id=206358

Reviewed by Žan Doberšek.

Source/WebKit:

Use g_get_monotonic_time() for counting clicks instead of
deprecated and unsafe API.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(ClickCounter::currentClickCountForGdkButtonEvent):

Source/WTF:

Use g_get_real_time() directly instead of deprecated and unsafe API.

  • wtf/CurrentTime.cpp:

(WTF::currentTime):

5:52 AM Changeset in webkit [254803] by Diego Pino Garcia
  • 15 edits in trunk/LayoutTests

[WPE] Gardening, rebase lines and lint TestExpectations
https://bugs.webkit.org/show_bug.cgi?id=206482

Unreviewed gardening.

  • platform/wpe/TestExpectations: Removed duplicated entries and

references to non-existing files

  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-events.https-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/idlharness.https-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-mode.any-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-mode.any.worker-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/import/color-prop-02-f-manual-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/import/color-prop-03-t-manual-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/import/shapes-intro-01-t-manual-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/import/types-dom-08-f-manual-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/path/distance/pathLength-positive-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/path/distance/pathLength-positive-percentage-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/shapes/reftests/pathlength-003-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/shapes/scripted/disabled-shapes-not-hit-expected.txt:

Jan 18, 2020:

10:02 PM Changeset in webkit [254802] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebCore

REGRESSION (r254790): Update DerivedSources-{input,output}.xcfilelist to fix build

Add support for scroll behavior parsing
<https://bugs.webkit.org/show_bug.cgi?id=205009>

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • Update after commit r254790.
3:14 PM Changeset in webkit [254801] by caitp@igalia.com
  • 21 edits
    6 adds in trunk

[JSC] add DFG/FTL support for op_to_property_key
https://bugs.webkit.org/show_bug.cgi?id=206368

JSTests:

Reviewed by Saam Barati.

  • stress/class-fields-to-property-key-const-string-ftl.js: Added.
  • stress/class-fields-to-property-key-const-symbol-ftl.js: Added.
  • stress/class-fields-to-property-key-slow-object-tostring-ftl.js: Added.
  • stress/class-fields-to-property-key-slow-object-valueof-ftl.js: Added.
  • stress/class-fields-to-property-key-string-object-ftl.js: Added.
  • stress/class-fields-to-property-key-string-or-string-object-ftl.js: Added.

Source/JavaScriptCore:

Reviewed by Saam Barati.

Implement DFG/FTL support for the op_to_property_key opcode. This operates
similar to the LLInt and base JIT implementations, in which we avoid invoking
the full ToPropertyKey operation if the source operand is already a String or
Symbol at runtime.

If DFG/FTL are confident the value will be a String or Symbol at compile time,
the operation is omitted entirely in the final graph.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGNode.h:

(JSC::DFG::Node::convertToToString):

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

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileToPrimitive):
(JSC::DFG::SpeculativeJIT::compileToPropertyKey):

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

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

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

12:35 PM Changeset in webkit [254800] by Wenson Hsieh
  • 8 edits in trunk/Source/WebCore

Make pasteboard markup sanitization more robust
https://bugs.webkit.org/show_bug.cgi?id=206379
<rdar://problem/58660859>

Reviewed by Ryosuke Niwa.

Makes markup sanitization when copying and pasting more robust in some circumstances (see the bug for additional
details).

  • editing/markup.cpp:

(WebCore::createPageForSanitizingWebContent):

Adopt the new setting when creating the temporary web page used to sanitize markup coming from the pasteboard.

  • html/parser/HTMLParserOptions.cpp:

(WebCore::HTMLParserOptions::HTMLParserOptions):

  • html/parser/HTMLParserOptions.h:

Rename scriptEnabled to scriptingFlag, since parsing script elements may now be allowed even when JavaScript
execution is disabled. The term "scripting flag" also closely matches the wording of the HTML parsing
specification.

  • html/parser/HTMLTokenizer.cpp:

(WebCore::HTMLTokenizer::updateStateFor):

  • html/parser/HTMLTreeBuilder.cpp:

(WebCore::HTMLTreeBuilder::processStartTagForInBody):
(WebCore::HTMLTreeBuilder::processStartTagForInHead):

  • page/Settings.yaml:

Add a new setting to determine whether to consider the scripting flag on when parsing HTML. By default, we will
only turn the scripting flag on if script execution is enabled; however, this may be set such that we may
consider the scripting flag set, even though script execution is disabled.

  • page/SettingsBase.h:
11:43 AM Changeset in webkit [254799] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[WPE] Gardening, synchronize with GTK TestExpectations
https://bugs.webkit.org/show_bug.cgi?id=206473

Unreviewed gardening.

  • platform/wpe/TestExpectations:
9:51 AM Changeset in webkit [254798] by Kocsen Chung
  • 1 copy in tags/Safari-610.1.1.1

Tag Safari-610.1.1.1.

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

[LFC] LayoutState constructor shouldn't take LayoutTreeContent
https://bugs.webkit.org/show_bug.cgi?id=206471

Reviewed by Zalan Bujtas.

It just needs the root container.

This is preparation for more performant layout box construction and ownership model in the integration code.

  • layout/LayoutContext.h:
  • layout/LayoutState.cpp:

(WebCore::Layout::LayoutState::LayoutState):

Take Document (to compute quirks mode) and the root box only.

(WebCore::Layout::LayoutState::displayBoxForRootLayoutBox):
(WebCore::Layout::LayoutState::setViewportSize):
(WebCore::Layout::LayoutState::viewportSize const):
(WebCore::Layout::LayoutState::setIsIntegratedRootBoxFirstChild):
(WebCore::Layout::LayoutState::isIntegratedRootBoxFirstChild const): Deleted.

Make this a bit set by the integration code.

  • layout/LayoutState.h:

(WebCore::Layout::LayoutState::root const):
(WebCore::Layout::LayoutState::isIntegratedRootBoxFirstChild const):
(WebCore::Layout::LayoutState::rootRenderer const): Deleted.

  • layout/Verification.cpp:

(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree):

  • layout/inlineformatting/InlineFormattingContext.cpp:

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

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::layout):

Also allocate LayoutState directly from LineLayout using Optional.

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::printLayoutTreeForLiveDocuments):

  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::layoutUsingFormattingContext):

  • rendering/updating/RenderTreeUpdater.cpp:
8:46 AM Changeset in webkit [254796] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Rename trailing collapsible content to trailing trimmable
https://bugs.webkit.org/show_bug.cgi?id=206447
<rdar://problem/58697414>

Reviewed by Antti Koivisto.

Trimming is the spec term for removing trailing inline content (also this helps to not confuse
trailing trimming and whitespace collapsing.)

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::LineBuilder):
(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::revert):
(WebCore::Layout::LineBuilder::removeTrailingTrimmableContent):
(WebCore::Layout::LineBuilder::visuallyCollapsePreWrapOverflowContent):
(WebCore::Layout::LineBuilder::collectHangingContent):
(WebCore::Layout::LineBuilder::appendInlineContainerEnd):
(WebCore::Layout::LineBuilder::appendTextContent):
(WebCore::Layout::LineBuilder::appendNonReplacedInlineBox):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::TrimmableTrailingContent):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::append):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::remove):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::removeTrailingRun):
(WebCore::Layout::LineBuilder::InlineItemRun::isTrimmableWhitespace const):
(WebCore::Layout::LineBuilder::removeTrailingCollapsibleContent): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::CollapsibleContent): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::append): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::collapse): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::collapseTrailingRun): Deleted.
(WebCore::Layout::LineBuilder::InlineItemRun::isCollapsibleWhitespace const): Deleted.

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::trimmableTrailingWidth const):
(WebCore::Layout::LineBuilder::isTrailingRunFullyTrimmable const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::isTrailingRunFullyTrimmable const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::isTrailingRunPartiallyTrimmable const):
(WebCore::Layout::LineBuilder::TrimmableTrailingContent::reset):
(WebCore::Layout::LineBuilder::trailingCollapsibleWidth const): Deleted.
(WebCore::Layout::LineBuilder::isTrailingRunFullyCollapsible const): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::width const): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::firstRunIndex): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::isEmpty const): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::isTrailingRunFullyCollapsible const): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::isTrailingRunPartiallyCollapsible const): Deleted.
(WebCore::Layout::LineBuilder::CollapsibleContent::reset): Deleted.

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::tryAddingFloatItems):
(WebCore::Layout::LineLayoutContext::tryAddingInlineItems):

8:20 AM Changeset in webkit [254795] by Kocsen Chung
  • 8 edits in branches/safari-610.1.1-branch/Source

Versioning.

6:01 AM Changeset in webkit [254794] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

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

fast/css/content/content-none.html asserts in
LineBuilder::CollapsibleContent::collapse() (Requested by
zalan on #webkit).

Reverted changeset:

"[LFC][IFC] Do not construct a dedicated run for the trailing
(fully) collapsed whitespace."
https://bugs.webkit.org/show_bug.cgi?id=206428
https://trac.webkit.org/changeset/254780

Jan 17, 2020:

11:21 PM Changeset in webkit [254793] by Simon Fraser
  • 4 edits in trunk/LayoutTests

REGRESSION (r252205?): [ Mac wk2 ] tiled-drawing/scrolling/fast-scroll-select-latched-mainframe-with-handler.html became very flaky
https://bugs.webkit.org/show_bug.cgi?id=206296

Reviewed by Ryosuke Niwa.

Attempt to de-flake this test. It was using js-test-pre/post, but not jsTestIsAsync/finishJSTest(), and seemed to sometimes
dump testPassed() a second even after notifyDone() was called. The <pre> is made fixed size so that the length of the layer
tree dump doesn't change the layer sizes.

Also clean it up to remove unused CSS and script.

  • platform/mac-wk2/TestExpectations:
  • tiled-drawing/scrolling/fast-scroll-select-latched-mainframe-with-handler-expected.txt:
  • tiled-drawing/scrolling/fast-scroll-select-latched-mainframe-with-handler.html:
11:09 PM Changeset in webkit [254792] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Gardening mouse cursor style change tests
https://bugs.webkit.org/show_bug.cgi?id=206455

Unreviewed gardening.

Patch by Lauro Moura <Lauro Moura> on 2020-01-17

  • platform/gtk/TestExpectations:
10:56 PM Changeset in webkit [254791] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Garden webrtc b/f cache tests
https://bugs.webkit.org/show_bug.cgi?id=206465

Unreviewed gardening.

Patch by Lauro Moura <Lauro Moura> on 2020-01-17

  • platform/gtk/TestExpectations:
9:49 PM Changeset in webkit [254790] by cathiechen
  • 46 edits
    5 adds in trunk

Add support for scroll behavior parsing
https://bugs.webkit.org/show_bug.cgi?id=205009

Reviewed by Frédéric Wang.

Based on the patch by Frédéric Wang.

LayoutTests/imported/w3c:

  • web-platform-tests/css/cssom-view/inheritance-expected.txt:
  • web-platform-tests/css/cssom-view/inheritance.html:
  • web-platform-tests/css/cssom-view/parsing/scroll-behavior-computed-expected.txt:
  • web-platform-tests/css/cssom-view/parsing/scroll-behavior-computed.html:
  • web-platform-tests/css/cssom-view/parsing/scroll-behavior-valid-expected.txt:
  • web-platform-tests/css/cssom-view/parsing/scroll-behavior-valid.html:

Source/WebCore:

Add support for parsing scroll-behavior css property and ScrollOptions.

Tests: LayoutTests/imported/w3c/web-platform-tests/css/cssom-view/inheritance.html

LayoutTests/web-platform-tests/css/cssom-view/parsing/scroll-behavior-computed.html
LayoutTests/web-platform-tests/css/cssom-view/parsing/scroll-behavior-valid.html

  • CMakeLists.txt: Add IDL files for ScrollOptions and ScrollBehavior.
  • DerivedSources.make:
  • Headers.cmake: Add headers for ScrollBehavor and ScrollOptions.
  • Sources.txt: Add ScrollBehavor and ScrollOptions implementation.
  • WebCore.xcodeproj/project.pbxproj: Add files to the build system.
  • css/CSSComputedStyleDeclaration.cpp: Handle scroll-behavior.

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json: Add scroll-behavior.
  • css/CSSValueKeywords.in: Add keywords for scroll-behavior.
  • css/parser/CSSParserContext.cpp: Add runtime config for scroll-behavior.

(WebCore::CSSParserContext::CSSParserContext):
(WebCore::operator==):

  • css/parser/CSSParserContext.h: Ditto.

(WebCore::CSSParserContextHash::hash):

  • css/parser/CSSParserFastPaths.cpp: Remove scroll-behavior templates. It is handled in the slow path since property can be disabled.

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::CSSParserFastPaths::isKeywordPropertyID):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeScrollBehavior):
(WebCore::CSSPropertyParser::parseSingleValue): Parse scroll-behavior (only if enabled).

  • page/ScrollBehavior.cpp: Added.

(WebCore::useSmoothScrolling): Helper funciton to determine the scroll behavior to apply to an element from the CSS and DOM behavior.

  • page/ScrollBehavior.h: Added.
  • page/ScrollBehavior.idl: Added.
  • page/ScrollIntoViewOptions.h: Make this class inherits from ScrollOption. Also remove unnecessary forward declaration.
  • page/ScrollIntoViewOptions.idl: Make this class inherits from ScrollOption.
  • page/ScrollOptions.h: Added.
  • page/ScrollOptions.idl: Added.
  • page/ScrollToOptions.h: Make this struct inherits from ScrollOptions.

(WebCore::ScrollToOptions::ScrollToOptions):
(WebCore::normalizeNonFiniteCoordinatesOrFallBackTo): Copy the current ScrollToOptions so that the scroll behavior is preserved.

  • page/ScrollToOptions.idl: Make this class inherit from ScrollOptions.
  • page/Settings.yaml: New setting for CSSOM View smooth scrolling.
  • rendering/style/RenderStyle.h: Handle 'smooth scrolling' boolean data.

(WebCore::RenderStyle::useSmoothScrolling const):
(WebCore::RenderStyle::setUseSmoothScrolling):
(WebCore::RenderStyle::initialUseSmoothScrolling):

  • rendering/style/StyleRareNonInheritedData.cpp:

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

  • rendering/style/StyleRareNonInheritedData.h:
  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertSmoothScrolling):

Source/WebKit:

Add CSSOM smooth scrolling as an experimental feature.

  • Shared/WebPreferences.yaml:

Source/WebKitLegacy/mac:

Add run time flag for CSSOMViewSmoothScrolling.

  • WebView/WebPreferenceKeysPrivate.h: Handle CSSOMViewSmoothScrolling by.
  • WebView/WebPreferences.mm:

([WebPreferences initialize]): Disable CSSOMViewSmoothScrolling by default.
(-[WebPreferences CSSOMViewSmoothScrollingEnabled]): Getter.
(-[WebPreferences setCSSOMViewSmoothScrollingEnabled:]): Setter.

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

(-[WebView _preferencesChanged:]):

Source/WebKitLegacy/win:

  • Interfaces/IWebPreferencesPrivate.idl: Handle smooth scrolling option.
  • WebPreferenceKeysPrivate.h: Ditto.
  • WebPreferences.cpp: Ditto.

(WebPreferences::initializeDefaultSettings):
(WebPreferences::CSSOMViewSmoothScrollingEnabled):
(WebPreferences::setCSSOMViewSmoothScrollingEnabled):

  • WebPreferences.h: Ditto.
  • WebView.cpp: Ditto.

(WebView::notifyPreferencesChanged):

Tools:

  • DumpRenderTree/TestOptions.cpp:

(TestOptions::TestOptions): Parse CSSOMViewSmoothScrollingEnabled.

  • DumpRenderTree/TestOptions.h: Add CSSOMViewSmoothScrollingEnabled, disabled by default.
  • DumpRenderTree/mac/DumpRenderTree.mm:

(enableExperimentalFeatures):
(setWebPreferencesForTestOptions): Set CSSOMViewSmoothScrollingEnabled from the test options.

9:42 PM Changeset in webkit [254789] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

iOS: Prepare deploying Ref/RefPtr in touch event code
https://bugs.webkit.org/show_bug.cgi?id=206466

Reviewed by Wenson Hsieh.

Introduce a new variant of dispatchTouchEvent, which takes EventTargetTouchArrayMap that uses
Ref<EventTarget> as keys instead of raw pointers to EventTarget as is the case in EventTargetTouchMap.

  • page/EventHandler.h:

(WebCore::EventHandler::EventTargetTouchArrayMap): Added.
(WebCore::EventHandler::dispatchTouchEvent): Added the declaration for new variant.

7:24 PM Changeset in webkit [254788] by sbarati@apple.com
  • 5 edits
    1 add in trunk

Air O0 should have better stack allocation
https://bugs.webkit.org/show_bug.cgi?id=206436

Reviewed by Tadeu Zagallo.

JSTests:

  • wasm/stress/dont-stack-overflow-in-air.js: Added.

Source/JavaScriptCore:

This patch adds a simple stack slot allocator to Air O0 to make code
use smaller stack frames. The huge stack frames from the old stack
allocator were leading to stack overflows in some programs. Before,
each Tmp got its own stack slot. The new allocator works similar to O0's
register allocator. This stack allocator linearizes the program and uses live
range end as an opportunity to place the stack slot on a free list of
available stack slots. This patch also fixes an issue in our linearization code
where the head of a block and the tail of another block would share the
same linearization index. This didn't matter for register allocation, but
does matter for the stack allocator. So "live at head", and "live at tail"
now get their own linearization index.

  • b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:

(JSC::B3::Air::GenerateAndAllocateRegisters::buildLiveRanges):
(JSC::B3::Air::GenerateAndAllocateRegisters::prepareForGeneration):
(JSC::B3::Air::GenerateAndAllocateRegisters::generate):

  • b3/air/AirAllocateRegistersAndStackAndGenerateCode.h:
  • b3/air/AirLiveness.h:
6:49 PM Changeset in webkit [254787] by ddkilzer@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Add missing header guards
<https://webkit.org/b/206448>

Reviewed by Mark Lam.

  • heap/IsoHeapCellType.h:
  • wasm/WasmFaultSignalHandler.h:
  • Add #pragma once header guard.
6:22 PM Changeset in webkit [254786] by Simon Fraser
  • 5 edits in trunk

Tools:
fast/forms/ios/zoom-after-input-tap-wide-input.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=206313

Reviewed by Wenson Hsieh.

The timeout was caused by the previous test, fast/forms/ios/validation-bubble-dismiss-on-tap.html,
which puts up a validation bubble whose implementation involves showing a modal UIViewController.
That view controller disappears with an animation, which happened after we're proceeded to the next
test, and the overlay view could intercept touches thus breaking any subsequent touch-based test.

Fix by having platformResetStateToConsistentValues() wait for the presentedViewController to
go to nil, which requires spinning the runloop.

platformResetStateToConsistentValues() will return false if we fail to remove the presented view controller,
which will trigger a timeout with a log.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::platformResetStateToConsistentValues):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::cocoaResetStateToConsistentValues):

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetStateToConsistentValues):

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::platformResetStateToConsistentValues):

LayoutTests:
Some iOS tests using UIHelper.dragFromPointToPoint() are flakey
https://bugs.webkit.org/show_bug.cgi?id=206441

Reviewed by Wenson Hsieh.

Unskip tests.

  • platform/ios-wk2/TestExpectations:
  • platform/ios/TestExpectations:
6:13 PM Changeset in webkit [254785] by Megan Gardner
  • 16 edits in trunk

Use Visible Position to calculate Positions for highlights
https://bugs.webkit.org/show_bug.cgi?id=206314

Reviewed by Ryosuke Niwa.

Source/WebCore:

When after layout is complete create a VisibleSelection from and highlight StaticRanges which
don't have position data yet. This will make sure that the information is availble when
rendering, as Visible Positions and Visible Selections cannot be made while rendering.
Also, add the ability to make a VisibleSelection from a Static Range to simplify the code.

Updated Test:

  • LayoutTests/http/wpt/css/css-highlight-api/highlight-text-across-elements.html:
  • LayoutTests/http/wpt/css/css-highlight-api/highlight-text-cascade.html:
  • LayoutTests/http/wpt/css/css-highlight-api/highlight-text-replace.html:
  • LayoutTests/http/wpt/css/css-highlight-api/highlight-text.html:
  • Modules/highlight/HighlightRangeGroup.cpp:

(WebCore::HighlightRangeGroup::HighlightRangeGroup):
(WebCore::HighlightRangeGroup::create):
(WebCore::HighlightRangeGroup::initializeSetLike):
(WebCore::HighlightRangeGroup::removeFromSetLike):
(WebCore::HighlightRangeGroup::clearFromSetLike):
(WebCore::HighlightRangeGroup::addToSetLike):

  • Modules/highlight/HighlightRangeGroup.h:

(WebCore::HighlightRangeData::create):
(WebCore::HighlightRangeData::HighlightRangeData):
(WebCore::HighlightRangeGroup::rangesData const):
(WebCore::HighlightRangeGroup::ranges const): Deleted.

  • Modules/highlight/HighlightRangeGroup.idl:
  • editing/VisibleSelection.cpp:

(WebCore::VisibleSelection::create):

  • editing/VisibleSelection.h:
  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::collectMarkedTextsForHighlights const):

  • rendering/SelectionRangeData.cpp:

(WebCore::SelectionRangeData::selectionStateForRenderer):

LayoutTests:

  • highlight/resources/highlight-frame.html:
  • http/wpt/css/css-highlight-api/highlight-text-across-elements.html:
  • http/wpt/css/css-highlight-api/highlight-text-cascade.html:
  • http/wpt/css/css-highlight-api/highlight-text-replace.html:
  • http/wpt/css/css-highlight-api/highlight-text.html:
6:00 PM Changeset in webkit [254784] by Peng Liu
  • 3 edits in trunk/Source/WebKit

Fix a build failure related to the feature flag (GPU_PROCESS)
https://bugs.webkit.org/show_bug.cgi?id=206453

Reviewed by Eric Carlson.

No new tests - no added or changed functionality.

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
5:00 PM Changeset in webkit [254783] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

JSModuleLoader's printableModuleKey() should never throw.
https://bugs.webkit.org/show_bug.cgi?id=206461
<rdar://problem/58696678>

Reviewed by Michael Saboff.

JSTests:

  • stress/printableModuleKey-should-never-throw.js: Added.

Source/JavaScriptCore:

Hence, it should be using a CatchScope instead of a ThrowScope.

  • runtime/JSModuleLoader.cpp:

(JSC::printableModuleKey):

4:48 PM Changeset in webkit [254782] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

AX: Unable to use AccessibilityObject::replaceTextInRange to insert text at first time when the text fields are empty
https://bugs.webkit.org/show_bug.cgi?id=206093
<rdar://problem/58491448>

Patch by Canhai Chen <canhai_chen@apple.com> on 2020-01-17
Reviewed by Chris Fleizach.

Source/WebCore:

When we are trying to insert text in an empty text field with (0, 0) range, the frame selection will create a
new VisibleSelection in FrameSelection::setSelectedRange, and the container node that this new VisibleSelection
returns is the parent node of the text field element, which could be a HTMLDivElement or HTMLBodyElement.
Because the container node is not editable, it failed to insert text in Editor::replaceSelectionWithText later.

Return nullptr if the range is (0, 0) and the text length is 0 in AccessibilityObject::rangeForPlainTextRange,
so that when the frame selection is trying to setSelectedRange before replacing text, instead of creating an
uneditable VisibleSelection, it will just return and later in Editor::replaceSelectionWithText, it will use
the default VisibleSelection, of which the container node is an editable TextControlInnerTextElement.

This change does not affect the existing behaviors of text replacement. Add a new test for text replacement
with empty range in editable div, text input, and textarea.

Test: accessibility/mac/replace-text-with-empty-range.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::rangeForPlainTextRange const):

LayoutTests:

Test text replacement with empty range in editable div, text input, and textarea.

  • accessibility/mac/replace-text-with-empty-range-expected.txt: Added.
  • accessibility/mac/replace-text-with-empty-range.html: Added.
4:43 PM Changeset in webkit [254781] by basuke.suzuki@sony.com
  • 49 edits in trunk/Source/bmalloc

[bmalloc] Define alias for std::lock_guard and std::unique_lock for better readability
https://bugs.webkit.org/show_bug.cgi?id=206443

Reviewed by Yusuke Suzuki.

There are two types of lock holder in bmalloc: std::lock_guard and std::unique_lock. Their names are relatively long
and a bit harder to distinguish them each other. Define simple type name for them, LockHolder and UniqueLockHolder.

  • bmalloc/AllIsoHeaps.cpp:

(bmalloc::AllIsoHeaps::AllIsoHeaps):
(bmalloc::AllIsoHeaps::add):
(bmalloc::AllIsoHeaps::head):

  • bmalloc/AllIsoHeaps.h:
  • bmalloc/Allocator.cpp:

(bmalloc::Allocator::reallocateImpl):
(bmalloc::Allocator::refillAllocatorSlowCase):
(bmalloc::Allocator::allocateLarge):

  • bmalloc/CryptoRandom.cpp:

(bmalloc::ARC4RandomNumberGenerator::ARC4RandomNumberGenerator):
(bmalloc::ARC4RandomNumberGenerator::randomValues):

  • bmalloc/Deallocator.cpp:

(bmalloc::Deallocator::scavenge):
(bmalloc::Deallocator::processObjectLog):
(bmalloc::Deallocator::deallocateSlowCase):

  • bmalloc/Deallocator.h:

(bmalloc::Deallocator::lineCache):

  • bmalloc/DebugHeap.cpp:

(bmalloc::DebugHeap::DebugHeap):
(bmalloc::DebugHeap::memalignLarge):
(bmalloc::DebugHeap::freeLarge):

  • bmalloc/DebugHeap.h:
  • bmalloc/DeferredTrigger.h:
  • bmalloc/DeferredTriggerInlines.h:

(bmalloc::DeferredTrigger<trigger>::didBecome):
(bmalloc::DeferredTrigger<trigger>::handleDeferral):

  • bmalloc/Environment.cpp:

(bmalloc::Environment::Environment):

  • bmalloc/Environment.h:
  • bmalloc/Gigacage.cpp:

(bmalloc::PrimitiveDisableCallbacks::PrimitiveDisableCallbacks):
(Gigacage::disablePrimitiveGigacage):
(Gigacage::addPrimitiveDisableCallback):
(Gigacage::removePrimitiveDisableCallback):

  • bmalloc/Heap.cpp:

(bmalloc::Heap::Heap):
(bmalloc::Heap::freeableMemory):
(bmalloc::Heap::markAllLargeAsEligibile):
(bmalloc::Heap::decommitLargeRange):
(bmalloc::Heap::scavenge):
(bmalloc::Heap::scavengeToHighWatermark):
(bmalloc::Heap::deallocateLineCache):
(bmalloc::Heap::allocateSmallChunk):
(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::deallocateSmallLine):
(bmalloc::Heap::allocateSmallBumpRangesByMetadata):
(bmalloc::Heap::allocateSmallBumpRangesByObject):
(bmalloc::Heap::splitAndAllocate):
(bmalloc::Heap::allocateLarge):
(bmalloc::Heap::isLarge):
(bmalloc::Heap::largeSize):
(bmalloc::Heap::shrinkLarge):
(bmalloc::Heap::deallocateLarge):
(bmalloc::Heap::externalCommit):
(bmalloc::Heap::externalDecommit):

  • bmalloc/Heap.h:

(bmalloc::Heap::allocateSmallBumpRanges):
(bmalloc::Heap::derefSmallLine):

  • bmalloc/HeapConstants.cpp:

(bmalloc::HeapConstants::HeapConstants):

  • bmalloc/HeapConstants.h:
  • bmalloc/IsoAllocatorInlines.h:

(bmalloc::IsoAllocator<Config>::allocateSlow):
(bmalloc::IsoAllocator<Config>::scavenge):

  • bmalloc/IsoDeallocatorInlines.h:

(bmalloc::IsoDeallocator<Config>::deallocate):
(bmalloc::IsoDeallocator<Config>::scavenge):

  • bmalloc/IsoDirectory.h:
  • bmalloc/IsoDirectoryInlines.h:

(bmalloc::passedNumPages>::takeFirstEligible):
(bmalloc::passedNumPages>::didBecome):
(bmalloc::passedNumPages>::didDecommit):
(bmalloc::passedNumPages>::scavengePage):
(bmalloc::passedNumPages>::scavenge):
(bmalloc::passedNumPages>::scavengeToHighWatermark):
(bmalloc::passedNumPages>::forEachCommittedPage):

  • bmalloc/IsoHeapImpl.h:
  • bmalloc/IsoHeapImplInlines.h:

(bmalloc::IsoHeapImpl<Config>::takeFirstEligible):
(bmalloc::IsoHeapImpl<Config>::didBecomeEligibleOrDecommited):
(bmalloc::IsoHeapImpl<Config>::scavenge):
(bmalloc::IsoHeapImpl<Config>::scavengeToHighWatermark):
(bmalloc::IsoHeapImpl<Config>::numLiveObjects):
(bmalloc::IsoHeapImpl<Config>::numCommittedPages):
(bmalloc::IsoHeapImpl<Config>::forEachDirectory):
(bmalloc::IsoHeapImpl<Config>::forEachCommittedPage):
(bmalloc::IsoHeapImpl<Config>::forEachLiveObject):
(bmalloc::IsoHeapImpl<Config>::allocateFromShared):

  • bmalloc/IsoPage.h:
  • bmalloc/IsoPageInlines.h:

(bmalloc::IsoPage<Config>::free):
(bmalloc::IsoPage<Config>::startAllocating):
(bmalloc::IsoPage<Config>::stopAllocating):
(bmalloc::IsoPage<Config>::forEachLiveObject):

  • bmalloc/IsoSharedHeap.h:

(bmalloc::IsoSharedHeap::IsoSharedHeap):

  • bmalloc/IsoSharedHeapInlines.h:

(bmalloc::IsoSharedHeap::allocateNew):
(bmalloc::IsoSharedHeap::allocateSlow):

  • bmalloc/IsoSharedPage.h:
  • bmalloc/IsoSharedPageInlines.h:

(bmalloc::IsoSharedPage::free):
(bmalloc::IsoSharedPage::startAllocating):
(bmalloc::IsoSharedPage::stopAllocating):

  • bmalloc/IsoTLSDeallocatorEntry.h:
  • bmalloc/IsoTLSDeallocatorEntryInlines.h:

(bmalloc::IsoTLSDeallocatorEntry<Config>::IsoTLSDeallocatorEntry):

  • bmalloc/IsoTLSInlines.h:

(bmalloc::IsoTLS::ensureHeap):

  • bmalloc/IsoTLSLayout.cpp:

(bmalloc::IsoTLSLayout::IsoTLSLayout):
(bmalloc::IsoTLSLayout::add):

  • bmalloc/IsoTLSLayout.h:
  • bmalloc/Mutex.h:

(bmalloc::sleep):
(bmalloc::waitUntilFalse):

  • bmalloc/ObjectType.cpp:

(bmalloc::objectType):

  • bmalloc/PerProcess.cpp:

(bmalloc::getPerProcessData):

  • bmalloc/PerProcess.h:

(bmalloc::PerProcess::getSlowCase):

  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::Scavenger):
(bmalloc::Scavenger::run):
(bmalloc::Scavenger::runSoon):
(bmalloc::Scavenger::scheduleIfUnderMemoryPressure):
(bmalloc::Scavenger::schedule):
(bmalloc::Scavenger::timeSinceLastFullScavenge):
(bmalloc::Scavenger::timeSinceLastPartialScavenge):
(bmalloc::Scavenger::scavenge):
(bmalloc::Scavenger::partialScavenge):
(bmalloc::Scavenger::freeableMemory):
(bmalloc::Scavenger::threadRunLoop):

  • bmalloc/Scavenger.h:
  • bmalloc/SmallLine.h:

(bmalloc::SmallLine::refCount):
(bmalloc::SmallLine::ref):
(bmalloc::SmallLine::deref):

  • bmalloc/SmallPage.h:

(bmalloc::SmallPage::refCount):
(bmalloc::SmallPage::hasFreeLines const):
(bmalloc::SmallPage::setHasFreeLines):
(bmalloc::SmallPage::ref):
(bmalloc::SmallPage::deref):

  • bmalloc/StaticPerProcess.h:
  • bmalloc/VMHeap.cpp:

(bmalloc::VMHeap::VMHeap):

  • bmalloc/VMHeap.h:
  • bmalloc/Zone.cpp:

(bmalloc::Zone::Zone):

  • bmalloc/Zone.h:
  • bmalloc/bmalloc.cpp:

(bmalloc::api::tryLargeZeroedMemalignVirtual):
(bmalloc::api::freeLargeVirtual):
(bmalloc::api::setScavengerThreadQOSClass):

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

[LFC][IFC] Do not construct a dedicated run for the trailing (fully) collapsed whitespace.
https://bugs.webkit.org/show_bug.cgi?id=206428
<rdar://problem/58687058>

Reviewed by Antti Koivisto.

This patch reduces the final run count on a line from 2 to 1 in the common cases where the line ends in a collapsed trailing whitespace.
~3% progression on PerformanceTests/Layout/line-layout-simple.html.

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::ContinuousContent::isEligible const):
(WebCore::Layout::LineBuilder::ContinuousContent::expand):
(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::alignContentVertically):
(WebCore::Layout::LineBuilder::runContentHeight const):
(WebCore::Layout::LineBuilder::CollapsibleContent::collapse):
(WebCore::Layout::LineBuilder::ContinuousContent::append): Deleted.

4:41 PM Changeset in webkit [254779] by Matt Lewis
  • 5 edits
    3 deletes in trunk/Source/WebCore

Unreviewed, rolling out r254564.

This caused internal test crashes.

Reverted changeset:

"Introduce an abstract SampleBufferDisplayLayer"
https://bugs.webkit.org/show_bug.cgi?id=206066
https://trac.webkit.org/changeset/254564

4:40 PM Changeset in webkit [254778] by Matt Lewis
  • 26 edits
    13 deletes in trunk/Source

Unreviewed, rolling out r254688.

This caused internal test crashes.

Reverted changeset:

"Add support for MediaStream video track rendering in
GPUProcess"
https://bugs.webkit.org/show_bug.cgi?id=206286
https://trac.webkit.org/changeset/254688

4:32 PM Changeset in webkit [254777] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[EWS] Print disk space usage for windows bots
https://bugs.webkit.org/show_bug.cgi?id=206421

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(PrintConfiguration): Windows bot use cygwin, so df command works.

4:30 PM Changeset in webkit [254776] by Alan Coon
  • 3 edits
    4 deletes in branches/safari-608.5.7.3-branch

Revert "Cherry-pick r254349. rdar://problem/58529694"

This reverts commit r254451.

4:27 PM Changeset in webkit [254775] by Alan Coon
  • 3 edits
    4 deletes in branches/safari-608-branch

Revert "Cherry-pick r254349. rdar://problem/58529693"

This reverts commit 254443.

4:26 PM Changeset in webkit [254774] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Perform validation of patch before running layout-tests on Windows
https://bugs.webkit.org/show_bug.cgi?id=206424

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/factories.py:
4:16 PM Changeset in webkit [254773] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Unchecking Enable Preview Features on Engineering and Preview builds does not affect WI.arePreviewFeaturesEnabled()
https://bugs.webkit.org/show_bug.cgi?id=204026

Reviewed by Brian Burg.

Make WI.arePreviewFeaturesEnabled() return false when Enable Preview Features is unchecked.

  • UserInterface/Base/Setting.js:

(WI.canShowPreviewFeatures):
(WI.arePreviewFeaturesEnabled):
(WI.isTechnologyPreviewBuild): Deleted.
(WI.canShowPreviewFeatures): Added.

  • UserInterface/Views/SettingsTabContentView.js:
3:57 PM Changeset in webkit [254772] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Don't call CFURLRequestSetShouldStartSynchronously from Catalyst WebKit
https://bugs.webkit.org/show_bug.cgi?id=206446
<rdar://problem/57382980>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-01-17
Reviewed by Tim Horton.

We call it sometimes on iOS but Catalyst WebKit uses macOS CFNetwork, which doesn't like starting synchronously.

  • platform/network/mac/ResourceHandleMac.mm:

(WebCore::ResourceHandle::createNSURLConnection):

3:37 PM Changeset in webkit [254771] by Alan Coon
  • 5 edits in branches/safari-609-branch

Re-apply patch. rdar://problem/58353217

This reverts commit r254768.

3:36 PM Changeset in webkit [254770] by Alan Coon
  • 1 edit in branches/safari-609-branch/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in

Unreviewed build fix. rdar://problem/58353217

3:35 PM Changeset in webkit [254769] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit

[iOS] ASSERTION FAILED: ASSERT_NOT_REACHED() in selectionChangedWithTouch(WKContentView*, WebCore::IntPoint const&, unsigned int, unsigned int, WebKit::CallbackBase::Error)
https://bugs.webkit.org/show_bug.cgi?id=206427

Reviewed by Wenson Hsieh.

Remove ASSERT_NOT_REACHED() usage in callbacks selectionChangedWithTouch() and selectionChangedWithGesture().
These callbacks can handle being- and should expect to sometimes be- invoked with a non-None error value.
In particular, if the WebProcess crashes then these callbacks will be invoked with error CallbackBase::Error::ProcessExited.

  • UIProcess/ios/WKContentViewInteraction.mm:

(selectionChangedWithGesture): Remove ASSERT_NOT_REACHED() when an error occurs. This
function is capable of handling this error.
(selectionChangedWithTouch): Ditto.

3:02 PM Changeset in webkit [254768] by Alan Coon
  • 5 edits in branches/safari-609-branch

Revert "Apply patch. rdar://problem/58353217"

This reverts commit r254665.

2:31 PM Changeset in webkit [254767] by eric.carlson@apple.com
  • 5 edits in trunk/Source/WebCore

REGRESSION (r254483): media/track/track-cues-sorted-before-dispatch.html became very flaky
https://bugs.webkit.org/show_bug.cgi?id=206225
<rdar://problem/58634315>

Reviewed by Jer Noble.

The list of text track cues that are to fire events are sorted before events are
fired. Cue were being sorted by track, then by start time, and then by end time.
This meant that the sort order of two cues in the same track with identical start
and end times was not stable, causing this test to be flaky. The spec says to sort
by a cue's position in the track cue list when start and end times are identical,
so do that.

No new tests, this fixes a flaky test.

  • html/track/TextTrackCue.cpp:

(WebCore::TextTrackCue::cueIndex const):
(WebCore::TextTrackCue::isOrderedBefore const):

  • html/track/TextTrackCue.h:
  • html/track/TextTrackCueList.cpp:

(WebCore::cueSortsBefore):
(WebCore::TextTrackCueList::cueIndex const):
(WebCore::TextTrackCueList::add):
(WebCore::TextTrackCueList::updateCueIndex):
(WebCore::compareCues): Deleted.

  • html/track/TextTrackCueList.h:
2:07 PM Changeset in webkit [254766] by Andres Gonzalez
  • 8 edits
    2 moves in trunk/Source/WebCore

Rename AXIsolatedTreeNode.cpp/h to match AXIsolatedObject class name.
https://bugs.webkit.org/show_bug.cgi?id=206434

Reviewed by Chris Fleizach.

File renaming to match AXIsolatedObject class name.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • accessibility/AXObjectCache.cpp:
  • accessibility/isolatedtree/AXIsolatedObject.cpp: Renamed from Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp.
  • accessibility/isolatedtree/AXIsolatedObject.h: Renamed from Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h.
  • accessibility/isolatedtree/AXIsolatedTree.cpp:
  • accessibility/isolatedtree/AXIsolatedTree.h:
  • accessibility/mac/AXObjectCacheMac.mm:
1:57 PM Changeset in webkit [254765] by Megan Gardner
  • 2 edits in trunk/Tools

Fix assertion when test fast/events/ios/rotation/basic-rotation.html is followed by fast/events/ios/rotation/do-not-shrink-to-fit-content-after-rotation.html
https://bugs.webkit.org/show_bug.cgi?id=206383
<rdar://problem/58618513>

Reviewed by Tim Horton.

Rotation tests are asserting because _didEndRotation is being called multiple times.
The call is at the end of viewWillTransitionToSize, which is called with the same
size that the view already is. Therefore, if no size is changing, early out,
which keeps this double call from happening.

  • WebKitTestRunner/ios/PlatformWebViewIOS.mm:

(-[PlatformWebViewController viewWillTransitionToSize:withTransitionCoordinator:]):

1:43 PM Changeset in webkit [254764] by ysuzuki@apple.com
  • 2 edits in trunk/Source/bmalloc

[bmalloc] Fix IsoHeapImpl's assertion introduced in r254708
https://bugs.webkit.org/show_bug.cgi?id=206440
<rdar://problem/58688794>

Reviewed by Mark Lam.

The assertion introduced in r254708 was wrong.
Fixing it to check the invariant we actually want to ensure.
This fixes TestWTF crash in Debug build.

  • bmalloc/IsoHeapImplInlines.h:

(bmalloc::IsoHeapImpl<Config>::takeFirstEligible):

1:10 PM Changeset in webkit [254763] by Alan Coon
  • 7 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r254433. rdar://problem/58686757

[macCatalyst] UI process crashes on launch after r254101
https://bugs.webkit.org/show_bug.cgi?id=206156
<rdar://problem/58514942>

Reviewed by Brent Fulgham.

Fixes the crash by not soft-linking BackBoardServices in an attempt to invoke BKSDisplayBrightnessGetCurrent on
macCatalyst. Prior to r254101, this was only defined on iOS and not watchOS or tvOS; after this change, it
should be defined only on iOS, watchOS and tvOS.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::registerNotificationObservers):
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::initializeNewWebProcess):
  • UIProcess/WebProcessPool.h:
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

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

1:06 PM Changeset in webkit [254762] by Jonathan Bedard
  • 2 edits in trunk/Tools

Python 3: Add support to run-webkit-tests (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=205291

Unreviewed follow-up fix.

  • Scripts/webkitpy/common/unicode_compatibility.py:

(decode_for): Handle case where provided value is None.

1:03 PM Changeset in webkit [254761] by jer.noble@apple.com
  • 5 edits
    2 adds in trunk

[MSE] Decode glitches when watching videos on CNN.com
https://bugs.webkit.org/show_bug.cgi?id=206412
<rdar://problem/55685630>

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Test: media/media-source/media-source-samples-out-of-order.html

The "Coded frame processing" algorithm has a known shortcoming <https://github.com/w3c/media-source/issues/187>
when dealing appends of with "SAP Type 2" content, or in general terms, appending data where the resulting samples
have presentation times that do not increase monotonically. When this occurs, the ordering of samples in presentation
time will be different from the ordering of samples in decode time. The decoder requires samples to be enqueued in
decode time order, but the MSE specification only checks for overlapping samples in presentation time order. During
appends of out-of-order samples, this can lead to new samples being inserted between a previously appended sample and
the sample on which that sample depends.

To resolve this, add a new step in the implementation of the "coded frame processing" algorithm in
SourceBuffer::sourceBufferPrivateDidReceiveSample(). When the incoming frame is a sync sample, search forward
in the TrackBuffer for all previous samples in between the new sync sample, and the next sync sample. All the
samples found in this step would fail to decode correctly if enqueued after the new (possibly different resolution)
sync sample, so they are removed in this step.

  • Modules/mediasource/SampleMap.cpp:

(WebCore::DecodeOrderSampleMap::findSampleAfterDecodeKey):

  • Modules/mediasource/SampleMap.h:
  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

LayoutTests:

  • media/media-source/media-source-samples-out-of-order-expected.txt: Added.
  • media/media-source/media-source-samples-out-of-order.html: Added.
12:38 PM Changeset in webkit [254760] by Justin Michaud
  • 12 edits in trunk/Source/JavaScriptCore

Separate storage of Structure::m_offset into transition and max offset
https://bugs.webkit.org/show_bug.cgi?id=206365

Reviewed by Saam Barati.

Right now, deleteProperty/removePropertyTransition causes a structure transition to uncacheable dictionary. Other transitions
assume that the transition offset (m_offset) is monotonically increasing. In order to support structure transitions for deletion that
do not involve turning into a dictionary (<https://bugs.webkit.org/show_bug.cgi?id=206430>), we first need to separate the transition
offset (the offset of the property that was added/deleted) from the maximum offset.

For example, suppose we have the following operations:

Structure 1 (pinned property table, transitionOffset = _, maxOffset = 2): x y z (delete y, assuming that deletion transitions have been added)
Structure 2 (transitionOffset = 1, maxOffset = 2): x _ z (add w)
Structure 3 (transitionOffset = 1, maxOffset = 2): x w z

Note that without splitting the two, Structures 2/3 would be impossible to represent.

This change:

We split the existing Structure::m_offset into two 16-bit fields, transitionOffset and maxOffset, and put them in 32-bit rare data fields if they overflow. We also rename _inPrevious fields to
transition_ and lastOffset to maxOffset to make the code more clear.

  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::createStructure):

  • runtime/JSObject.cpp:

(JSC::JSObject::markAuxiliaryAndVisitOutOfLineProperties):
(JSC::JSObject::visitButterflyImpl):

  • runtime/JSObject.h:
  • runtime/JSObjectInlines.h:

(JSC::JSObject::prepareToPutDirectWithoutTransition):

  • runtime/ObjectInitializationScope.cpp:

(JSC::ObjectInitializationScope::verifyPropertiesAreInitialized):

  • runtime/PropertyOffset.h:

(JSC::numberOfOutOfLineSlotsForMaxOffset):
(JSC::numberOfSlotsForMaxOffset):
(JSC::numberOfOutOfLineSlotsForLastOffset): Deleted.
(JSC::numberOfSlotsForLastOffset): Deleted.

  • runtime/Structure.cpp:

(JSC::StructureTransitionTable::contains const):
(JSC::StructureTransitionTable::get const):
(JSC::StructureTransitionTable::add):
(JSC::Structure::Structure):
(JSC::Structure::create):
(JSC::Structure::materializePropertyTable):
(JSC::Structure::addPropertyTransitionToExistingStructureImpl):
(JSC::Structure::addNewPropertyTransition):
(JSC::Structure::changePrototypeTransition):
(JSC::Structure::attributeChangeTransition):
(JSC::Structure::toDictionaryTransition):
(JSC::Structure::nonPropertyTransitionSlow):
(JSC::Structure::flattenDictionaryStructure):
(JSC::Structure::pin):
(JSC::Structure::pinForCaching):
(JSC::Structure::add):

  • runtime/Structure.h:
  • runtime/StructureInlines.h:

(JSC::Structure::forEachPropertyConcurrently):
(JSC::Structure::checkOffsetConsistency const):
(JSC::Structure::add):

  • runtime/StructureRareData.cpp:

(JSC::StructureRareData::StructureRareData):

  • runtime/StructureRareData.h:
12:37 PM Changeset in webkit [254759] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[iOS] Remove the IOHIDEventServiceFastPathUserClient IOKit class
https://bugs.webkit.org/show_bug.cgi?id=206387
<rdar://problem/58663849>

Reviewed by Per Arne Vollan.

After Bug 204770, we no longer interact with the device motion or geolocation systems inside
the WebContent process. Testing and telemetry shows that we no longer access the
IOHIDEventServiceFastPathUserClient, and so should remove access to it.

No new tests because there is no change in behavior.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
12:26 PM Changeset in webkit [254758] by commit-queue@webkit.org
  • 2 edits
    1 add in trunk/LayoutTests

REGRESSION: [iOS 13] svg/custom/glyph-selection-arabic-forms.svg is failing
https://bugs.webkit.org/show_bug.cgi?id=201901

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-01-17
Reviewed by Simon Fraser.

Create a new test expectation for iOS for this test.

  • platform/ios/TestExpectations:
  • platform/ios/svg/custom/glyph-selection-arabic-forms-expected.txt: Added.
12:21 PM Changeset in webkit [254757] by Alexey Shvayka
  • 4 edits in trunk

JSON.parse should lookup prototype chains during revival
https://bugs.webkit.org/show_bug.cgi?id=205769

Reviewed by Saam Barati.

JSTests:

  • test262/expectations.yaml: Mark 4 test cases as passing.

Source/JavaScriptCore:

This patch makes JSON.parse use Get? instead of GetOwnProperty? during revival,
aligning JSC with the spec (step 1 of https://tc39.es/ecma262/#sec-internalizejsonproperty),
SpiderMonkey, and V8.

User-provided reviver can delete properties that are not yet inspected by itself,
making usage GetOwnProperty? non-compliant to the spec.

  • runtime/JSONObject.cpp:

(JSC::Walker::walk):

12:06 PM Changeset in webkit [254756] by beidson@apple.com
  • 5 edits in trunk

TestWebKitAPI.AsyncFunction.Promise times out on slower machines in debug builds.
<rdar://problem/58445164> and https://bugs.webkit.org/show_bug.cgi?id=206012

Reviewed by Keith Miller.

Source/WebKit:

For existing API test.

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _garbageCollectJavaScriptObjectsForTesting]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

Tools:

Previously, to force GC, over 30,000 function calls would be made.
This was too slow on slower machines in debug builds. It eventually would've worked given enough time, but...
It turns just a few hundred function calls with an API call to force GC seems reliable and is much faster.

  • TestWebKitAPI/Tests/WebKitCocoa/AsyncFunction.mm:

(TestWebKitAPI::TEST):
(TestWebKitAPI::tryGCPromise): Deleted.

10:59 AM Changeset in webkit [254755] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit

[iOS] Focusing editable element with WebPage::selectPositionAtPoint() does not bring up keyboard
https://bugs.webkit.org/show_bug.cgi?id=206385
<rdar://problem/57414380>

Reviewed by Wenson Hsieh.

Update the view's state to indicate that the user is performing an interaction for the scope of
WebPage::selectPositionAtPoint(). This permits WebKit to show the keyboard if selecting the
position causes a change in focus (say, the point is inside an unfocused text field).

We likely should do a similar change for all other WebKit IPIs that perform a WebCore::EUserTriggered::UserTriggered
tagged selection change though the callers should be audited to ensure they weren't accidentally
depending on the existing behavior that prevents such selections from bringing up the keyboard.
For now, I only fix WebPage::selectPositionAtPoint() as I've audited that all callers expect it
to bring up the keyboard, if needed.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::selectPositionAtPoint):

10:52 AM Changeset in webkit [254754] by Antti Koivisto
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Use Optional for partialLeading/TrailingTextItem
https://bugs.webkit.org/show_bug.cgi?id=206423

Reviewed by Zalan Bujtas.

Remove the remaining InlineItem heap allocation.

  • layout/inlineformatting/InlineItem.h:
  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::left const): Deleted.
(WebCore::Layout::InlineTextItem::right const): Deleted.

  • layout/inlineformatting/InlineTextItem.h:

Constructor can now be private.

(WebCore::Layout::InlineTextItem::left const):
(WebCore::Layout::InlineTextItem::right const):

  • layout/inlineformatting/LineLayoutContext.h:
10:45 AM Changeset in webkit [254753] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Drop dead code related to local storage prewarming
https://bugs.webkit.org/show_bug.cgi?id=206418

Reviewed by Sam Weinig.

Drop dead code related to local storage prewarming. Sihui neutered it in <https://trac.webkit.org/changeset/248734>
but did not remove the code.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::commitData):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::prewarmLocalStorageIfNecessary): Deleted.

  • page/DOMWindow.h:
  • page/Frame.cpp:

(WebCore::Frame::didPrewarmLocalStorage): Deleted.
(WebCore::Frame::mayPrewarmLocalStorage const): Deleted.

  • page/Frame.h:
10:22 AM Changeset in webkit [254752] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GTK][WPE] Mark several WPT fetch tests as failure
https://bugs.webkit.org/show_bug.cgi?id=206417

Unreviewed gardening.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
10:09 AM Changeset in webkit [254751] by Adrian Perez de Castro
  • 4 edits in trunk/Source

Fix various non-unified build issues introduced since r254327
https://bugs.webkit.org/show_bug.cgi?id=206356

Reviewed by Chris Dumez.

Source/WebCore:

No new tests needed.

  • html/LinkRelAttribute.h: Add missing inclusion of wtf/Markable.h

Source/WebKit:

  • WebProcess/WebCoreSupport/gtk/WebContextMenuClientGtk.cpp:

(WebKit::WebContextMenuClient::insertEmoji): Add missing namespace to WebCore::Frame parameter.

8:24 AM Changeset in webkit [254750] by Alan Bujtas
  • 8 edits in trunk/Source/WebCore

[LFC][IFC] Optimize LineBuilder::appendTextContent for the most common inline content
https://bugs.webkit.org/show_bug.cgi?id=206397
<rdar://problem/58671338>

Reviewed by Antti Koivisto.

~2% progression on PerformanceTests/Layout/line-layout-simple.html.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::LineBuilder):
(WebCore::Layout::shouldPreserveLeadingContent):
(WebCore::Layout::LineBuilder::appendTextContent):
(WebCore::Layout::LineBuilder::appendLineBreak):
(WebCore::Layout::LineBuilder::InlineItemRun::InlineItemRun):

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::InlineItemRun::setIsCollapsed): Deleted.

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::InlineTextItem):

  • layout/inlineformatting/InlineTextItem.h:

(WebCore::Layout::InlineTextItem::isCollapsible const):

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::shouldPreserveTrailingWhitespace): Deleted.

  • layout/inlineformatting/text/TextUtil.h:

(WebCore::Layout::TextUtil::shouldPreserveTrailingWhitespace):

8:16 AM Changeset in webkit [254749] by Antti Koivisto
  • 10 edits in trunk/Source/WebCore

[LFC][IFC] Allocate InlineItems in a vector
https://bugs.webkit.org/show_bug.cgi?id=206411

Reviewed by Zalan Bujtas.

Even the largest InlineItem (InlineTextItem) is small (fits to 24 bytes), and they are allocated
in large numbers (one per word and per whitespace typically). Reduce heap allocations by turning
InlineItem into a fixed size type.

The InlineItem vector is immutable during layout so pointer to items can still be safely used.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::collectInlineContentIfNeeded):

  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::addInlineItem):

  • layout/inlineformatting/InlineItem.cpp:

(WebCore::Layout::InlineItem::InlineItem): Deleted.

  • layout/inlineformatting/InlineItem.h:

(WebCore::Layout::InlineItem::layoutBox const):
(WebCore::Layout::InlineItem::style const):
(WebCore::Layout::InlineItem::InlineItem):

Gather members from the subclasses as protected fields.

  • layout/inlineformatting/InlineSoftLineBreakItem.h:

Move the field to the base class.

(WebCore::Layout::InlineSoftLineBreakItem::position const):
(WebCore::Layout::InlineSoftLineBreakItem::createSoftLineBreakItem):
(WebCore::Layout::InlineSoftLineBreakItem::InlineSoftLineBreakItem):
(): Deleted.

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::createWhitespaceItem): Deleted.
(WebCore::Layout::InlineTextItem::createNonWhitespaceItem): Deleted.
(WebCore::Layout::InlineTextItem::createEmptyItem): Deleted.
(WebCore::Layout::InlineTextItem::InlineTextItem): Deleted.

  • layout/inlineformatting/InlineTextItem.h:

Move the fields to the base class.

(WebCore::Layout::InlineTextItem::start const):
(WebCore::Layout::InlineTextItem::width const):

Place width optional into a separate bit and a value as this allows better packing of members.

(WebCore::Layout::InlineTextItem::createWhitespaceItem):
(WebCore::Layout::InlineTextItem::createNonWhitespaceItem):
(WebCore::Layout::InlineTextItem::createEmptyItem):
(WebCore::Layout::InlineTextItem::InlineTextItem):

Inline construction functions.

(): Deleted.

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::nextWrapOpportunity):
(WebCore::Layout::LineCandidateContent::appendFloat):

Use a raw pointer instead of a WeakPtr. InlineItems are immuttable during layout.

(WebCore::Layout::LineLayoutContext::close):
(WebCore::Layout::LineLayoutContext::nextContentForLine):

  • layout/inlineformatting/LineLayoutContext.h:
8:14 AM Changeset in webkit [254748] by Caio Lima
  • 2 edits in trunk/Source/JavaScriptCore

Bytecode checkpoints break 32bit tests
https://bugs.webkit.org/show_bug.cgi?id=206404

Unreviewed.

  • llint/LowLevelInterpreter32_64.asm:

Reverting change introduced by r254735 that makes 32-bit codes crash
when calling into LLInt slow path.

8:04 AM Changeset in webkit [254747] by Diego Pino Garcia
  • 3 edits
    19 adds in trunk/LayoutTests

[GTK][WPE] Update baselines for several CSS tests
https://bugs.webkit.org/show_bug.cgi?id=206410

Unreviewed gardening.

  • platform/gtk/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/css/css-position/position-absolute-in-inline-002-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/css/css-values/line-break-ch-unit-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/css/css-values/minmax-angle-computed-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/css/css-values/minmax-length-computed-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/css/css-values/minmax-length-percent-computed-expected.txt: Added.
  • platform/wpe/TestExpectations:
  • platform/wpe/imported/w3c/web-platform-tests/css/css-position/position-absolute-in-inline-002-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-sizing/button-min-width-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-transitions/before-load-001-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-transitions/properties-value-auto-001-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-values/line-break-ch-unit-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-values/minmax-angle-computed-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-values/minmax-length-computed-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/css/css-values/minmax-length-percent-computed-expected.txt: Added.
8:00 AM Changeset in webkit [254746] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[WinCairo][WK2] ASSERT(isUIThread()) is failing since r254723
https://bugs.webkit.org/show_bug.cgi?id=206394

Reviewed by Carlos Alberto Lopez Perez.

AtomString::init() should be called after
WTF::initializeThreading() is called on Windows because it has
ASSERT(isUIThread()) and Windows doesn't have a API to get main
thread handle like pthread_main_np.

  • Shared/WebKit2Initialize.cpp:

(WebKit::InitializeWebKit2): Call AtomString::init() after JSC::initializeThreading().

7:56 AM Changeset in webkit [254745] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

IPC hardening for WebPasteboardProxy::SetPasteboardBufferForType message
https://bugs.webkit.org/show_bug.cgi?id=206381

Reviewed by Anders Carlsson.

IPC hardening for WebPasteboardProxy::SetPasteboardBufferForType message. Make sure that the Strings passed over IPC are not
null and that the SharedBuffer returned by SharedBuffer::map() is not null.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::setPasteboardBufferForType):

7:17 AM Changeset in webkit [254744] by Diego Pino Garcia
  • 7 edits
    5 adds in trunk/LayoutTests

[GTK] Update baselines for SVG tests
https://bugs.webkit.org/show_bug.cgi?id=206406

Unreviewed gardening.

  • platform/gtk/imported/w3c/web-platform-tests/svg/geometry/parsing/height-computed-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/geometry/parsing/width-computed-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/path/distance/pathLength-positive-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/svg/path/distance/pathLength-positive-percentage-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/svg/path/distance/pathLength-zero-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/svg/path/distance/pathLength-zero-percentage-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/svg/shapes/reftests/pathlength-003-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/svg/shapes/scripted/disabled-shapes-not-hit-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/text/reftests/textpath-shape-001-expected.txt:
7:03 AM Changeset in webkit [254743] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Optimize nextWrapOpportunity/isAtSoftWrapOpportunity for the most common inline content
https://bugs.webkit.org/show_bug.cgi?id=206395
<rdar://problem/58670070>

Reviewed by Antti Koivisto.

~2% progression on PerformanceTests/Layout/line-layout-simple.html.

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::isAtSoftWrapOpportunity):
(WebCore::Layout::nextWrapOpportunity):

6:00 AM Changeset in webkit [254742] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] Composition underline color is not applied
https://bugs.webkit.org/show_bug.cgi?id=206353

Reviewed by Sergio Villar Senin.

CompositionUnderline::compositionUnderlineColor is not encoded/decoded in IPC messages, so the web process
always uses CompositionUnderlineColor::TextColor ignoring the given color.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<CompositionUnderline>::encode): Encode compositionUnderlineColor.
(IPC::ArgumentCoder<CompositionUnderline>::decode): Decode compositionUnderlineColor.

3:59 AM Changeset in webkit [254741] by clopez@igalia.com
  • 5 edits in trunk/Source/WebCore

[GTK] Turn off antialiasing when rendering with Ahem (v2)
https://bugs.webkit.org/show_bug.cgi?id=204671

Reviewed by Carlos Garcia Campos.

Fix leak caused by r254567 where a RefPtr its created from a FcPattern without adoptRef().
Meanwhile at it, also change defaultFontconfigOptions() to return a RefPtr,
because after r254567 we always modify the pattern.
Change also the FontPlatformData() constructor to take an rvalue reference,
and some of its callers to move the RefPtr, avoiding extra not needed
reference increments/decrements.

Covered by existing tests.

  • platform/graphics/FontPlatformData.h:
  • platform/graphics/freetype/FontCacheFreeType.cpp:

(WebCore::FontCache::systemFallbackForCharacters):
(WebCore::FontCache::createFontPlatformData):

  • platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:

(WebCore::defaultFontconfigOptions):
(WebCore::FontCustomPlatformData::fontPlatformData):

  • platform/graphics/freetype/FontPlatformDataFreeType.cpp:

(WebCore::FontPlatformData::FontPlatformData):

2:04 AM Changeset in webkit [254740] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Gardening websockets close-on-x tests
https://bugs.webkit.org/show_bug.cgi?id=206393

Unreviewed gardening.

Patch by Lauro Moura <Lauro Moura> on 2020-01-17

  • platform/gtk/TestExpectations:
Note: See TracTimeline for information about the timeline view.