Timeline



Dec 29, 2019:

9:36 PM Changeset in webkit [253943] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Remove WTF::loadLoadFence from JSFunction::rareData()
https://bugs.webkit.org/show_bug.cgi?id=205625

Reviewed by Mark Lam.

WTF::loadLoadFence() is not necessary when loading FunctionRareData from JSFunction since we ensured that stored FunctionRareData
is already baked by emitting WTF::storeStoreFence().

  • runtime/JSFunction.h:

(JSC::JSFunction::rareData const):
(JSC::JSFunction::rareData): Deleted.

  • runtime/JSFunctionInlines.h:

(JSC::JSFunction::hasReifiedLength const):
(JSC::JSFunction::hasReifiedName const):
(JSC::JSFunction::areNameAndLengthOriginal):
(JSC::JSFunction::ensureRareDataAndAllocationProfile):

8:43 PM Changeset in webkit [253942] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, build fix after r253938
https://bugs.webkit.org/show_bug.cgi?id=205629

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::revert):

4:35 PM Changeset in webkit [253941] by commit-queue@webkit.org
  • 15 edits in trunk/Source

Tweak the format and comment in the code to support media in GPU process
https://bugs.webkit.org/show_bug.cgi?id=205631

Patch by Peng Liu <Peng Liu> on 2019-12-29
Reviewed by Eric Carlson.

No new tests, no functional change.

Source/WebCore:

  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::platformLayer const):
(WebCore::MediaPlayerPrivateInterface::timedMetadata const):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::beginLoadingMetadata):

Source/WebKit:

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:

(WebKit::RemoteMediaPlayerManagerProxy::logChannel const):

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxyConfiguration.h:
  • WebProcess/GPU/GPUProcessConnectionInfo.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
  • WebProcess/GPU/media/MediaPlayerPrivateRemoteIdentifier.h:
  • WebProcess/GPU/media/RemoteMediaPlayerConfiguration.h:
  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:
  • WebProcess/GPU/media/RemoteMediaPlayerManager.messages.in:
  • WebProcess/GPU/media/RemoteMediaPlayerState.h:
1:55 PM Changeset in webkit [253940] by eric.carlson@apple.com
  • 5 edits in trunk/Source

Cleanup media IPC encoders
https://bugs.webkit.org/show_bug.cgi?id=205630
<rdar://problem/58232173>

Reviewed by Anders Carlsson.

Source/WebCore:

No new tests, no functional change.

  • platform/graphics/MediaPlayer.h:

(WebCore::MediaEngineSupportParameters::decode):

Source/WebKit:

  • GPUProcess/media/RemoteMediaPlayerProxyConfiguration.h:

(WebKit::RemoteMediaPlayerProxyConfiguration::decode):

  • WebProcess/GPU/media/RemoteMediaPlayerConfiguration.h:

(WebKit::RemoteMediaPlayerConfiguration::decode):

1:43 PM Changeset in webkit [253939] by dino@apple.com
  • 35 edits
    2 adds
    2 deletes in trunk

[WebGL] Add a pure virtual base class for GraphicsContext3D
https://bugs.webkit.org/show_bug.cgi?id=205604

Reviewed by Sam Weinig.

Source/WebCore:

This is the first step in a series of patches to allow multiple versions
of GraphicsContext3D to exist, each using a different backend rendering
system. I've added a GraphicsContext3DBase class (that will eventually
be named GraphicsContext3D) holding all the WebGL entry points as well
as some common helper functions.

I also took the chance to move some enums into enum classes, which
makes it more obvious where things come from. I also removed some
unused interfaces: WebGLRenderingContextErrorMessageCallback and
WebGLRenderingContextLostMessageCallback.

The existing GraphicsContext3D now inherits from the base class,
but is otherwise nearly identical. The next step will be to make
different instances rather than the mix of #if macros we have now.
The virtual functions are marked "override" for now, but will become
"final" in the instances.

There should be no change in functionality.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/canvas/WebGLProgram.cpp:

(WebCore::WebGLProgram::cacheActiveAttribLocations):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::initializeNewContext):
(WebCore::WebGLRenderingContextBase::destroyGraphicsContext3D):
(WebCore::WebGLRenderingContextBase::getActiveAttrib):
(WebCore::WebGLRenderingContextBase::getActiveUniform):
(WebCore::WebGLRenderingContextBase::getContextAttributes):
(WebCore::WebGLRenderingContextBase::getUniformLocation):
(WebCore::WebGLRenderingContextBase::texImage2DImpl):
(WebCore::WebGLRenderingContextBase::texSubImage2DImpl):
(WebCore::WebGLRenderingContextBase::texSubImage2D):
(WebCore::WebGLRenderingContextBase::texImage2D):
(WebCore::WebGLRenderingContextBase::isTexInternalFormatColorBufferCombinationValid):
(WebCore::WebGLRenderingContextLostCallback::WebGLRenderingContextLostCallback): Deleted.
(WebCore::WebGLRenderingContextErrorMessageCallback::WebGLRenderingContextErrorMessageCallback): Deleted.

  • html/canvas/WebGLRenderingContextBase.h:
  • platform/graphics/FormatConverter.cpp:

(WebCore::uint8_t>):
(WebCore::float>):
(WebCore::uint16_t>):
(WebCore::FormatConverter::convert):

  • platform/graphics/GraphicsContext3D.cpp:

(WebCore::GraphicsContext3D::ImageExtractor::ImageExtractor):
(WebCore::GraphicsContext3D::extractImageData):
(WebCore::GraphicsContext3D::extractTextureData):
(WebCore::TexelBytesForFormat):
(WebCore::GraphicsContext3D::packPixels):
(WebCore::GraphicsContext3D::getClearBitsByAttachmentType): Deleted.
(WebCore::GraphicsContext3D::getClearBitsByFormat): Deleted.
(WebCore::GraphicsContext3D::getChannelBitsByFormat): Deleted.

  • platform/graphics/GraphicsContext3D.h:

(WebCore::GraphicsContext3D::ImageExtractor::imageHtmlDomSource):
(WebCore::GraphicsContext3D::platformGraphicsContext3D const): Deleted.
(WebCore::GraphicsContext3D::platformTexture const): Deleted.
(WebCore::GraphicsContext3D::platformLayer const): Deleted.
(WebCore::GraphicsContext3D::hasAlpha): Deleted.
(WebCore::GraphicsContext3D::hasColor): Deleted.
(WebCore::GraphicsContext3D::srcFormatComesFromDOMElementOrImageData): Deleted.

  • platform/graphics/GraphicsTypes3D.h:
  • platform/graphics/angle/GraphicsContext3DANGLE.cpp:

(WebCore::GraphicsContext3D::readPixelsAndConvertToBGRAIfNecessary):
(WebCore::GraphicsContext3D::reshapeFBOs):
(WebCore::GraphicsContext3D::attachDepthAndStencilBufferIfNeeded):
(WebCore::GraphicsContext3D::readPixels):
(WebCore::GraphicsContext3D::validateDepthStencil):
(WebCore::GraphicsContext3D::paintRenderingResultsToCanvas):
(WebCore::GraphicsContext3D::paintRenderingResultsToImageData):
(WebCore::GraphicsContext3D::prepareTexture):
(WebCore::GraphicsContext3D::readRenderingResults):
(WebCore::GraphicsContext3D::reshape):
(WebCore::GraphicsContext3D::bindFramebuffer):
(WebCore::GraphicsContext3D::copyTexImage2D):
(WebCore::GraphicsContext3D::copyTexSubImage2D):
(WebCore::GraphicsContext3D::getContextAttributes): Deleted.

  • platform/graphics/cg/GraphicsContext3DCG.cpp:

(WebCore::getSourceDataFormat):
(WebCore::GraphicsContext3D::ImageExtractor::extractImage):

  • platform/graphics/cocoa/GraphicsContext3DCocoa.mm:

(WebCore::GraphicsContext3D::create):
(WebCore::GraphicsContext3D::createShared):
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::~GraphicsContext3D):
(WebCore::GraphicsContext3D::setRenderbufferStorageFromDrawable):
(WebCore::GraphicsContext3D::makeContextCurrent):
(WebCore::GraphicsContext3D::checkGPUStatus):
(WebCore::GraphicsContext3D::presentRenderbuffer):
(WebCore::GraphicsContext3D::texImageIOSurface2D):
(WebCore::GraphicsContext3D::allocateIOSurfaceBackingStore):
(WebCore::GraphicsContext3D::updateCGLContext):
(WebCore::GraphicsContext3D::screenDidChange):
(WebCore::GraphicsContext3D::setContextLostCallback): Deleted.
(WebCore::GraphicsContext3D::setErrorMessageCallback): Deleted.

  • platform/graphics/cocoa/WebGLLayer.mm:

(-[WebGLLayer initWithGraphicsContext3D:]):
(-[WebGLLayer copyImageSnapshotWithColorSpace:]):
(-[WebGLLayer bindFramebufferToNextAvailableSurface]):

  • platform/graphics/cv/TextureCacheCV.mm:

(WebCore::TextureCacheCV::create):

  • platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:

(WebCore::GraphicsContext3D::readPixelsAndConvertToBGRAIfNecessary):
(WebCore::GraphicsContext3D::reshapeFBOs):
(WebCore::GraphicsContext3D::attachDepthAndStencilBufferIfNeeded):
(WebCore::GraphicsContext3D::readPixels):

  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::GraphicsContext3D::validateDepthStencil):
(WebCore::GraphicsContext3D::paintRenderingResultsToCanvas):
(WebCore::GraphicsContext3D::paintRenderingResultsToImageData):
(WebCore::GraphicsContext3D::prepareTexture):
(WebCore::GraphicsContext3D::readRenderingResults):
(WebCore::GraphicsContext3D::reshape):
(WebCore::GraphicsContext3D::bindFramebuffer):
(WebCore::GraphicsContext3D::copyTexImage2D):
(WebCore::GraphicsContext3D::copyTexSubImage2D):
(WebCore::GraphicsContext3D::getContextAttributes): Deleted.

LayoutTests:

Remove a test that has existing coverage in the WebGL test suite.

  • fast/canvas/webgl/framebuffer-object-attachment-expected.txt: Removed.
  • fast/canvas/webgl/framebuffer-object-attachment.html: Removed.
11:33 AM Changeset in webkit [253938] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Implement LineBuilder::revert
https://bugs.webkit.org/show_bug.cgi?id=205629
<rdar://problem/58231425>

Reviewed by Antti Koivisto.

LineBuilder::revert simply removes trailing runs, shrinks the line and rebuilds the collapsible content.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::HangingContent::width const):
(WebCore::Layout::HangingContent::isConditional const):
(WebCore::Layout::HangingContent::setIsConditional):
(WebCore::Layout::HangingContent::expand):
(WebCore::Layout::HangingContent::reset):
(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::revert):
(WebCore::Layout::LineBuilder::alignHorizontally):
(WebCore::Layout::LineBuilder::collectHangingContent):

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::InlineItemRun::operator== const):
(WebCore::Layout::LineBuilder::InlineItemRun::operator!= const):
(WebCore::Layout::LineBuilder::HangingContent::width const): Deleted. Remove m_hangingContent so that revert does not need to deal with it.
(WebCore::Layout::LineBuilder::HangingContent::isConditional const): Deleted.
(WebCore::Layout::LineBuilder::HangingContent::setIsConditional): Deleted.
(WebCore::Layout::LineBuilder::HangingContent::expand): Deleted.
(WebCore::Layout::LineBuilder::HangingContent::reset): Deleted.

10:28 AM Changeset in webkit [253937] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Add LineBreaker::Result::Revert to indicate an earlier line wrap opportunity
https://bugs.webkit.org/show_bug.cgi?id=205623
<rdar://problem/58228339>

Reviewed by Antti Koivisto.

See webkit.org/b/205613 for more info.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::Result::Result):
(WebCore::Layout::LineBreaker::tryWrappingInlineContent const):

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

(WebCore::Layout::LineLayoutContext::checkForLineWrapAndCommit):

9:38 AM Changeset in webkit [253936] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Make RuleSet refcounted
https://bugs.webkit.org/show_bug.cgi?id=205628
<rdar://problem/58231798>

Unreviewed folloup.

  • style/UserAgentStyle.cpp:

(WebCore::Style::UserAgentStyle::loadFullDefaultStyle):

Use deref instead of delete.

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

Make RuleSet refcounted
https://bugs.webkit.org/show_bug.cgi?id=205628

Reviewed by Zalan Bujtas.

For safety, and to support shared ownership.

Also convert a bunch of places that use raw RuleSet pointers to use Ref/RefPtr instead.

  • style/ElementRuleCollector.cpp:

(WebCore::Style::ElementRuleCollector::collectMatchingAuthorRules):
(WebCore::Style::ElementRuleCollector::collectSlottedPseudoElementRulesForSlot):
(WebCore::Style::ElementRuleCollector::matchUserRules):

  • style/ElementRuleCollector.h:
  • style/RuleSet.cpp:

(WebCore::Style::RuleSet::evaluteDynamicMediaQueryRules):

  • style/RuleSet.h:

(WebCore::Style::RuleSet::create):
(WebCore::Style::RuleSet::RuleSetSelectorPair::RuleSetSelectorPair): Deleted.

  • style/StyleInvalidator.cpp:

(WebCore::Style::Invalidator::Invalidator):
(WebCore::Style::Invalidator::collectRuleInformation):
(WebCore::Style::Invalidator::invalidateIfNeeded):
(WebCore::Style::Invalidator::addToMatchElementRuleSets):

  • style/StyleInvalidator.h:
  • style/StyleScopeRuleSets.cpp:

(WebCore::Style::ScopeRuleSets::ScopeRuleSets):
(WebCore::Style::ScopeRuleSets::updateUserAgentMediaQueryStyleIfNeeded const):
(WebCore::Style::ScopeRuleSets::initializeUserStyle):
(WebCore::Style::makeRuleSet):
(WebCore::Style::ScopeRuleSets::resetAuthorStyle):
(WebCore::Style::ensureInvalidationRuleSets):

  • style/StyleScopeRuleSets.h:

(WebCore::Style::ScopeRuleSets::authorStyle const):

  • style/UserAgentStyle.cpp:

(WebCore::Style::UserAgentStyle::loadFullDefaultStyle):
(WebCore::Style::UserAgentStyle::loadSimpleDefaultStyle):

7:59 AM Changeset in webkit [253934] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Move soft wrap opportunity code out of LineBreaker
https://bugs.webkit.org/show_bug.cgi?id=205621
<rdar://problem/58227670>

Reviewed by Antti Koivisto.

Let's not mix soft and line wrap opportunity logic.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::ContinousContent::runs const):
(WebCore::Layout::ContinousContent::isEmpty const):
(WebCore::Layout::ContinousContent::size const):
(WebCore::Layout::ContinousContent::width const):
(WebCore::Layout::ContinousContent::nonCollapsibleWidth const):
(WebCore::Layout::ContinousContent::hasTrailingCollapsibleContent const):
(WebCore::Layout::ContinousContent::isTrailingContentFullyCollapsible const):
(WebCore::Layout::LineBreaker::wrapTextContent const):
(WebCore::Layout::ContinousContent::ContinousContent):
(WebCore::Layout::ContinousContent::hasTextContentOnly const):
(WebCore::Layout::ContinousContent::isVisuallyEmptyWhitespaceContentOnly const):
(WebCore::Layout::ContinousContent::firstTextRunIndex const):
(WebCore::Layout::ContinousContent::lastContentRunIndex const):
(WebCore::Layout::ContinousContent::hasNonContentRunsOnly const):
(WebCore::Layout::ContinousContent::lastWrapOpportunityIndex const):
(WebCore::Layout::ContinousContent::TrailingCollapsibleContent::reset):
(WebCore::Layout::endsWithSoftWrapOpportunity): Deleted.
(WebCore::Layout::isAtSoftWrapOpportunity): Deleted.
(WebCore::Layout::LineBreaker::nextWrapOpportunity): Deleted.
(WebCore::Layout::LineBreaker::ContinousContent::ContinousContent): Deleted.
(WebCore::Layout::LineBreaker::ContinousContent::hasTextContentOnly const): Deleted.
(WebCore::Layout::LineBreaker::ContinousContent::isVisuallyEmptyWhitespaceContentOnly const): Deleted.
(WebCore::Layout::LineBreaker::ContinousContent::firstTextRunIndex const): Deleted.
(WebCore::Layout::LineBreaker::ContinousContent::lastContentRunIndex const): Deleted.
(WebCore::Layout::LineBreaker::ContinousContent::hasNonContentRunsOnly const): Deleted.
(WebCore::Layout::LineBreaker::ContinousContent::lastWrapOpportunityIndex const): Deleted.
(WebCore::Layout::LineBreaker::ContinousContent::TrailingCollapsibleContent::reset): Deleted.

  • layout/inlineformatting/InlineLineBreaker.h:

(WebCore::Layout::LineBreaker::ContinousContent::runs const): Deleted.
(WebCore::Layout::LineBreaker::ContinousContent::isEmpty const): Deleted.
(WebCore::Layout::LineBreaker::ContinousContent::size const): Deleted.
(WebCore::Layout::LineBreaker::ContinousContent::width const): Deleted.
(WebCore::Layout::LineBreaker::ContinousContent::nonCollapsibleWidth const): Deleted.
(WebCore::Layout::LineBreaker::ContinousContent::hasTrailingCollapsibleContent const): Deleted.
(WebCore::Layout::LineBreaker::ContinousContent::isTrailingContentFullyCollapsible const): Deleted.

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::endsWithSoftWrapOpportunity):
(WebCore::Layout::isAtSoftWrapOpportunity):
(WebCore::Layout::nextWrapOpportunity):
(WebCore::Layout::LineLayoutContext::nextContentForLine):

Dec 28, 2019:

11:01 PM Changeset in webkit [253933] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Unreviewed, rename .executable to .isExecutable
https://bugs.webkit.org/show_bug.cgi?id=205554

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
9:32 PM Changeset in webkit [253932] by ysuzuki@apple.com
  • 29 edits in trunk/Source/JavaScriptCore

[JSC] JSFunction's m_executable / m_rareData should be merged
https://bugs.webkit.org/show_bug.cgi?id=205554

Reviewed by Mark Lam.

This patch merges JSFunction::m_executable and JSFunction::m_rareData fields into one JSFunction::m_executableOrRareData field.
JSFunction is one of the most frequently allocated objects (e.g. it is common that anonymous JSFunction expression is used as a scope).
If we can save sizeof(JSFunction), we can get great savings in memory usage.

JSFunction::m_scope field is touched every time we execute this function. (op_get_scope, or obtaining JSGlobalObject for host functions).
On the other hand, m_executable field can be skipped if JSFunction call is cached by CallLinkInfo. So compared to JSFunction::m_scope,
this field is less frequently touched. So, we merge m_executable and m_rareData fields into one, m_executableOrRareData. When it holds
ExecutableBase*, we do nothing. But when we create FunctionRareData, we put ExecutableBase in FunctionRareData and store FunctionRareData
to JSFunction::m_executableOrRareData field with 0x1 flag.

This patch reduces sizeof(JSFunction) from 48 to 32.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNewFunctionCommon):
(JSC::DFG::SpeculativeJIT::compileGetExecutable):
(JSC::DFG::SpeculativeJIT::compileCreateThis):
(JSC::DFG::SpeculativeJIT::compileCreatePromise):
(JSC::DFG::SpeculativeJIT::compileCreateInternalFieldObject):

  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileGetExecutable):
(JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateThis):
(JSC::FTL::DFG::LowerDFGToB3::compileCreatePromise):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateInternalFieldObject):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_create_this):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_create_this):

  • jit/Repatch.cpp:

(JSC::linkPolymorphicCall):

  • jit/ThunkGenerators.cpp:

(JSC::virtualThunkFor):
(JSC::nativeForGenerator):
(JSC::boundFunctionCallGenerator):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/FunctionRareData.cpp:

(JSC::FunctionRareData::create):
(JSC::FunctionRareData::visitChildren):
(JSC::FunctionRareData::FunctionRareData):

  • runtime/FunctionRareData.h:
  • runtime/JSBoundFunction.cpp:

(JSC::JSBoundFunction::create):
(JSC::JSBoundFunction::JSBoundFunction):

  • runtime/JSBoundFunction.h:
  • runtime/JSCustomGetterSetterFunction.cpp:

(JSC::JSCustomGetterSetterFunction::JSCustomGetterSetterFunction):
(JSC::JSCustomGetterSetterFunction::create):

  • runtime/JSCustomGetterSetterFunction.h:
  • runtime/JSFunction.cpp:

(JSC::JSFunction::create):
(JSC::JSFunction::createFunctionThatMasqueradesAsUndefined):
(JSC::JSFunction::JSFunction):
(JSC::JSFunction::finishCreation):
(JSC::JSFunction::allocateRareData):
(JSC::JSFunction::allocateAndInitializeRareData):
(JSC::JSFunction::initializeRareData):
(JSC::JSFunction::visitChildren):
(JSC::JSFunction::put):
(JSC::JSFunction::defineOwnProperty):

  • runtime/JSFunction.h:

(JSC::JSFunction::executable const):
(JSC::JSFunction::offsetOfExecutableOrRareData):
(JSC::JSFunction::rareData):
(JSC::JSFunction::offsetOfExecutable): Deleted.
(JSC::JSFunction::offsetOfRareData): Deleted.

  • runtime/JSFunctionInlines.h:

(JSC::JSFunction::JSFunction):
(JSC::JSFunction::jsExecutable const):
(JSC::JSFunction::isHostFunction const):
(JSC::JSFunction::nativeFunction):
(JSC::JSFunction::nativeConstructor):
(JSC::JSFunction::hasReifiedLength const):
(JSC::JSFunction::hasReifiedName const):
(JSC::JSFunction::areNameAndLengthOriginal):
(JSC::JSFunction::ensureRareDataAndAllocationProfile):

  • runtime/JSNativeStdFunction.cpp:

(JSC::JSNativeStdFunction::JSNativeStdFunction):
(JSC::JSNativeStdFunction::create):

  • runtime/JSNativeStdFunction.h:
  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::create):
(JSC::WebAssemblyFunction::WebAssemblyFunction):

  • wasm/js/WebAssemblyFunction.h:
  • wasm/js/WebAssemblyFunctionBase.cpp:

(JSC::WebAssemblyFunctionBase::WebAssemblyFunctionBase):

  • wasm/js/WebAssemblyFunctionBase.h:
  • wasm/js/WebAssemblyWrapperFunction.cpp:

(JSC::WebAssemblyWrapperFunction::WebAssemblyWrapperFunction):
(JSC::WebAssemblyWrapperFunction::create):

  • wasm/js/WebAssemblyWrapperFunction.h:
8:47 PM Changeset in webkit [253931] by ysuzuki@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

[JSC] StructureChain should hold vector of StructureID
https://bugs.webkit.org/show_bug.cgi?id=205592

Reviewed by Mark Lam.

StructureChain should keep vector of StructureID instead of Structure* to minimize the size of vector.

  • llint/LowLevelInterpreter64.asm:
  • runtime/JSPropertyNameEnumerator.h:

(JSC::propertyNameEnumerator):

  • runtime/ProxyObject.h:
  • runtime/Structure.cpp:

(JSC::Structure::canCachePropertyNameEnumerator const):

  • runtime/Structure.h:
  • runtime/StructureChain.cpp:

(JSC::StructureChain::StructureChain):
(JSC::StructureChain::create):
(JSC::StructureChain::finishCreation):
(JSC::StructureChain::visitChildren):

  • runtime/StructureChain.h:
  • runtime/StructureInlines.h:

(JSC::Structure::isValid const):

7:39 PM Changeset in webkit [253930] by commit-queue@webkit.org
  • 23 edits in trunk/Tools

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

Seeing strange test results after this change (Requested by ap
on #webkit).

Reverted changeset:

"Python 3: Add support to run-webkit-tests"
https://bugs.webkit.org/show_bug.cgi?id=205291
https://trac.webkit.org/changeset/253804

6:05 PM Changeset in webkit [253929] by Wenson Hsieh
  • 7 edits in trunk/Tools

[iOS] Layout tests sometimes throw an exception under checkForOutstandingCallbacks
https://bugs.webkit.org/show_bug.cgi?id=205612
<rdar://problem/57789693>

Reviewed by Tim Horton.

On iOS, layout tests that synthesize HID events but end before WebKitTestRunnerApp finishes dequeueing and
handling those events occasionally cause the next test to crash with an Objective-C exception under
UIScriptControllerIOS::checkForOutstandingCallbacks. This happens when UIScriptContext is destroyed after a HID
marker event is dispatched, but before that HID marker event has been handled. (For clarity, the HID marker
event is a special vendor-defined event used by HIDEventGenerator to signify the end of a series of synthesized
HID events that were previously dispatched to the application).

This is typically fixed by ensuring that all iOS layout tests always wait for synthesized HID events to finish
before ending the test (i.e. by calling testRunner.notifyDone()). However, some tests that fall into this
category are imported: e.g. dom/events/document-level-touchmove-event-listener-passive-by-default.html in
web-platform-tests/, which does not wait for the swipe gesture to finish before completing. This current causes
us to dispatch the end of the gesture while the following test (dom/events/event-disabled-dynamic.html) begins.

While I wasn't able to trivially reproduce the exception locally, it was consistently reproducible by forcing a
50 ms sleep in -[HIDEventGenerator sendMarkerHIDEventWithCompletionBlock:], right before queueing the marker
event. This suggests that the crash is timing-dependent, and just seems to occasionally reproduce more
frequently in internal automation.

This test seems to be passing reliably in other engines (e.g. Chrome and Edge), so instead of trying to fix the
test to always wait for events to finish dispatching, we can address the issue by teaching WebKitTestRunner to
simply wait for outgoing marker events to finish dispatching before proceeding with the next test, rather than
crashing. This should not only fix the crash, but also address sporadic flakiness that may result from tests
that handle synthetic HID events that were dispatched by the previous test.

  • TestRunnerShared/UIScriptContext/UIScriptContext.cpp:

(UIScriptContext::~UIScriptContext):

  • TestRunnerShared/UIScriptContext/UIScriptController.h:

(WTR::UIScriptController::waitForOutstandingCallbacks):
(WTR::UIScriptController::checkForOutstandingCallbacks): Deleted.

Rename checkForOutstandingCallbacks to waitForOutstandingCallbacks, and make it wait up to a second for the
application to finish handling any outgoing marker HID event. In the event that the timeout is hit, we still
throw an Objective-C exception to avoid beginning the next test in an unpredictable state.

  • WebKitTestRunner/ios/HIDEventGenerator.h:
  • WebKitTestRunner/ios/HIDEventGenerator.mm:

(-[HIDEventGenerator init]):

Perform some minor cleanup here, by removing excess private category properties in HIDEventGenerator (including
-debugTouchViews, which was unused); also, change _eventCallbacks into a RetainPtr, so that we don't need to
worry about manually releasing it.

(-[HIDEventGenerator dealloc]): Deleted.
(-[HIDEventGenerator hasOutstandingCallbacks]):
(-[HIDEventGenerator checkForOutstandingCallbacks]): Deleted.

Rename -checkForOutstandingCallbacks to -hasOutstandingCallbacks, and flip the return result.

  • WebKitTestRunner/ios/UIScriptControllerIOS.h:
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::waitForOutstandingCallbacks):
(WTR::UIScriptControllerIOS::checkForOutstandingCallbacks): Deleted.

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

[LFC][IFC] Keep track of last line wrap opportunity
https://bugs.webkit.org/show_bug.cgi?id=205619
<rdar://problem/58227112>

Reviewed by Antti Koivisto.

This is in preparation for being able to revert back to an earlier position
of the current line as the line wrapping opportunity.
(actually the m_lastWrapOpportunity is already taken into use at LineBreaker::wordBreakBehavior)

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::shouldKeepBeginningOfLineWhitespace):
(WebCore::Layout::LineBreaker::shouldWrapInlineContent):
(WebCore::Layout::LineBreaker::shouldWrapFloatBox):
(WebCore::Layout::LineBreaker::tryWrappingInlineContent const):
(WebCore::Layout::LineBreaker::wrapTextContent const):
(WebCore::Layout::LineBreaker::wordBreakBehavior const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):
(WebCore::Layout::LineBreaker::ContinousContent::lastWrapOpportunityIndex const):

  • layout/inlineformatting/InlineLineBreaker.h:
1:42 PM Changeset in webkit [253927] by Antti Koivisto
  • 6 edits in trunk/Tools

Allow disabling internal and experimental features in run-webkit-tests
https://bugs.webkit.org/show_bug.cgi?id=205614

Reviewed by Tim Horton.

Add an optional true/false parameter to --internal-feature/--experimental-feature options.
This can be useful for isolating problems in features that are enabled by default. Example:

--internal-feature LayoutFormattingContextIntegrationEnabled=false

The [=true|false] syntax is the same as used in test headers.

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(parse_args):

  • WebKitTestRunner/Options.cpp:

(WTR::parseFeature):
(WTR::handleOptionExperimentalFeature):
(WTR::handleOptionInternalFeature):

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

(WTR::TestController::testOptionsForTest const):

  • WebKitTestRunner/TestController.h:
12:16 PM Changeset in webkit [253926] by dino@apple.com
  • 85 edits
    18 deletes in trunk

[WebGL] Enable ANGLE by default for Cocoa platforms (except simulator)
https://bugs.webkit.org/show_bug.cgi?id=205483
rdar://56925821

Reviewed by Simon Fraser.

Source/ThirdParty/ANGLE:

Export entry_points_gles_ext_autogen.h.

  • ANGLE.xcodeproj/project.pbxproj:

Source/WebCore:

Log an error rather than asserting.

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::getBufferSubData):

Source/WTF:

Turn USE_ANGLE on for Cocoa, with the exception of the simulator.

  • wtf/Platform.h:

LayoutTests:

Remove some tests that are better covered in the official test
suite which we already have in the repository.

Rebaseline a bunch of tests which we now pass. Yay!

Rebaseline a small number of regressions, which will be fixed
in a follow-up.

  • fast/canvas/webgl/angle-instanced-arrays-expected.txt: Removed.
  • fast/canvas/webgl/angle-instanced-arrays-out-of-bounds-expected.txt: Removed.
  • fast/canvas/webgl/angle-instanced-arrays-out-of-bounds.html: Removed.
  • fast/canvas/webgl/angle-instanced-arrays.html: Removed.
  • fast/canvas/webgl/array-bounds-clamping-expected.txt:
  • fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias-expected.txt: Removed.
  • fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias.html: Removed.
  • fast/canvas/webgl/copy-tex-image-and-sub-image-2d-bad-input-expected.txt:
  • fast/canvas/webgl/draw-elements-out-of-bounds-uint-index-expected.txt:
  • fast/canvas/webgl/drawElements-empty-vertex-data-expected.txt:
  • fast/canvas/webgl/glsl-conformance-expected.txt: Removed.
  • fast/canvas/webgl/glsl-conformance.html: Removed.
  • fast/canvas/webgl/oes-texture-half-float-expected.txt: Removed.
  • fast/canvas/webgl/oes-texture-half-float-linear-expected.txt: Removed.
  • fast/canvas/webgl/oes-texture-half-float-linear.html: Removed.
  • fast/canvas/webgl/oes-texture-half-float-with-canvas-expected.txt: Removed.
  • fast/canvas/webgl/oes-texture-half-float-with-canvas.html: Removed.
  • fast/canvas/webgl/oes-texture-half-float-with-image-expected.txt: Removed.
  • fast/canvas/webgl/oes-texture-half-float-with-image.html: Removed.
  • fast/canvas/webgl/oes-texture-half-float-with-video-expected.txt: Removed.
  • fast/canvas/webgl/oes-texture-half-float-with-video.html: Removed.
  • fast/canvas/webgl/oes-texture-half-float.html: Removed.
  • fast/canvas/webgl/readPixels-float-expected.txt:
  • fast/canvas/webgl/vertexAttribPointer-with-bad-offset-expected.txt:
  • fast/canvas/webgl/webgl-drawarrays-crash-2-expected.txt:
  • fast/canvas/webgl/webgl-drawarrays-crash-expected.txt:
  • fast/canvas/webgl/webgl2-texture-upload-enums-expected.txt:
  • platform/ios-simulator/TestExpectations:
  • platform/mac/TestExpectations:
  • webgl/1.0.3/conformance/extensions/get-extension-expected.txt:
  • webgl/1.0.3/conformance/extensions/oes-texture-float-expected.txt:
  • webgl/1.0.3/conformance/extensions/oes-texture-half-float-expected.txt:
  • webgl/1.0.3/conformance/glsl/bugs/nested-functions-should-not-crash-expected.txt:
  • webgl/1.0.3/conformance/glsl/misc/shader-struct-scope-expected.txt:
  • webgl/1.0.3/conformance/glsl/misc/shaders-with-invariance-expected.txt:
  • webgl/1.0.3/conformance/glsl/misc/shaders-with-name-conflicts-expected.txt:
  • webgl/1.0.3/conformance/misc/type-conversion-test-expected.txt:
  • webgl/1.0.3/conformance/misc/webgl-specific-expected.txt:
  • webgl/1.0.3/conformance/rendering/point-no-attributes-expected.txt:
  • webgl/1.0.3/conformance/textures/texture-copying-feedback-loops-expected.txt:
  • webgl/2.0.0/conformance/context/context-lost-restored-expected.txt:
  • webgl/2.0.0/conformance/extensions/ext-sRGB-expected.txt:
  • webgl/2.0.0/conformance/extensions/get-extension-expected.txt:
  • webgl/2.0.0/conformance/extensions/oes-texture-float-expected.txt:
  • webgl/2.0.0/conformance/extensions/oes-texture-half-float-expected.txt:
  • webgl/2.0.0/conformance/extensions/oes-vertex-array-object-expected.txt:
  • webgl/2.0.0/conformance/extensions/webgl-depth-texture-expected.txt:
  • webgl/2.0.0/conformance/extensions/webgl-draw-buffers-framebuffer-unsupported-expected.txt:
  • webgl/2.0.0/conformance/glsl/bugs/compound-assignment-type-combination-expected.txt:
  • webgl/2.0.0/conformance/glsl/bugs/nested-functions-should-not-crash-expected.txt:
  • webgl/2.0.0/conformance/glsl/constructors/glsl-construct-ivec2-expected.txt:
  • webgl/2.0.0/conformance/glsl/constructors/glsl-construct-mat2-expected.txt:
  • webgl/2.0.0/conformance/glsl/constructors/glsl-construct-mat3-expected.txt:
  • webgl/2.0.0/conformance/glsl/constructors/glsl-construct-vec2-expected.txt:
  • webgl/2.0.0/conformance/glsl/implicit/less_than.vert-expected.txt:
  • webgl/2.0.0/conformance/glsl/misc/global-variable-init-expected.txt:
  • webgl/2.0.0/conformance/glsl/misc/shader-struct-scope-expected.txt:
  • webgl/2.0.0/conformance/glsl/misc/shader-with-conditional-scoping-negative-expected.txt:
  • webgl/2.0.0/conformance/glsl/misc/shaders-with-invariance-expected.txt:
  • webgl/2.0.0/conformance/glsl/misc/shaders-with-name-conflicts-expected.txt:
  • webgl/2.0.0/conformance/glsl/misc/struct-unary-operators-expected.txt:
  • webgl/2.0.0/conformance/limits/gl-line-width-expected.txt:
  • webgl/2.0.0/conformance/misc/type-conversion-test-expected.txt:
  • webgl/2.0.0/conformance/misc/webgl-specific-expected.txt:
  • webgl/2.0.0/conformance/ogles/GL/biuDepthRange/biuDepthRange_001_to_002-expected.txt:
  • webgl/2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_001_to_003-expected.txt:
  • webgl/2.0.0/conformance/reading/read-pixels-test-expected.txt:
  • webgl/2.0.0/conformance/renderbuffers/framebuffer-object-attachment-expected.txt:
  • webgl/2.0.0/conformance/rendering/point-no-attributes-expected.txt:
  • webgl/2.0.0/conformance/textures/misc/cube-incomplete-fbo-expected.txt:
  • webgl/2.0.0/conformance/textures/misc/texture-copying-feedback-loops-expected.txt:
  • webgl/2.0.0/conformance2/buffers/get-buffer-sub-data-expected.txt:
  • webgl/2.0.0/conformance2/buffers/one-large-uniform-buffer-expected.txt:
  • webgl/2.0.0/conformance2/context/context-attributes-depth-stencil-antialias-obeyed-expected.txt:
  • webgl/2.0.0/conformance2/extensions/ext-color-buffer-float-expected.txt:
  • webgl/2.0.0/conformance2/extensions/promoted-extensions-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/compound-assignment-type-combination-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/shader-linking-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/shader-with-1024-character-identifier.frag-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/shader-with-invalid-characters-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/shader-with-mis-matching-uniform-block-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/valid-invariant-expected.txt:
  • webgl/2.0.0/conformance2/renderbuffers/invalidate-framebuffer-expected.txt:
  • webgl/2.0.0/conformance2/renderbuffers/multisample-with-full-sample-counts-expected.txt:
  • webgl/2.0.0/conformance2/renderbuffers/multisampled-renderbuffer-initialization-expected.txt:
  • webgl/2.0.0/conformance2/rendering/attrib-type-match-expected.txt:
  • webgl/2.0.0/conformance2/rendering/blitframebuffer-test-expected.txt:
  • webgl/2.0.0/conformance2/rendering/clear-func-buffer-type-match-expected.txt:
  • webgl/2.0.0/conformance2/rendering/clear-srgb-color-buffer-expected.txt:
  • webgl/2.0.0/conformance2/rendering/clipping-wide-points-expected.txt:
  • webgl/2.0.0/conformance2/rendering/framebuffer-unsupported-expected.txt:
  • webgl/2.0.0/conformance2/rendering/fs-color-type-mismatch-color-buffer-type-expected.txt:
  • webgl/2.0.0/conformance2/rendering/instanced-arrays-expected.txt:
  • webgl/2.0.0/conformance2/rendering/instanced-rendering-bug-expected.txt:
  • webgl/2.0.0/conformance2/rendering/rendering-sampling-feedback-loop-expected.txt:
  • webgl/2.0.0/conformance2/rendering/rgb-format-support-expected.txt:
  • webgl/2.0.0/conformance2/state/gl-get-calls-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/copy-texture-image-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-image-with-bad-args-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-mipmap-levels-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-new-formats-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-storage-2d-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/texture-npot-expected.txt:
  • webgl/2.0.0/conformance2/transform_feedback/unwritten-output-defaults-to-zero-expected.txt:
  • webgl/2.0.0/conformance2/vertex_arrays/vertex-array-object-expected.txt:
9:13 AM Changeset in webkit [253925] by Antti Koivisto
  • 2 edits in trunk/Source/WebKit

Make simple line layout an internal feature
https://bugs.webkit.org/show_bug.cgi?id=205615

Reviewed by Zalan Bujtas.

So it can be enabled/disabled from run-webkit-tests command line.

This also adds it to the internal feature menus, allowing removal of hardcoded menu entries.

  • Shared/WebPreferences.yaml:
8:07 AM Changeset in webkit [253924] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Keep the LineBreaker object around until after the line is closed.
https://bugs.webkit.org/show_bug.cgi?id=205613
<rdar://problem/58222870>

Reviewed by Antti Koivisto.

In order to be able to point back to an earlier line wrap opportunity on the line e.g.
<div style="white-space: pre"><span style="white-space: normal">earlier_wrap opportunities</span> <span>can't_wrap_this content</span></div>
the LineBreaker class needs more context.
Currently (taking the example above), if the available space runs out somewhere around the second <span> we would just simply
overflow the line since the overflowing content has a style saying "do not wrap".
However the line has multiple earlier wrap opportunities inside the first <span>.
Since we construct a LineBreaker object for each continuous run

  1. [container start][earlier_wrap]
  2. [ ]
  3. [opportunities][container end]
  4. [ ]
  5. [container start][can't_wrap_this]
  6. [ ]
  7. [content][container end]

the LineBreaker does not have enough context to point back to the last line wrap opportunity (after run #3).

This patch is in preparation for supporting such content.

  1. Rename couple of functions and structs
  2. Move the LineBreaker construction to LineLayoutContext::layoutLine so that we can keep it around for multiple set of runs.
  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::isContentWrappingAllowed):
(WebCore::Layout::isContentSplitAllowed):
(WebCore::Layout::LineBreaker::isTextContentWrappingAllowed const):
(WebCore::Layout::LineBreaker::shouldKeepEndOfLineWhitespace const):
(WebCore::Layout::LineBreaker::shouldWrapInlineContent):
(WebCore::Layout::isTextContentWrappingAllowed): Deleted.
(WebCore::Layout::shouldKeepEndOfLineWhitespace): Deleted.
(WebCore::Layout::LineBreaker::breakingContextForInlineContent): Deleted.

  • layout/inlineformatting/InlineLineBreaker.h:

(WebCore::Layout::LineBreaker::setHyphenationDisabled):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::isLineConsideredEmpty):
(WebCore::Layout::LineLayoutContext::layoutLine):
(WebCore::Layout::LineLayoutContext::checkForLineWrapAndCommit):
(WebCore::Layout::LineLayoutContext::commitContent):
(WebCore::Layout::LineLayoutContext::placeInlineContentOnCurrentLine): Deleted.

  • layout/inlineformatting/LineLayoutContext.h:

Dec 27, 2019:

9:58 AM Changeset in webkit [253923] by Darin Adler
  • 32 edits
    1 delete in trunk/Source

Refactor to simplify broadcasting to all media elements
https://bugs.webkit.org/show_bug.cgi?id=205567

Reviewed by Eric Carlson.

Source/WebCore:

Over time, we have accumulated many different sets of all the media elements.
With the goal of being a bit abstract and not building too much behavior into
the Document object, we ended up with unnecessary complexity, and many sets
of all the HTMLMediaElement objects. This is a first cut at reducing that complexity.
At the same time, the refactoring makes all the iteration use a safe algorithm that
builds a vector of Ref<HTMLMediaElement>, safe even if the work done for each
media element calls out to arbitrary DOM operations.

Separately, this patch also includes some name changes that still say "atomic"
instead of "atom" left over from our renaming of AtomicString to AtomString.

  • Headers.cmake: Removed ApplicationStateChangeListener.h.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::estimatedSizeInBytes const): Reworded comment to
say "atom".

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::getElementsByName): Updated for "atomic" -> "atom".
(WebCore::ContainerNode::radioNodeList): Ditto.

  • dom/Document.cpp:

(WebCore::Document::visibilityStateChanged): Moved the code from
the notifyMediaCaptureOfVisibilityChanged in here. No need for a separate
function for the two lines of code.
(WebCore::Document::registerMediaElement): Added. Replaces the multiple registrations
that each media element would do.
(WebCore::Document::unregisterMediaElement): Ditto.
(WebCore::Document::forEachMediaElement): Added. Safely iterates the media elements
and calls a function on each of them.
(WebCore::Document::registerForAllowsMediaDocumentInlinePlaybackChangedCallbacks): Deleted.
(WebCore::Document::unregisterForAllowsMediaDocumentInlinePlaybackChangedCallbacks): Deleted.
(WebCore::Document::allowsMediaDocumentInlinePlaybackChanged): Deleted.
(WebCore::Document::mediaVolumeDidChange): Deleted.
(WebCore::Document::registerForMediaVolumeCallbacks): Deleted.
(WebCore::Document::unregisterForMediaVolumeCallbacks): Deleted.
(WebCore::Document::privateBrowsingStateDidChange): Use forEachMediaElement to call
privateBrowsingStateDidChange on each media element rather than keeping a separate registry.
(WebCore::Document::registerForPrivateBrowsingStateChangedCallbacks): Deleted.
(WebCore::Document::unregisterForPrivateBrowsingStateChangedCallbacks): Deleted.
(WebCore::Document::registerForCaptionPreferencesChangedCallbacks): Updated the type
to be HTMLMediaElement rather than just Element.
(WebCore::Document::unregisterForCaptionPreferencesChangedCallbacks): Ditto.
(WebCore::Document::registerForPageScaleFactorChangedCallbacks): Deleted.
(WebCore::Document::unregisterForPageScaleFactorChangedCallbacks): Deleted.
(WebCore::Document::pageScaleFactorChangedAndStable): Deleted.
(WebCore::Document::registerForUserInterfaceLayoutDirectionChangedCallbacks): Deleted.
(WebCore::Document::unregisterForUserInterfaceLayoutDirectionChangedCallbacks): Deleted.
(WebCore::Document::userInterfaceLayoutDirectionChanged): Deleted.
(WebCore::Document::notifyMediaCaptureOfVisibilityChanged): Deleted.
(WebCore::Document::registerForMediaStreamStateChangeCallbacks): Deleted.
(WebCore::Document::unregisterForMediaStreamStateChangeCallbacks): Deleted.
(WebCore::Document::mediaStreamCaptureStateChanged): Use forEachMediaElement to call
mediaStreamCaptureStarted on each media element rather than keeping a separate registry.
(WebCore::Document::addApplicationStateChangeListener): Deleted.
(WebCore::Document::removeApplicationStateChangeListener): Deleted.
(WebCore::Document::forEachApplicationStateChangeListener): Deleted.

  • dom/Document.h: Clean up forward declarations a bit. Updated for above changes,

removing many function and data members.

  • dom/Element.cpp:

(WebCore::Element::spellcheckAttributeState const): Deleted.
(WebCore::Element::isSpellCheckingEnabled const): Refactored to merge in the logic
from the spellcheckAttributeState function. The combined function is both a bit easier
to understand and smaller than the two functions were.

  • dom/Element.h: Removed some unneeded includes. Removed SpellcheckAttributeState.

Made fastAttributeLookupAllowed private. Removed mediaVolumeDidChange,
privateBrowsingStateDidChange, captionPreferencesChanged, and spellcheckAttributeState.

  • dom/FullscreenManager.cpp: Removed unneeded includes.

(WebCore::FullscreenManager::willEnterFullscreen): Use is<HTMLMediaElement> instead of
calling isMediaElement directly.

  • dom/NameNodeList.cpp:

(WebCore::NameNodeList::~NameNodeList): Updated for "atomic" -> "atom".

  • dom/Node.cpp:

(WebCore::NodeListsNodeData::invalidateCaches): Ditto.
(WebCore::NodeListsNodeData::invalidateCachesForAttribute): Ditto.

  • dom/NodeRareData.h: Removed unneeded includes. Updated for "atomic" -> "atom".

Made a few coding style tweaks.

  • dom/TreeScope.cpp:

(WebCore::TreeScope::getElementById const): Updated for "atomic" -> "atom".

  • html/HTMLMediaElement.cpp:

(WebCore::documentToElementSetMap): Deleted.
(WebCore::addElementToDocumentMap): Deleted.
(WebCore::removeElementFromDocumentMap): Deleted.
(WebCore::HTMLMediaElement::registerWithDocument): Added call to registerMediaElement,
removed eight now-obsolete registrations.
(WebCore::HTMLMediaElement::unregisterWithDocument): Ditto.
(WebCore::HTMLMediaElement::mediaVolumeDidChange): Added an #if !PLATFORM(IOS_FAMILY)
to preserve the current behavior, since this was not registered for PLATFORM(IOS_FAMILY)
before. This should be revisited because it's not clear this platform difference is needed.
(WebCore::HTMLMediaElement::privateBrowsingStateDidChange): Ditto.
(WebCore::HTMLMediaElement::setMediaGroup): Change to use Document::forEachMediaElement
so we don't need to keep our own global set of media elements for each document. Required
a little bit of code structure change. Added a FIXME because the decision about which
media element is selected depends on hash table order as it always has; seems inappropriate.
(WebCore::HTMLMediaElement::setMediaControlsDependOnPageScaleFactor): Removed the code
to register/unregister.
(WebCore::HTMLMediaElement::pageScaleFactorChanged): Only do the work if it's needed;
this replicates the old behavior which was accomplished by registering/unregistering.

  • html/HTMLMediaElement.h: Removed the overrides for various virtual member functions.

Instead these are now public functions. Also removed ApplicationStateChangeListener.

  • html/LabelableElement.cpp:

(WebCore::LabelableElement::labels): Updated for "atomic" -> "atom".

  • html/LabelsNodeList.cpp:

(WebCore::LabelsNodeList::~LabelsNodeList): Ditto.

  • html/RadioNodeList.cpp:

(WebCore::RadioNodeList::~RadioNodeList): Ditto.

  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::constructTreeFromHTMLToken): Ditto.

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::parseHeader): Ditto.

  • page/ApplicationStateChangeListener.h: Removed.
  • page/Page.cpp:

(WebCore::Page::renderTreeSize const): Use forEachDocument.
(WebCore::Page::setNeedsRecalcStyleInAllFrames): Ditto.
(WebCore::Page::unmarkAllTextMatches): Ditto.
(WebCore::Page::editableElementsInRect const): Ditto.
(WebCore::Page::setMediaVolume): Tweaked range check so it will reject
NaN values. Use forEachMediaElement to call mediaVolumeDidChange,
eliminating the need for Document::mediaVolumeDidChange.
(WebCore::Page::setPageScaleFactor): Refactored to eliminate large blocks
of repeated code. Use forEachMediaElement to call pageScaleFactorChanged,
eliminating the need for Document::pageScaleFactorChangedAndStable.
(WebCore::Page::setUserInterfaceLayoutDirection): Use forEachMediaElement
to call userInterfaceLayoutDirectionChanged, eliminating the need for
Document::userInterfaceLayoutDirectionChanged.
(WebCore::Page::updateMediaElementRateChangeRestrictions): Use
forEachMediaElement to call updateRateChangeRestrictionas. The old code
would call this on all media elements in the current web process, which
means the functions would be called many times for the same media element.
(WebCore::Page::updateRendering): Use forEachDocument consistently for
all the document iteration. Before it was used for half the function and not
used for the other half; no obvious reason for the differece.
(WebCore::Page::suspendScriptedAnimations): Use forEachDocument.
(WebCore::Page::resumeScriptedAnimations): Ditto.
(WebCore::updateScriptedAnimationsThrottlingReason): Ditto.
(WebCore::Page::userStyleSheetLocationChanged): Ditto.
(WebCore::Page::invalidateStylesForAllLinks): Ditto.
(WebCore::Page::invalidateStylesForLink): Ditto.
(WebCore::Page::invalidateInjectedStyleSheetCacheInAllFrames): Ditto.
(WebCore::Page::setTimerThrottlingState): Ditto.
(WebCore::Page::dnsPrefetchingStateChanged): Ditto.
(WebCore::Page::storageBlockingStateChanged): Ditto.
(WebCore::Page::updateIsPlayingMedia): Ditto.
(WebCore::Page::setMuted): Ditto.
(WebCore::Page::stopMediaCapture): Ditto.
(WebCore::Page::stopAllMediaPlayback): Ditto.
(WebCore::Page::suspendAllMediaPlayback): Ditto.
(WebCore::Page::resumeAllMediaPlayback): Ditto.
(WebCore::Page::suspendAllMediaBuffering): Ditto.
(WebCore::Page::resumeAllMediaBuffering): Ditto.
(WebCore::setSVGAnimationsState): Deleted.
(WebCore::Page::setIsVisibleInternal): Use forEachDocument to call
suspend/resumeDeviceMotionAndOrientationUpdates, obviating the need for
Page::suspend/resumeDeviceMotionAndOrientationUpdates. Use
forEachDocument to call pause/unpauseAnimations, obviating the need for
WebCore::setSVGAnimationsState. Use forEachDocument to call
visibilityStateChanged, removing the need to write out a loop that
gathers the documents into a vector.
(WebCore::Page::suspendDeviceMotionAndOrientationUpdates): Deleted.
(WebCore::Page::resumeDeviceMotionAndOrientationUpdates): Deleted.
(WebCore::Page::captionPreferencesChanged): Use forEachDocument.
(WebCore::Page::setSessionID): Ditto.
(WebCore::Page::setPlaybackTarget): Ditto.
(WebCore::Page::playbackTargetAvailabilityDidChange): Ditto.
(WebCore::Page::setShouldPlayToPlaybackTarget): Ditto.
(WebCore::Page::playbackTargetPickerWasDismissed): Ditto.
(WebCore::Page::setAllowsMediaDocumentInlinePlayback): Use
forEachMediaElement to call allowsMediaDocumentInlinePlaybackChanged,
obviating the need for Document::allowsMediaDocumentInlinePlaybackChanged.
(WebCore::Page::setUnobscuredSafeAreaInsets): Use forEachDocument.
(WebCore::Page::setUseSystemAppearance): Ditto.
(WebCore::Page::setFullscreenInsets): Ditto.
(WebCore::Page::setFullscreenAutoHideDuration): Ditto.
(WebCore::Page::setFullscreenControlsHidden): Ditto.
(WebCore::Page::forEachDocument): Merged the collectDocuments function
in since it's only used here.
(WebCore::Page::collectDocuments): Deleted.
(WebCore::Page::forEachMediaElement): Added.
(WebCore::Page::applicationWillResignActive): Use forEachMediaElement,
eliminating the need for forEachApplicationStateChangeListener.
(WebCore::Page::applicationDidBecomeActive): Ditto.
(WebCore::Page::recomputeTextAutoSizingInAllFrames): Use forEachDocument.

  • page/Page.h: Removed unneeded forward declarations. Removed unused

FindDirection enum. Tweaked formatting. Use bool instead of uint8_t as
underlying type for enum class with only two values. Updated for changes above.

  • platform/text/TextEncoding.cpp:

(WebCore::TextEncoding::TextEncoding): Updated for "atomic" -> "atom".
(WebCore::TextEncoding::domName const): Ditto.
(WebCore::TextEncoding::usesVisualOrdering const): Ditto.

  • platform/text/TextEncodingRegistry.cpp:

(WebCore::addToTextEncodingNameMap): Ditto.
(WebCore::addToTextCodecMap): Ditto.
(WebCore::pruneBlacklistedCodecs): Ditto.
(WebCore::addEncodingName): Ditto.
(WebCore::atomCanonicalTextEncodingName): Ditto.

  • platform/text/TextEncodingRegistry.h: Ditto.
  • xml/XPathFunctions.cpp:

(WebCore::XPath::atomicSubstring): Deleted.
(WebCore::XPath::toStringView): Added. Later could make a StringBuilder member
function instead.
(WebCore::XPath::FunId::evaluate const): Use toStringView and StringView::substring
instead of "atomicSubstring", since getElementById can be called on a StringView
and there's no need to allocate/deallocate an AtomString just to check if it exists.

Source/WebKit:

  • WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:

(WebKit::InjectedBundleHitTestResult::mediaType const): Use is<HTMLMediaElement>.

Source/WebKitLegacy/win:

  • AccessibleBase.cpp:

(AccessibleBase::get_attribute): Updated for "atomic" -> "atom".

8:09 AM Changeset in webkit [253922] by commit-queue@webkit.org
  • 5 edits
    11 moves
    6 adds
    5 deletes in trunk/LayoutTests

LayoutTests/imported/w3c:
[css-grid] Move some alignment tests to the WPT folder and add width-keyword-classes.css
https://bugs.webkit.org/show_bug.cgi?id=204407

Patch by Rossana Monteriso <rmonteriso@igalia.com> on 2019-12-27
Reviewed by Javier Fernandez.

Add some css alignment tests from WebKit, checked and adapted to WPT, in the corresponding css-grid/alignment folder.
Add width-keyword-classes.css support file to css/support, to make it easily available to all css tests.

  • resources/import-expectations.json:
  • web-platform-tests/css/css-grid/alignment/grid-align-content.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-content-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-lr.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-lr-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-rl.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-rl-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-align-justify-margin-border-padding.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-justify-margin-border-padding-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-align-justify-overflow.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-justify-overflow-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-align-justify-stretch-with-orthogonal-flows.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-justify-stretch-with-orthogonal-flows-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-align-justify-stretch.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-justify-stretch-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-align.html:
  • web-platform-tests/css/css-grid/alignment/grid-align-expected.txt:
  • web-platform-tests/css/css-grid/alignment/w3c-import.log:
  • web-platform-tests/css/support/width-keyword-classes.css:

LayoutTests:
[css-grid] Move some alignment tests to the WPT folder
https://bugs.webkit.org/show_bug.cgi?id=204407

Patch by Rossana Monteriso <rmonteriso@igalia.com> on 2019-12-27
Reviewed by Javier Fernandez.

Remove some tests from fast/css-grid/alignment, that are being replaced by adapted tests in the corresponding WPT test folder.

  • fast/css-grid-layout/grid-align-content-expected.txt: Removed.
  • fast/css-grid-layout/grid-align-expected.txt: Removed.
  • fast/css-grid-layout/grid-align-justify-margin-border-padding-expected.txt: Removed.
  • fast/css-grid-layout/grid-align-justify-margin-border-padding-vertical-lr-expected.txt: Removed.
  • fast/css-grid-layout/grid-align-justify-margin-border-padding-vertical-rl-expected.txt: Removed.
  • fast/css-grid-layout/grid-align-justify-overflow-expected.txt: Removed.
  • fast/css-grid-layout/grid-align-justify-stretch-expected.txt: Removed.
  • fast/css-grid-layout/grid-align-justify-stretch-with-orthogonal-flows-expected.txt: Removed.
  • fast/css-grid-layout/grid-align-justify-stretch-with-orthogonal-flows.html: Removed.
  • fast/css-grid-layout/grid-align-content.html: Removed.
  • fast/css-grid-layout/grid-align-justify-margin-border-padding-vertical-lr.html: Removed.
  • fast/css-grid-layout/grid-align-justify-margin-border-padding-vertical-rl.html: Removed.
  • fast/css-grid-layout/grid-align-justify-margin-border-padding.html: Removed.
  • fast/css-grid-layout/grid-align-justify-overflow.html: Removed.
  • fast/css-grid-layout/grid-align-justify-stretch-with-orthogonal-flows.html: Removed.
  • fast/css-grid-layout/grid-align-justify-stretch.html: Removed.
  • fast/css-grid-layout/grid-align.html: Removed.
  • resources/import-expectations.json:
  • web-platform-tests/css/css-grid/alignment/w3c-import.log:
7:22 AM Changeset in webkit [253921] by Antti Koivisto
  • 4 edits in trunk/Source/WebCore

[LFC][Integration] Ensure layout boxes have expected display types
https://bugs.webkit.org/show_bug.cgi?id=205606

Reviewed by Zalan Bujtas.

In some cases render tree may have display property values that don't match the renderer type. This is fine since the behavior is driven by the renderer.

LFC layout is driven by display property so the effective value needs to make sense. This patch fixes assertions seen in

fast/css/fieldset-display-row.html
fast/css-grid-layout/grid-strict-ordering-crash-2.html
imported/w3c/web-platform-tests/css/css-display/display-flow-root-001.html
imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-display.html
tables/mozilla/bugs/bug275625.html

  • layout/integration/LayoutIntegrationLineLayout.cpp:

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

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::buildLayoutTreeForIntegration):

Always set display to 'block' for the root RenderBlockFlow.
Renamed for clarity.

(WebCore::Layout::TreeBuilder::createLayoutBox):

Always set <br> display to inline.

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

Pass the parent container instead of parent renderer so we can read effective style.

  • layout/layouttree/LayoutTreeBuilder.h:
6:13 AM Changeset in webkit [253920] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Fix LayoutTests/fast/backgrounds/size/backgroundSize15.html
https://bugs.webkit.org/show_bug.cgi?id=205602
<rdar://problem/58212499>

Reviewed by Antti Koivisto.

softWrapOpportunityIndex could point after the last inline item in the list (when there's no more wrap opportunity)
e.g text<br> : the softWrapOpportunityIndex is 2.

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::nextContentForLine):

2:50 AM Changeset in webkit [253919] by commit-queue@webkit.org
  • 8 edits
    3 deletes in trunk

ANGLE: Fix WebGL conformance tests for EXT_texture_filter_anisotropic
https://bugs.webkit.org/show_bug.cgi?id=205520

Fixes get-extension.html and ext-texture-filter-anisotropic.html.

Patch by James Darpinian <James Darpinian> on 2019-12-27
Reviewed by Dean Jackson.

  • html/canvas/WebGL2RenderingContext.cpp:

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

  • html/canvas/WebGLRenderingContext.cpp:

(WebCore::WebGLRenderingContext::getExtension):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::getTexParameter):

12:49 AM Changeset in webkit [253918] by commit-queue@webkit.org
  • 6 edits
    4 deletes in trunk

ANGLE: Fix WebGL conformance test framebuffer-object-attachment.html
https://bugs.webkit.org/show_bug.cgi?id=205514

Rely on ANGLE to implement DEPTH_STENCIL_ATTACHMENT instead of emulating it.

Patch by James Darpinian <James Darpinian> on 2019-12-27
Reviewed by Dean Jackson.

  • html/canvas/WebGLFramebuffer.cpp:

(WebCore::WebGLFramebuffer::removeAttachmentFromBoundFramebuffer):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::setupFlags):
(WebCore::WebGLRenderingContextBase::framebufferRenderbuffer):
(WebCore::WebGLRenderingContextBase::readPixels):

Dec 26, 2019:

12:38 PM Changeset in webkit [253917] by Antti Koivisto
  • 9 edits
    2 adds in trunk

Remove display:compact
https://bugs.webkit.org/show_bug.cgi?id=205597

Reviewed by Anders Carlsson.

Source/WebCore:

It is rendered as 'block' but the value is still parsed. Remove it completely, matching other engines.

Test: fast/css/display-compact-ignored.html

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):

  • css/CSSValueKeywords.in:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::createFor):

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::adjustStyle):

  • rendering/style/RenderStyleConstants.cpp:

(WebCore::operator<<):

  • rendering/style/RenderStyleConstants.h:
  • style/StyleAdjuster.cpp:

(WebCore::Style::equivalentBlockDisplay):

LayoutTests:

  • fast/css/display-compact-ignored-expected.txt: Added.
  • fast/css/display-compact-ignored.html: Added.
11:01 AM Changeset in webkit [253916] by Wenson Hsieh
  • 21 edits in trunk/Source/WebCore

Minor code cleanup around WebCore::Path
https://bugs.webkit.org/show_bug.cgi?id=205574

Reviewed by Anders Carlsson.

Carry out some minor refactoring in WebCore::Path:

  • Change PathElementType into an 8-bit-wide enum class, and move it under PathElement's namespace as simply Type.
  • Change PathElement's FloatPoint* that points to an array of 3 FloatPoints into a FloatPoint[3].
  • Change Path::strokeContains() to take a StrokeStyleApplier& instead of a StrokeStyleApplier*, since it assumes that the given StrokeStyleApplier is nonnull anyways.
  • Change Path::RoundedRectStrategy into an 8-bit enum class.
  • Other miscellaneous style fixes.

No change in behavior.

  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(convertPathToScreenSpaceFunction):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::isPointInStrokeInternal):

  • inspector/InspectorOverlay.cpp:

(WebCore::drawShapeHighlight):

  • platform/graphics/FontCascade.cpp:

(WebCore::findPathIntersections):

  • platform/graphics/Path.cpp:

(WebCore::Path::addRoundedRect):
(WebCore::operator<<):

  • platform/graphics/Path.h:

(WebCore::Path::encode const):
(WebCore::Path::decode):

  • platform/graphics/PathTraversalState.cpp:

(WebCore::PathTraversalState::appendPathElement):
(WebCore::PathTraversalState::processPathElement):

  • platform/graphics/PathTraversalState.h:
  • platform/graphics/cairo/PathCairo.cpp:

(WebCore::Path::strokeContains const):
(WebCore::Path::apply const):

  • platform/graphics/cg/PathCG.cpp:

(WebCore::Path::strokeContains const):
(WebCore::CGPathApplierToPathApplier):

  • platform/graphics/win/PathDirect2D.cpp:

(WebCore::Path::strokeContains const):

  • rendering/shapes/BoxShape.cpp:

(WebCore::BoxShape::buildDisplayPaths const):

  • rendering/shapes/RectangleShape.cpp:

(WebCore::RectangleShape::buildDisplayPaths const):

  • rendering/svg/RenderSVGShape.cpp:

(WebCore::RenderSVGShape::shapeDependentStrokeContains):

  • rendering/svg/SVGMarkerData.h:

(WebCore::SVGMarkerData::updateMarkerDataForPathElement):

  • rendering/svg/SVGPathData.cpp:

(WebCore::pathFromRectElement):

  • rendering/svg/SVGSubpathData.h:

(WebCore::SVGSubpathData::updateFromPathElement):

  • svg/SVGPathTraversalStateBuilder.cpp:

(WebCore::SVGPathTraversalStateBuilder::moveTo):
(WebCore::SVGPathTraversalStateBuilder::lineTo):
(WebCore::SVGPathTraversalStateBuilder::curveToCubic):
(WebCore::SVGPathTraversalStateBuilder::closePath):

  • svg/SVGPathUtilities.cpp:

(WebCore::buildStringFromPath):

  • testing/Internals.cpp:

(WebCore::Internals::pathStringWithShrinkWrappedRects):

8:01 AM Changeset in webkit [253915] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] When align the inline content we need to align the line as well
https://bugs.webkit.org/show_bug.cgi?id=205596
<rdar://problem/58197300>

Reviewed by Antti Koivisto.

Horizontal alignment means that we not only adjust the runs but also make sure the line box is aligned as well.

<div style="text-align: center; width: 100px;">centered text</div>
The line box will also be centered as opposed to start at 0px all the way to [centered text] run's right edge.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::alignHorizontally):
(WebCore::Layout::LineBuilder::alignContentHorizontally const): Deleted.

  • layout/inlineformatting/InlineLineBuilder.h:
2:12 AM Changeset in webkit [253914] by Carlos Garcia Campos
  • 8 edits
    2 adds in trunk/Source/WebKit

[GTK][WPE] Remove duplicated code
https://bugs.webkit.org/show_bug.cgi?id=205560

Reviewed by Sergio Villar Senin.

Remove duplicated code related to IME between GTK and WPE that can be shared.

  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp: Added.

(WebKit::WebEditorClient::handleInputMethodKeydown):
(WebKit::WebEditorClient::didDispatchInputMethodKeydown):

  • WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
  • WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp:
  • WebProcess/WebPage/glib/WebPageGLib.cpp:

(WebKit::WebPage::setInputMethodState):

  • WebProcess/WebPage/gtk/WebPageGtk.cpp:
  • WebProcess/WebPage/wpe/WebPageWPE.cpp:
2:11 AM Changeset in webkit [253913] by youenn@apple.com
  • 3 edits in trunk/LayoutTests

REGRESSION: [ Mojave+ Debug ] fast/mediastream/captureStream/canvas2d-heavy-drawing.html is a flakey failure
https://bugs.webkit.org/show_bug.cgi?id=205365
<rdar://problem/58026430>

Reviewed by Eric Carlson.

  • fast/mediastream/captureStream/canvas2d-heavy-drawing.html:

Unflake test by comparing the number of frames with the number of printLine calls.
They should never diverge too much one from the other.

  • platform/mac-wk2/TestExpectations:
1:18 AM WebKitW3CTesting edited by Pablo Saavedra
(diff)

Dec 25, 2019:

6:06 PM Changeset in webkit [253912] by Alan Bujtas
  • 5 edits
    2 adds in trunk

Run with offset from the content box's logical left paint its tab stop at wrong position.
https://bugs.webkit.org/show_bug.cgi?id=205595
<rdar://problem/58194698>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/text/tab-stops-with-offset-from-parent.html

Use the run's left offset from the line as the xPos for the TextRun. Most cases the line has only one run
with 0 offset. This patch fixes the case when the additional runs (with offset != 0) paint their tab positions at the wrong place.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

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

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::paintFlow):

LayoutTests:

  • fast/text/tab-stops-with-offset-from-parent-expected.html: Added.
  • fast/text/tab-stops-with-offset-from-parent.html: Added.
10:26 AM Changeset in webkit [253911] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Painting] Fix LayoutTests/imported/w3c/web-platform-tests/css/css-text/white-space/tab-stop-threshold-001.html
https://bugs.webkit.org/show_bug.cgi?id=205594
<rdar://problem/58194138>

Reviewed by Antti Koivisto.

Construct the TextRun with relative coordinates to get tab stops right.

  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::paintInlineContent):

9:50 AM Changeset in webkit [253910] by dino@apple.com
  • 7 edits in trunk/Tools

WKTR/DRT always trigger the Discrete GPU on dual GPU systems
https://bugs.webkit.org/show_bug.cgi?id=205546
<rdar://problem/58139610>

Reviewed by Alexey Proskuryakov.

Add an option "--prefer-integrated-gpu" to run-webkit-test
that causes the LayoutTestHelper to NOT lock the
machine to a discrete GPU on a dual-GPU system.
The default is false.

  • DumpRenderTree/mac/LayoutTestHelper.m:

(main):

  • Scripts/webkitpy/layout_tests/controllers/manager.py:

(Manager._set_up_run):

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(parse_args):

  • Scripts/webkitpy/port/base.py:

(Port.start_helper):

  • Scripts/webkitpy/port/mac.py:

(MacPort.start_helper):

  • Scripts/webkitpy/port/mock_drt.py:

(MockDRTPort.start_helper):

7:52 AM Changeset in webkit [253909] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Forward scan for soft wrap opportunities
https://bugs.webkit.org/show_bug.cgi?id=205584
<rdar://problem/58188386>

Reviewed by Antti Koivisto.

This patch implements forward scanning to find wrap opportunities in inline content.
e.g <span></span>example<span><span></span> content</span>
When we reach "ex-" content, in order to figure out if it is at a wrap opportunity, we scan the content
forward until after we reach another inline content, in this case " " right before the "content" and
check if we can break the content between these 2 inline items.

isAtSoftWrapOpportunity: takes 2 (adjacent by skipping non-content inline items) and return true if there's
a soft wrap opportunity in between them.
LineBreaker::nextWrapOpportunity: returns the next wrap opportunity (either a soft wrap opportunity or a line break or the end of the content)

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::endsWithSoftWrapOpportunity):
(WebCore::Layout::isAtSoftWrapOpportunity):
(WebCore::Layout::LineBreaker::nextWrapOpportunity):
(WebCore::Layout::LineBreaker::ContinousContent::ContinousContent):
(WebCore::Layout::LineBreaker::lastSoftWrapOpportunity): Deleted.

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

(WebCore::Layout::LineCandidateContent::isLineBreak const):
(WebCore::Layout::LineCandidateContent::append):
(WebCore::Layout::LineCandidateContent::setIsLineBreak):
(WebCore::Layout::LineLayoutContext::layoutLine):
(WebCore::Layout::LineLayoutContext::nextContentForLine):
(WebCore::Layout::ContinousContent::hasIntrusiveFloats const): Deleted.
(WebCore::Layout::ContinousContent::runs const): Deleted.
(WebCore::Layout::ContinousContent::floats const): Deleted.
(WebCore::Layout::ContinousContent::endsWithLineBreak const): Deleted.
(WebCore::Layout::ContinousContent::setEndsWithLineBreak): Deleted.
(WebCore::Layout::ContinousContent::append): Deleted.
(WebCore::Layout::LineLayoutContext::nextContinousContentForLine): Deleted.

  • layout/inlineformatting/LineLayoutContext.h:
5:09 AM Changeset in webkit [253908] by Wenson Hsieh
  • 2 edits in trunk/Tools

REGRESSION (r253282): Tests that use applyAutocorrection assert in UIScriptContext::requestUIScriptCompletion
https://bugs.webkit.org/show_bug.cgi?id=205588
<rdar://problem/58109942>

Reviewed by Tim Horton.

The change made in r253282 intended to defer completing the async task prepared in
UIScriptController::applyAutocorrection until after the current runloop; however, it ended up keeping the
synchronous call to asyncTaskComplete. Fix this by removing this code, so that we instead wait for the
dispatch_async block to invoke asyncTaskComplete.

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::applyAutocorrection):

4:38 AM Changeset in webkit [253907] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] LineBreaker should tell whether the line should receive no more content
https://bugs.webkit.org/show_bug.cgi?id=205587
<rdar://problem/58188635>

Reviewed by Antti Koivisto.

LineBreaker returns IsEndOfLine::No when the current line should still be able to receive additional content.
This way we can start closing the line sooner (as opposed to start probing the subsequent content).
(Note that just because the current content overflows the line, it does not necessarily mean that the subsequent content
wraps to the next line.)

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::breakingContextForInlineContent):
(WebCore::Layout::LineBreaker::ContinousContent::lastContentRunIndex const):

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

(WebCore::Layout::LineLayoutContext::layoutLine):
(WebCore::Layout::LineLayoutContext::addFloatItems):
(WebCore::Layout::LineLayoutContext::placeInlineContentOnCurrentLine):

  • layout/inlineformatting/LineLayoutContext.h:
4:22 AM Changeset in webkit [253906] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Add support for zero-width-space character (U+200B)
https://bugs.webkit.org/show_bug.cgi?id=205586
<rdar://problem/58188505>

Reviewed by Antti Koivisto.

If a line has only U+200B characters, it is still considered empty from line breaking point of view.
(Note that U+200B is not considered a whitespace character so a run with U+200B does not collapse.)

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::appendTextContent): empty runs don't collapse.
(WebCore::Layout::LineBuilder::isVisuallyNonEmpty const):
(WebCore::Layout::LineBuilder::InlineItemRun::hasEmptyTextContent const):

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

(WebCore::Layout::InlineTextItem::isEmptyContent const):

  • layout/inlineformatting/InlineTextItem.h:
4:07 AM Changeset in webkit [253905] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Fix LayoutTests/imported/w3c/web-platform-tests/css/css-text/letter-spacing/letter-spacing-control-chars-001.html
https://bugs.webkit.org/show_bug.cgi?id=205585
<rdar://problem/58188420>

Reviewed by Antti Koivisto.

TextUtil::fixedPitchWidth works on simple content only (letter-spacing forces slow font measuring path).

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::width):

1:07 AM Changeset in webkit [253904] by ysuzuki@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

[JSC] Compact Bytecodes more by emitting 1-byte Opcode
https://bugs.webkit.org/show_bug.cgi?id=205553

Reviewed by Keith Miller.

When emitting 16bit / 32bit bytecodes, we also emit 16bit / 32bit Opcode.
So the layout is the following.

8bit 16bit 16bit 16bit

  • [op_wide16][ Opcode ][ Operand0 ][ Operand1 ]

But this is unnecessary since Opcode must fit in 8bit. We should emit Opcode in 8bit in all cases.

8bit 8bit 16bit 16bit

  • [op_wide16][Opcode][ Operand0 ][ Operand1 ]
  • bytecode/Instruction.h:

(JSC::BaseInstruction::size const):

  • bytecompiler/BytecodeGeneratorBaseInlines.h:

(JSC::BytecodeGeneratorBase<Traits>::alignWideOpcode16):
(JSC::BytecodeGeneratorBase<Traits>::alignWideOpcode32):

  • generator/Argument.rb:
  • generator/Opcode.rb:
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • llint/WebAssembly.asm:
Note: See TracTimeline for information about the timeline view.