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

Timeline



Dec 9, 2019:

9:02 PM Changeset in webkit [253320] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix the x86_64 probe so that we can get a full stack trace with libunwind and lldb.
https://bugs.webkit.org/show_bug.cgi?id=205050

Reviewed by Michael Saboff.

Before this patch, the stack trace from inside a probe function is cut off at ctiMasmProbeTrampoline:

(lldb) bt

  • thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xbbadbeef)

...
frame #4: 0x0000000100824607 JavaScriptCore`WTF::Function<void (JSC::Probe::Context&)>::operator(this=0x000000010b88bd00, in=0x00007ffeefbfd400)(JSC::Probe::Context&) const at Function.h:79:35
frame #5: 0x0000000100823996 JavaScriptCore`JSC::stdFunctionCallback(context=0x00007ffeefbfd400) at MacroAssembler.cpp:53:5
frame #6: 0x000000010082701e JavaScriptCore`JSC::Probe::executeProbe(state=0x00007ffeefbfd480) at ProbeContext.cpp:51:5
frame #7: 0x000000010082614b JavaScriptCore`ctiMasmProbeTrampoline + 299

(lldb)

After this patch, we'll now get the full stack trace from inside the probe function:

(lldb) bt

  • thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xbbadbeef)

...
frame #4: 0x0000000100826d17 JavaScriptCore`WTF::Function<void (JSC::Probe::Context&)>::operator(this=0x0000000106b878f8, in=0x00007ffeefbfd400)(JSC::Probe::Context&) const at Function.h:79:35
frame #5: 0x0000000100826106 JavaScriptCore`JSC::stdFunctionCallback(context=0x00007ffeefbfd400) at MacroAssembler.cpp:53:5
frame #6: 0x000000010082986e JavaScriptCore`JSC::Probe::executeProbe(state=0x00007ffeefbfd480) at ProbeContext.cpp:51:5
frame #7: 0x00000001008289a2 JavaScriptCore`ctiMasmProbeTrampoline + 338
frame #8: 0x0000466db28025be
frame #9: 0x0000000100754ffc JavaScriptCore`llint_entry at LowLevelInterpreter.asm:994
frame #10: 0x0000000100738173 JavaScriptCore`vmEntryToJavaScript at LowLevelInterpreter64.asm:307
frame #11: 0x0000000101489307 JavaScriptCore`JSC::JITCode::execute(this=0x0000000106ba1520, vm=0x0000000106d00000, protoCallFrame=0x00007ffeefbfd9b8) at JITCodeInlines.h:38:38
frame #12: 0x0000000101488982 JavaScriptCore`JSC::Interpreter::executeProgram(this=0x0000000106bfd1f8, source=0x00007ffeefbff090, (null)=0x000000010d0e0000, thisObj=0x000000010d0e8020) at Interpreter.cpp:847:51
frame #13: 0x00000001017d1f9c JavaScriptCore`JSC::evaluate(globalObject=0x000000010d0e0000, source=0x00007ffeefbff090, thisValue=JSValue @ 0x00007ffeefbfef60, returnedException=0x00007ffeefbff0b0) at Completion.cpp:146:38
frame #14: 0x000000010005838f jsc`runWithOptions(globalObject=0x000000010d0e0000, options=0x00007ffeefbff620, success=0x00007ffeefbff48b) at jsc.cpp:2670:35
frame #15: 0x000000010002a0da jsc`jscmain(this=0x00007ffeefbff5a0, vm=0x0000000106d00000, globalObject=0x000000010d0e0000, success=0x00007ffeefbff48b)::$_6::operator()(JSC::VM&, GlobalObject*, bool&) const at jsc.cpp:3157:13
frame #16: 0x0000000100006eff jsc`int runJSC<jscmain(int, char)::$_6>(options=0x00007ffeefbff620, isWorker=false, func=0x00007ffeefbff5a0)::$_6 const&) at jsc.cpp:3003:9
frame #17: 0x0000000100005988 jsc`jscmain(argc=10, argv=0x00007ffeefbff6c8) at jsc.cpp:3150:18
frame #18: 0x000000010000575e jsc`main(argc=10, argv=0x00007ffeefbff6c8) at jsc.cpp:2498:15
frame #19: 0x00007fff6cfc4da9 libdyld.dylib`start + 1
frame #20: 0x00007fff6cfc4da9 libdyld.dylib`start + 1

(lldb)

The difference is that the x86_64 ctiMasmProbeTrampoline now uses the standard
function prologue, and keeps %rbp pointing to trampoline function's semblance of
a frame that libunwind can understand while it calls the probe function.

  • assembler/MacroAssemblerX86Common.cpp:
8:07 PM Changeset in webkit [253319] by ysuzuki@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] Put CustomGetterSetter and DOMAttributeGetterSetter in IsoSubspace
https://bugs.webkit.org/show_bug.cgi?id=205044

Reviewed by Sam Weinig.

Put CustomGetterSetter and DOMAttributeGetterSetter in IsoSubspace.

  • runtime/CustomGetterSetter.h:

(JSC::CustomGetterSetter::subspaceFor):

  • runtime/DOMAttributeGetterSetter.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
7:57 PM Changeset in webkit [253318] by ysuzuki@apple.com
  • 8 edits
    2 deletes in trunk/Source/JavaScriptCore

[JSC] Remove NativeStdFunctionCell
https://bugs.webkit.org/show_bug.cgi?id=205045

Reviewed by Sam Weinig.

NativeStdFunctionCell is introduced because we were not able to make derived classes of JSFunction destructible.
But now we can do that by using IsoSubspace. And we already have IsoSubspace for JSNativeStdFunction. So we do
not need to have NativeStdFunctionCell cell. This patch removes it. And making JSNativeStdFunction destructible.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • inspector/InjectedScriptBase.cpp:

(Inspector::InjectedScriptBase::makeAsyncCall):

  • runtime/JSNativeStdFunction.cpp:

(JSC::JSNativeStdFunction::JSNativeStdFunction):
(JSC::JSNativeStdFunction::visitChildren):
(JSC::JSNativeStdFunction::finishCreation):
(JSC::runStdFunction):
(JSC::JSNativeStdFunction::create):

  • runtime/JSNativeStdFunction.h:
  • runtime/NativeStdFunctionCell.cpp: Removed.
  • runtime/NativeStdFunctionCell.h: Removed.
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
6:39 PM Changeset in webkit [253317] by Kocsen Chung
  • 2 edits
    1 add in branches/safari-608-branch/Tools/TestWebKitAPI

Apply patch. rdar://problem/57363565

6:10 PM Changeset in webkit [253316] by eric.carlson@apple.com
  • 10 edits in trunk/Source

Rename media in the GPU process preference
https://bugs.webkit.org/show_bug.cgi?id=205013
<rdar://problem/57755319>

Reviewed by Tim Horton.

Source/WebCore:

  • page/Settings.yaml:

Source/WebKit:

  • Shared/WebPreferences.yaml:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

Source/WebKitLegacy/mac:

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

(+[WebPreferences initialize]):
(-[WebPreferences useGPUProcessForMedia]):
(-[WebPreferences setUseGPUProcessForMedia:]):
(-[WebPreferences outOfProcessMediaEnabled]): Deleted.
(-[WebPreferences setOutOfProcessMediaEnabled:]): Deleted.

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

(-[WebView _preferencesChanged:]):

5:54 PM Changeset in webkit [253315] by Fujii Hironori
  • 2 edits in trunk/Source/WTF

[MSVC] writeNumberToBufferUnsigned is unsafe for bool type
https://bugs.webkit.org/show_bug.cgi?id=204873

Reviewed by Darin Adler.

MSVC reports warning for using / operator for bool type.

warning C4804: '/': unsafe use of type 'bool' in operation

And, 'bool' isn't expected to be serialized as '0' or '1'. 'bool' isn't supported.

  • wtf/text/IntegerToStringConversion.h: Added a static_assert to ensure UnsignedIntegerType isn't bool.
5:54 PM Changeset in webkit [253314] by Tadeu Zagallo
  • 11 edits
    2 deletes in trunk/Source/JavaScriptCore

[WebAssembly] Remove WasmValidate
https://bugs.webkit.org/show_bug.cgi?id=205037

Reviewed by Saam Barati.

It's currently only used when JSC_useWasmLLInt is false and it creates an additional instantiation
of Wasm::FunctionParser, which adds about 100kb to the binary size. This does not introduce any
behavior changes with the default options, but it means that we'll generate bytecode when calling
WebAssembly.validate/new WebAssembly.Module even when the WasmLLInt is disabled.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • wasm/WasmBBQPlan.cpp:

(JSC::Wasm::BBQPlan::didReceiveFunctionData):

  • wasm/WasmEntryPlan.cpp:
  • wasm/WasmLLIntPlan.cpp:
  • wasm/WasmModule.cpp:

(JSC::Wasm::makeValidationResult):
(JSC::Wasm::makeValidationCallback):
(JSC::Wasm::Module::validateSync):
(JSC::Wasm::Module::validateAsync):

  • wasm/WasmModule.h:
  • wasm/WasmOMGForOSREntryPlan.cpp:

(JSC::Wasm::OMGForOSREntryPlan::work):

  • wasm/WasmOMGPlan.cpp:

(JSC::Wasm::OMGPlan::work):

  • wasm/WasmPlan.cpp:
  • wasm/WasmValidate.cpp: Removed.
  • wasm/WasmValidate.h: Removed.
5:50 PM Changeset in webkit [253313] by Fujii Hironori
  • 3 edits in trunk/Source/WebCore

[WinCairo] Add support of Unicode surrogate pair for simple texts
https://bugs.webkit.org/show_bug.cgi?id=205003

Reviewed by Don Olmstead.

FontCache::systemFallbackForCharacters of Windows port was working
only for BMP because it's using GetFontUnicodeRanges API which
supports only BMP. Use GetCharacterPlacement API to get glyphs for
non-BMP.

GlyphPage::fill of WinCairo port was working only for BMP because
it's using GetGlyphIndices API which supports only BMP. Use
GetCharacterPlacement API to get glyphs for non-BMP.

This change can be tested by pixel tests, but WinCairo port
doesn't include -expected.png files yet. Tested manually.

  • platform/graphics/win/FontCacheWin.cpp:

(WebCore::currentFontContainsCharacterNonBMP): Added.
(WebCore::currentFontContainsCharacter): Changed to take a string
instead of a 16bit character.
(WebCore::FontCache::systemFallbackForCharacters):

  • platform/graphics/win/GlyphPageTreeNodeCairoWin.cpp:

(WebCore::GlyphPage::fill): Use GetCharacterPlacement for non-BMP.

5:48 PM Changeset in webkit [253312] by Patrick Griffis
  • 7 edits
    1 copy
    35 adds in trunk/LayoutTests

Import secure cookie tests from WPT
https://bugs.webkit.org/show_bug.cgi?id=204193

Reviewed by Carlos Alberto Lopez Perez.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • web-platform-tests/cookies/resources/cookie-helper.sub.js: Added.

(credFetch):
(assert_dom_cookie):
(assert_cookie):
(resetSameSiteCookies):
(resetSecureCookies):

  • web-platform-tests/cookies/resources/drop.py: Added.

(main):

  • web-platform-tests/cookies/resources/dropSameSite.py: Added.

(main):

  • web-platform-tests/cookies/resources/dropSecure.py: Added.

(main):

  • web-platform-tests/cookies/resources/echo-cookie.html: Added.
  • web-platform-tests/cookies/resources/echo-json.py: Added.

(main):

  • web-platform-tests/cookies/resources/helpers.py: Added.

(setNoCacheAndCORSHeaders):
(makeCookieHeader):
(makeCookieHeader.makeAV):
(makeDropCookie):
(readParameter):
(readCookies):

  • web-platform-tests/cookies/resources/imgIfMatch.py: Added.

(main):

  • web-platform-tests/cookies/resources/list.py: Added.

(main):

  • web-platform-tests/cookies/resources/postToParent.py: Added.

(main):

  • web-platform-tests/cookies/resources/redirectWithCORSHeaders.py: Added.

(main):

  • web-platform-tests/cookies/resources/set-cookie.py: Added.

(main):

  • web-platform-tests/cookies/resources/set.py: Added.

(main):

  • web-platform-tests/cookies/resources/setSameSite.py: Added.

(main):

  • web-platform-tests/cookies/resources/setSecure.py: Added.

(main):

  • web-platform-tests/cookies/resources/testharness-helpers.js: Added.

(executeNextTest):
(executeTestsSerially):

  • web-platform-tests/cookies/secure/set-from-dom.https.sub-expected.txt: Added.
  • web-platform-tests/cookies/secure/set-from-dom.https.sub.html: Added.
  • web-platform-tests/cookies/secure/set-from-dom.sub-expected.txt: Added.
  • web-platform-tests/cookies/secure/set-from-dom.sub.html: Added.
  • web-platform-tests/cookies/secure/set-from-http.https.sub-expected.txt: Added.
  • web-platform-tests/cookies/secure/set-from-http.https.sub.html: Added.
  • web-platform-tests/cookies/secure/set-from-http.https.sub.html.headers: Added.
  • web-platform-tests/cookies/secure/set-from-http.sub-expected.txt: Added.
  • web-platform-tests/cookies/secure/set-from-http.sub.html: Added.
  • web-platform-tests/cookies/secure/set-from-http.sub.html.headers: Added.
  • web-platform-tests/cookies/secure/set-from-ws.sub-expected.txt: Added.
  • web-platform-tests/cookies/secure/set-from-ws.sub.html: Added.
  • web-platform-tests/cookies/secure/set-from-wss.https.sub-expected.txt: Added.
  • web-platform-tests/cookies/secure/set-from-wss.https.sub.html: Added.

LayoutTests:

Mark newly imported test as failing.
Pending fix for WPE/GTK in webkit.org/b/169356

  • platform/gtk/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/wpe/TestExpectations:
  • platform/ios-wk2/imported/w3c/web-platform-tests/content-security-policy/reporting/report-same-origin-with-cookies-expected.txt: Added.
5:12 PM Changeset in webkit [253311] by Jonathan Bedard
  • 2 edits in trunk/Tools

test-webkitpy: Remove --<configuration> flags from CI
https://bugs.webkit.org/show_bug.cgi?id=205016

Reviewed by Stephanie Lewis.

  • BuildSlaveSupport/build.webkit.org-config/steps.py:

(RunPythonTests): Remove --debug/--release flags to test-webkitpy.

4:57 PM Changeset in webkit [253310] by Simon Fraser
  • 3 edits in trunk/LayoutTests

compositing/video/video-border-radius-clipping.html is a flaky Image Failure
https://bugs.webkit.org/show_bug.cgi?id=204951
rdar://problem/57703078

Unreviewed test gardening. Make the test seek so we have a higher chance
of getting a video frame. It's apparently impossible to know when we have
a frame for ref testing.

  • compositing/video/video-border-radius-clipping-expected.html:
  • compositing/video/video-border-radius-clipping.html:
4:53 PM Changeset in webkit [253309] by Megan Gardner
  • 10 edits
    2 adds in trunk

Fill HighlightRangeGroup and HighlightMap with values from JavaScript
https://bugs.webkit.org/show_bug.cgi?id=204934
Source/WebCore:

rdar://problem/57686335

Reviewed by Simon Fraser.

Fillout HighlightMap and HighlightRangeGroup with the information that we're passed from
the JavaScript side. Make sure that the javascript objects are filled out correctly.

Test: highlight/highlight-map-and-group.html

  • Modules/highlight/HighlightMap.cpp:

(WebCore::HighlightMap::synchronizeBackingMap):
(WebCore::HighlightMap::setFromMapLike):
(WebCore::HighlightMap::clear):
(WebCore::HighlightMap::remove):
(WebCore::HighlightMap::getGroupForStyle):
(WebCore::HighlightMap::addHighlightGroup): Deleted.
(WebCore::HighlightMap::namedItem const): Deleted.
(WebCore::HighlightMap::setNamedItem): Deleted.
(WebCore::HighlightMap::deleteNamedProperty): Deleted.

  • Modules/highlight/HighlightMap.h:

(WebCore::HighlightMap::backingMap):
(WebCore::HighlightMap::synchronizeBackingMap): Deleted.
(WebCore::HighlightMap::clear): Deleted.

  • Modules/highlight/HighlightMap.idl:
  • Modules/highlight/HighlightRangeGroup.cpp:

(WebCore::HighlightRangeGroup::HighlightRangeGroup):
(WebCore::HighlightRangeGroup::initializeSetLike):
(WebCore::HighlightRangeGroup::removeFromSetLike):
(WebCore::HighlightRangeGroup::clearFromSetLike):
(WebCore::HighlightRangeGroup::addToSetLike):
(WebCore::HighlightRangeGroup::addRange): Deleted.
(WebCore::HighlightRangeGroup::removeRange): Deleted.
(WebCore::HighlightRangeGroup::Iterator::Iterator): Deleted.
(WebCore::HighlightRangeGroup::Iterator::next): Deleted.

  • Modules/highlight/HighlightRangeGroup.h:

(WebCore::HighlightRangeGroup::ranges const):
(): Deleted.
(WebCore::HighlightRangeGroup::createIterator): Deleted.

  • Modules/highlight/HighlightRangeGroup.idl:
  • dom/StaticRange.cpp:

(WebCore::StaticRange::operator== const):

  • dom/StaticRange.h:

LayoutTests:

Reviewed by Simon Fraser.

  • highlight/highlight-map-and-group-expected.txt: Added.
  • highlight/highlight-map-and-group.html: Added.
4:47 PM Changeset in webkit [253308] by Truitt Savell
  • 29 edits
    4 deletes in trunk

Unreviewed, rolling out r253299.

Casued 30+ imported/ test failures on Mac wk2

Reverted changeset:

"Throttling requestAnimationFrame should be controlled by
RenderingUpdateScheduler"
https://bugs.webkit.org/show_bug.cgi?id=204713
https://trac.webkit.org/changeset/253299

4:43 PM Changeset in webkit [253307] by Alan Coon
  • 8 edits in trunk/Source

Versioning.

4:38 PM Changeset in webkit [253306] by Alan Coon
  • 3 edits
    1 add in branches/safari-609.1.12-branch

Cherry-pick r253280. rdar://problem/57733405

[WebAssembly] Fix LLIntGenerator's checkConsistency contract
https://bugs.webkit.org/show_bug.cgi?id=204998
<rdar://problem/57733405>

Reviewed by Mark Lam.

JSTests:

  • wasm/regress/stack-consistency.js: Added.

Source/JavaScriptCore:

We check the consistency of the WebAssembly parser's expression stack every time the LLIntGenerator calls
push to allocate a new stack value. However, if we call push more than once (e.g. in a loop), the stack
is no longer consistent, since those values have not yet been placed in the parser's expression stack, so
the generator and parser's stacks are out of sync. Instead, whenever we need to push multiple values, we
should first manually call checkConsistency before any pushes, and all pushes after that should be replaced
with push(NoConsistencyCheck).

  • wasm/WasmLLIntGenerator.cpp: (JSC::Wasm::LLIntGenerator::callInformationForCaller): (JSC::Wasm::LLIntGenerator::addArguments): (JSC::Wasm::LLIntGenerator::addLocal):

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

4:08 PM Changeset in webkit [253305] by Alan Coon
  • 1 copy in branches/safari-609.1.12-branch

New branch.

3:39 PM Changeset in webkit [253304] by Chris Dumez
  • 8 edits in trunk/Source/WebKit

Regression(r249329) ViewGestureController::requestRenderTreeSizeNotificationIfNeeded() sometimes uses wrong webPageID for IPC
https://bugs.webkit.org/show_bug.cgi?id=205012

Reviewed by Tim Horton.

  • UIProcess/InspectorTargetProxy.cpp:

(WebKit::InspectorTargetProxy::connect):
(WebKit::InspectorTargetProxy::disconnect):
(WebKit::InspectorTargetProxy::sendMessageToTargetBackend):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
(WebKit::ProvisionalPageProxy::initializeWebPage):
(WebKit::ProvisionalPageProxy::goToBackForwardItem):
(WebKit::ProvisionalPageProxy::messageSenderConnection const):
(WebKit::ProvisionalPageProxy::messageSenderDestinationID const):

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

(WebKit::SuspendedPageProxy::SuspendedPageProxy):
(WebKit::SuspendedPageProxy::unsuspend):
(WebKit::SuspendedPageProxy::close):
(WebKit::SuspendedPageProxy::messageSenderConnection const):
(WebKit::SuspendedPageProxy::messageSenderDestinationID const):

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

(WebKit::WebPageProxy::continueNavigationInNewProcess):
Have SuspendedPageProxy & ProvisionalPageProxy subclass IPC::MessageSender so that we can call send()
on them without having to pass in a PageIdentifier. Passing a PageIdentifier was error-prone.

  • UIProcess/ViewGestureController.cpp:

(WebKit::ViewGestureController::requestRenderTreeSizeNotificationIfNeeded):
When there was a provisonal page proxy, we would properly send the IPC to the provisional page's process
but would use the wrong PageIdentifier for the IPC. We would use the identifier of the committed WebPage
instead of the one of the provisional WebPage.

3:23 PM Changeset in webkit [253303] by Tadeu Zagallo
  • 3 edits
    1 add in trunk

REGRESSION(r253140): WebAssembly validation should check for unmatched else before calling addElse/addElseToUnreachable
https://bugs.webkit.org/show_bug.cgi?id=205022
<rdar://problem/57748159>

Reviewed by Saam Barati.

JSTests:

  • wasm/regress/unmatched-else.js: Added.

(catch):

Source/JavaScriptCore:

When moving the validation code into the parser in r253140, I missed the validation check of whether
an if block was at the top of the control stack before calling addElse/addElseToUnreachable.

  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::parseExpression):
(JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):

2:53 PM Changeset in webkit [253302] by Wenson Hsieh
  • 14 edits in trunk

Finish encoding/decoding support for DisplayList::SetState
https://bugs.webkit.org/show_bug.cgi?id=205018

Reviewed by Tim Horton.

Source/WebCore:

Finishes encoding and decoding support for the SetState display list item. See below for more details.

  • platform/graphics/Gradient.h:

(WebCore::Gradient::ColorStop::encode const):
(WebCore::Gradient::ColorStop::decode):
(WebCore::Gradient::LinearData::encode const):
(WebCore::Gradient::LinearData::decode):
(WebCore::Gradient::RadialData::encode const):
(WebCore::Gradient::RadialData::decode):
(WebCore::Gradient::ConicData::encode const):
(WebCore::Gradient::ConicData::decode):
(WebCore::Gradient::encode const):
(WebCore::Gradient::decode):

Introduce encoding and decoding support for WebCore::Gradient, and all of its constituent data members.

  • platform/graphics/GraphicsContext.h:

Remove ShadowColorChange, which was unused; instead, shadow color changes are indicated by the ShadowChange
flag, which also encompasses shadow offset and blur.

  • platform/graphics/Image.h:

Move DisplayList::ImageHandle to ImageHandle in Image.h, so that it can be referenced in the encode/decode
methods of WebCore::Pattern.

  • platform/graphics/Pattern.h:

(WebCore::Pattern::encode const):
(WebCore::Pattern::decode):

Introduce encoding and decoding support for WebCore::Pattern.

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::FillRectWithGradient::FillRectWithGradient):

Implement encode and decode for FillRectWithGradient, now that we're able to encode and decode Gradients.

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::SetState::encode const):
(WebCore::DisplayList::SetState::decode):

Encode the remaining data members of a GraphicsContextStateChange's state. These are: strokeGradient,
strokePattern, fillGradient, fillPattern, shadowOffset, shadowBlur, shadowColor (which was not previously being
encoded due to ShadowColorChange never being set), strokeThickness, textDrawingMode, strokeStyle, fillRule,
compositeOperator, blendMode, imageInterpolationQuality, shouldAntialias, shouldSmoothFonts,
shouldSubpixelQuantizeFonts and shadowsIgnoreTransforms.

(WebCore::DisplayList::FillRectWithGradient::encode const):
(WebCore::DisplayList::FillRectWithGradient::decode):
(WebCore::DisplayList::Item::encode const):
(WebCore::DisplayList::Item::decode):
(WebCore::DisplayList::FillRectWithGradient::FillRectWithGradient): Deleted.

Source/WebKit:

Replaces WebCore::DisplayList::ImageHandle with just WebCore::ImageHandle. See WebCore ChangeLog for more
details.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<ImageHandle>::encode):
(IPC::ArgumentCoder<ImageHandle>::decode):
(IPC::ArgumentCoder<DisplayList::ImageHandle>::encode): Deleted.
(IPC::ArgumentCoder<DisplayList::ImageHandle>::decode): Deleted.

  • Shared/WebCoreArgumentCoders.h:

LayoutTests:

Rebaseline several display list layout tests.

  • displaylists/layer-dispay-list-expected.txt:
  • platform/mac-wk1/displaylists/extent-includes-shadow-expected.txt:
  • platform/mac-wk1/displaylists/extent-includes-transforms-expected.txt:
2:19 PM Changeset in webkit [253301] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Add support for word-break: break-word (and overflow-wrap)
https://bugs.webkit.org/show_bug.cgi?id=205024
<rdar://problem/57766087>

Reviewed by Antti Koivisto.

isTextSplitAtArbitraryPositionAllowed() returns true if the text content can just split anywhere.
word-break: break-word behaves like that unless the line already has breaking opportunity.
See https://www.w3.org/TR/css-text-3/#word-break-property

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::isTextContentWrappingAllowed):
(WebCore::Layout::isContentSplitAllowed):
(WebCore::Layout::isTextSplitAtArbitraryPositionAllowed):
(WebCore::Layout::LineBreaker::breakingContextForInlineContent):
(WebCore::Layout::LineBreaker::wordBreakingBehavior const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):
(WebCore::Layout::isContentWrappingAllowed): Deleted.

  • layout/inlineformatting/InlineLineBreaker.h:
1:42 PM Changeset in webkit [253300] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Stop active DOM objects in removedLastRef
https://bugs.webkit.org/show_bug.cgi?id=204975

Reviewed by Antti Koivisto.

Always stop active DOM objects before reaching the destructor.

  • dom/Document.cpp:

(WebCore::Document::~Document):
(WebCore::Document::removedLastRef):
(WebCore::Document::commonTeardown):
(WebCore::Document::prepareForDestruction):

1:12 PM Changeset in webkit [253299] by commit-queue@webkit.org
  • 29 edits
    4 adds in trunk

Throttling requestAnimationFrame should be controlled by RenderingUpdateScheduler
https://bugs.webkit.org/show_bug.cgi?id=204713

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-12-09
Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/animation/request-animation-frame-throttling-outside-viewport.html

requestAnimationFrame is throttled by a timer although its callback are
serviced by the page RenderingUpdate. This led to excessive rAF firing
which makes it more than the preferred frame per seconds.

The solution is to have two throttling types:

1) Page throttling (or full throttling) which slows down all the steps of

RenderingUpdate for the main document and all the sub-documents.

2) Document throttling (or partial throttling) which only slows down the

rAF of a certain document.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::animationInterval const):
(WebCore::DocumentTimeline::updateThrottlingState): Deleted.

  • animation/DocumentTimeline.h:

There is no need to have DocumentTimeline throttling. It is throttled
when the page RenderingUpdate is throttled.

  • dom/Document.cpp:

(WebCore::Document::requestAnimationFrame):
(WebCore::Document::updateLastHandledUserGestureTimestamp):
LowPowerMode throttling is now handled by the page. So remove its handling
in the Document side.

  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::ScriptedAnimationController):
(WebCore::ScriptedAnimationController::page const):
(WebCore::ScriptedAnimationController::interval const):
(WebCore::ScriptedAnimationController::isThrottled const):
(WebCore::ScriptedAnimationController::registerCallback):
(WebCore::ScriptedAnimationController::cancelCallback):
(WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks):
(WebCore::ScriptedAnimationController::scheduleAnimation):
(WebCore::throttlingReasonToString): Deleted.
(WebCore::throttlingReasonsToString): Deleted.
(WebCore::ScriptedAnimationController::addThrottlingReason): Deleted.
(WebCore::ScriptedAnimationController::removeThrottlingReason): Deleted.
(WebCore::ScriptedAnimationController::animationTimerFired): Deleted.

  • dom/ScriptedAnimationController.h:

(WebCore::ScriptedAnimationController::addThrottlingReason):
(WebCore::ScriptedAnimationController::removeThrottlingReason):
Get rid of the rAF throttling timer. Service the rAF callback only when
the period from the current time stamp till the last service time stamp
is greater than the preferred rAF interval .

  • page/FrameView.cpp:

(WebCore::FrameView::updateScriptedAnimationsAndTimersThrottlingState):
ThrottlingReason is now defined outside ScriptedAnimationController.

  • page/Page.cpp:

(WebCore::Page::suspendScriptedAnimations):
(WebCore::Page::resumeScriptedAnimations):
Use forEachDocument().

(WebCore::Page::preferredRenderingUpdateInterval const):
Calculate the preferred RenderingUpdate interval from the throttling
reasons.

(WebCore::Page::setIsVisuallyIdleInternal):
(WebCore::Page::handleLowModePowerChange):
Call adjustRenderingUpdateFrequency() when isLowPowerModeEnabled or
IsVisuallyIdle is toggled.

(WebCore::updateScriptedAnimationsThrottlingReason): Deleted.

  • page/Page.h:

(WebCore::Page::isRenderingUpdateThrottled const):

  • page/RenderingUpdateScheduler.cpp:

(WebCore::RenderingUpdateScheduler::adjustFramesPerSecond):
(WebCore::RenderingUpdateScheduler::adjustRenderingUpdateFrequency):
Change the preferredFramesPerSecond of the DisplayRefreshMonitor if the
throttling is not aggressive e.g. 10_s. Otherwise use the timer.

(WebCore::RenderingUpdateScheduler::scheduleTimedRenderingUpdate):
Call adjustFramesPerSecond() when DisplayRefreshMonitor is created.

(WebCore::RenderingUpdateScheduler::startTimer):

  • page/RenderingUpdateScheduler.h:
  • platform/graphics/AnimationFrameRate.h: Added.

(WebCore::preferredFrameInterval):
(WebCore::preferredFramesPerSecond):

  • platform/graphics/DisplayRefreshMonitor.h:

(WebCore::DisplayRefreshMonitor::setPreferredFramesPerSecond):

  • platform/graphics/DisplayRefreshMonitorManager.cpp:

(WebCore::DisplayRefreshMonitorManager::monitorForClient):
Rename createMonitorForClient() to monitorForClient() since it may return
a cached DisplayRefreshMonitor.

(WebCore::DisplayRefreshMonitorManager::setPreferredFramesPerSecond):
(WebCore::DisplayRefreshMonitorManager::scheduleAnimation):
(WebCore::DisplayRefreshMonitorManager::displayDidRefresh):
No need to call registerClient(). This function was just ensuring the
DisplayRefreshMonitor is created. scheduleAnimation() does the same thing.

(WebCore::DisplayRefreshMonitorManager::createMonitorForClient): Deleted.
(WebCore::DisplayRefreshMonitorManager::registerClient): Deleted.

  • platform/graphics/DisplayRefreshMonitorManager.h:

(WebCore::DisplayRefreshMonitorManager::DisplayRefreshMonitorManager): Deleted.

  • platform/graphics/GraphicsLayerUpdater.cpp:

(WebCore::GraphicsLayerUpdater::GraphicsLayerUpdater):

  • platform/graphics/ios/DisplayRefreshMonitorIOS.mm:

(-[WebDisplayLinkHandler setPreferredFramesPerSecond:]):
Set the preferredFramesPerSecond of the CADisplayLink.

Source/WebKit:

Create an IPC message on the DrawingArea to send a message from the
WebProcess to the UIProcess to setPreferredFramesPerSecond of the
DisplayRefreshMonitor.

  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:

(-[WKOneShotDisplayLinkHandler setPreferredFramesPerSecond:]):
(WebKit::RemoteLayerTreeDrawingAreaProxy::setPreferredFramesPerSecond):
Set the preferredFramesPerSecond of the CADisplayLink.

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:

(WebKit::RemoteLayerTreeDisplayRefreshMonitor::setPreferredFramesPerSecond):
Delegate the call to RemoteLayerTreeDrawingArea.

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::setPreferredFramesPerSecond):
Send the IPC message from the WebProcess to the UIProcess.

LayoutTests:

  • fast/animation/request-animation-frame-throttling-outside-viewport-expected.txt: Added.
  • fast/animation/request-animation-frame-throttling-outside-viewport.html: Added.
  • fast/animation/request-animation-frame-throttling-lowPowerMode-expected.txt:
  • fast/animation/request-animation-frame-throttling-lowPowerMode.html:
  • fast/animation/resources/frame-with-animation-2.html: Added.
12:51 PM Changeset in webkit [253298] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

GetByIdVariant::dumpInContext() should not ref UniqueStringImpls.
https://bugs.webkit.org/show_bug.cgi?id=205023
<rdar://problem/57747265>

Reviewed by Saam Barati.

This is because GetByIdVariant::dumpInContext() may be called from the compiler
thread. GetByIdVariant::dumpInContext() inadvertently invoking the String copy
constructor on an Identifier, which in turn, refs the underlying UniqueStringImpl.
This results in a race against the mutator to adjust the refCount.

The fix is to have GetByIdVariant::dumpInContext() print the underlying
StringImpl instead of the Identifier itself.

  • bytecode/GetByIdVariant.cpp:

(JSC::GetByIdVariant::dumpInContext const):

12:05 PM Changeset in webkit [253297] by youenn@apple.com
  • 7 edits
    6 adds in trunk

NetworkResourceLoader should consume its sandbox extensions when starting a fetch through service worker
https://bugs.webkit.org/show_bug.cgi?id=204883
<rdar://problem/57568535>

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Allow http/wpt tests to use LayoutTests/resources files.

  • resources/config.json:

Source/WebKit:

Consume sandbox extensions in network process before sending fetch task to service worker.
This makes sure network process can send proper sandbox extensions to the service worker and it also ensures
it will have the necessary rights to access the file if the fetch task is not handled by service worker.
Test: http/wpt/service-workers/file-upload.html

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::consumeSandboxExtensionsIfNeeded):

  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:

(WebKit::ServiceWorkerFetchTask::startFetch):

LayoutTests:

  • http/tests/resources/create-temp-file-iframe.html: Added.
  • http/tests/resources/delete-temp-file-iframe.html: Added.
  • http/wpt/service-workers/file-upload-check.py: Added.
  • http/wpt/service-workers/file-upload-expected.txt: Added.
  • http/wpt/service-workers/file-upload-worker.js: Added.
  • http/wpt/service-workers/file-upload.html: Added.
11:23 AM Changeset in webkit [253296] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, speculative tvOS build fix after r253231.

  • platform/ios/WebCoreMotionManager.mm:

(-[WebCoreMotionManager sendMotionData:withHeading:]):

10:37 AM Changeset in webkit [253295] by Truitt Savell
  • 2 edits in trunk/LayoutTests

(r252889) webrtc/peerconnection-page-cache.html is crashing on iOS Debug
https://bugs.webkit.org/show_bug.cgi?id=205017

Unreviewed test gardening.

  • platform/ios/TestExpectations:
10:34 AM Changeset in webkit [253294] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] fix fast/text/simple-lines-multiple-renderers-break.html
https://bugs.webkit.org/show_bug.cgi?id=205014
<rdar://problem/57756348>

Reviewed by Antti Koivisto.

When dealing with series of runs (<span>text</span><span>content</span>) a partial content does not
necessarily mean partial runs. The content can actually be split right at a run boundary.
In such cases we have a partial trailing content but not a partial trailing run.

This patch also covers the case when the overflown run can't be split and
we attempt to find a previous breakable run (in the list of candidate runs).
Since it's guaranteed (with the FIXME of the extremely long hyphen) that all the previous runs fit the line,
we just pass in an infinite available width to LineBreaker::tryBreakingTextRun indicating that we only look for the last breakable position.

e.g. <span style="word-break: break-all">breakable</span><span>and</span><span>longandunbreakablecontent</span>
[breakable][and][longandunbreakablecontent] <- we try to commit this continuous list of runs
[longandunbreakablecontent] <- does not fit so let's go back to the previous runs to see if any of them can be split -> [breakableand].
result:
breakable
andlongandunbreakablecontent

  • layout/inlineformatting/InlineFormattingContext.cpp:

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

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::wordBreakingBehavior const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::processUncommittedContent):

  • layout/inlineformatting/LineLayoutContext.h:
10:34 AM Changeset in webkit [253293] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix the macCatalyst build after r253267

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]):

10:00 AM Changeset in webkit [253292] by achristensen@apple.com
  • 9 edits in trunk

Re-disable TLS1.0 and TLS1.1 by default
https://bugs.webkit.org/show_bug.cgi?id=204922
<rdar://problem/57677752>

Reviewed by Youenn Fablet.

Source/WebKit:

Covered by updated API tests.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):

Tools:

  • TestWebKitAPI/TCPServer.cpp:

(TestWebKitAPI::TCPServer::respondWithOK):

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:

(TestWebKitAPI::TEST):
(TestWebKitAPI::getWebSocketEventWebKitLegacy):

9:49 AM Changeset in webkit [253291] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix debug assertion for ApplePay API tests on iOS after r253277.

Disable server preconnect if the load will be handled by the LegacyCustomProtocolManager.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::preconnectTo):

9:12 AM Changeset in webkit [253290] by Darin Adler
  • 31 edits
    1 delete in trunk/Source

Streamline PODIntervalTree code and remove ValueToString
https://bugs.webkit.org/show_bug.cgi?id=199782

Reviewed by Anders Carlsson.

Source/WebCore:

  • dom/Element.cpp: Updated includes.
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::ignoreTrackDisplayUpdateRequests const): Moved this
function out of line so we don't have to include PODIntervalTree.h in the header.
But also, it's only used inside this file. Also updated for m_cueData.
(WebCore::HTMLMediaElement::updateActiveTextTrackCues): More of the same.
(WebCore::HTMLMediaElement::textTrackAddCue): Ditto.
(WebCore::HTMLMediaElement::textTrackRemoveCue): Ditto.
(WebCore::HTMLMediaElement::currentlyActiveCues const): Ditto.

  • html/HTMLMediaElement.h: Changed to not include PODIntervalTree.h, which in turn

includes PODRedBlackTree.h, to significantly cut down how many times we have to
compile those headers. Moved some functions out of line. Made m_cueData to hold the
two cue-related objects so they don't have to be defined in the header. Also
removed ValueToString specializations.

  • html/track/TextTrackCue.cpp:

(WebCore::operator<<): Added debug-only overload of TextStream operator.
(WebCore::TextTrackCue::debugString const): Deleted.

  • html/track/TextTrackCue.h: Updated for the above.
  • html/track/VTTCue.h: Added comments about the incorrect implementation of

isType for VTTCue. Tweaked formatting a bit as well.

  • platform/LayoutUnit.h: Removed ValueToString specialization.
  • platform/PODInterval.h: Use #pragma once. Removed inaccurate comments

saying this works only with POD. Use TextStream instead of ValueToString.
Added overloads to the constructor so we can do move semantics instead of
copy semantics, slightly better for WeakPtr. Removed the toString function
and added an overload of operator<< with TextStream. Use "{ }" instead of
"0" as the default value for user data.

  • platform/PODIntervalTree.h: Removed unneeded includes and unusual default

argument types for the templates. Changed setNeedsFullOrderingComparisons
and node updating to use template arguments instead of virtual functions
and runtime setters. This allowed removal of the constructor and the init
function since the defaults take care of both. Removed the overload of
the allOverlaps function that uses an out argument. Removed unneeded use
of WTF_MAKE_NONCOPYABLE. Use "{ }" instead of 0 for the default value
for user data. Changed the createInterval function to use move semantics.
Changed the nextIntervalAfter function to just take a point, not require
and interval and use its high point. The PODIntervalTree::updateNode
function is replaced with the PODIntervalNodeUpdater::update function.
Removed the ValueToString use and the overriding as well and replaced
with TextStream use.

  • platform/PODRedBlackTree.h: Updated comments to reflect the fact

that this is not specific to POD and uses TextStream. Also that the
needsFullOrderingComparisons technique is now a template argument.
Use pragma once. Added FIXME about a few major improvements we should
make.
(WebCore::PODRedBlackTree::~PODRedBlackTree): Made non-virtual since
we use template arguments for polymorphism and don't need virtual
functions too.
(WebCore::PODRedBlackTree::clear): Rewrote to use a non-recursive
algorithm to delete the tree nodes.
(WebCore::PODRedBlackTree::add): Added an overload that takes an
rvalue reference for move semantics.
(WebCore::PODRedBlackTree::visitInorder const): Deleted.
(WebCore::PODRedBlackTree::size const): Deleted.
(WebCore::PODRedBlackTree::isEmpty const): Replaced the inefficiently
implemented size function with this much faster function. Could have
also made a more efficient size function, but no client needs it.
(WebCore::PODRedBlackTree::setNeedsFullOrderingComparisons): Deleted.
(WebCore::PODRedBlackTree::checkInvariants const): Made non-virtual
since there is no need for polymorphism.
(WebCore::PODRedBlackTree::Node::Node): Use rvalue reference and
move semantics.
(WebCore::PODRedBlackTree::Node::copyFrom): Deleted.
(WebCore::PODRedBlackTree::Node::moveDataFrom): Use move instead of
copy. Also removed the gratuitous use of virtual.
(WebCore::PODRedBlackTree::updateNode): Made non-virtual and instead
call through the NodeUpdaterType (actually more like "traits").
(WebCore::PODRedBlackTree::treeSearch const): Use template argument
instead of data member.
(WebCore::PODRedBlackTree::treeSuccessor): Made a static member function.
(WebCore::PODRedBlackTree::treeMinimum): Ditto.
(WebCore::PODRedBlackTree::treeSuccessorInPostOrder): Added. Useful
when deleting the tree so we visit children before deleting the parent.
(WebCore::PODRedBlackTree::deleteNode): Use moveDataFrom when moving
the data from a node that we are about to delete.
(WebCore::PODRedBlackTree::visitInorderImpl const): Deleted.
(WebCore::PODRedBlackTree::markFree): Deleted.
(WebCore::PODRedBlackTree::Counter): Deleted.
(WebCore::PODRedBlackTree::dumpFromNode const): Use TextStream.

  • platform/graphics/FloatPolygon.cpp:

(WebCore::FloatPolygon::FloatPolygon): Tweaked coding style a bit.
(WebCore::FloatPolygon::overlappingEdges const): Changed to use a return
value instead of an out argument. Also tweaked coding style a bit.
(WebCore::FloatPolygonEdge::debugString const): Deleted.
(WebCore::ooperator>>): Implemented TextStream overload.

  • platform/graphics/FloatPolygon.h: Updated for above, removed

ValueToString specialization.

  • rendering/FloatingObjects.cpp:

(WebCore::FloatingObject::debugString const): Deleted.
(WebCore::operator<<): Implemented TextStream overload.

  • rendering/FloatingObjects.h: Ditto. Also removed include of

PODIntervalTree.h and used a forward declaration instead.

  • rendering/RenderBlock.cpp: Updated includes.
  • rendering/RenderFragmentContainer.cpp:

(WebCore::RenderFragmentContainer::debugString const): Deleted.
(WebCore::operator<<): Implemented TextStream overload.

  • rendering/RenderFragmentContainer.h: Ditto.
  • rendering/RenderFragmentedFlow.cpp:

(WebCore::RenderFragmentedFlow::FragmentSearchAdapter::FragmentSearchAdapter):
Moved this class here from the header, moving the one function body that was
already here up in the file.
(WebCore::RenderFragmentedFlow::fragmentAtBlockOffset const): Refactored and
tweaked code sequence a bit, did not change logic.
(WebCore::RenderFragmentedFlow::updateFragmentsFragmentedFlowPortionRect):
Tweaked code style a bit.

  • rendering/RenderFragmentedFlow.h: Moved FragmentSearchAdapter out of the

header, and tweaked coding style a bit. Removed ValueToString specialization.

  • rendering/shapes/PolygonShape.cpp:

(WebCore::PolygonShape::getExcludedInterval const): Updated to use the
return value from the overlappingEdges function rather than an out argument.

  • rendering/updating/RenderTreeBuilder.cpp: Updated includes.
  • rendering/updating/RenderTreeBuilderFirstLetter.h: Updated forward declarations.
  • rendering/updating/RenderTreeBuilderMultiColumn.cpp: Updated includes.
  • rendering/updating/RenderTreePosition.h: Removed includes of

RenderFragmentedFlow.h, RenderText.h, and RenderView.h, since none are
needed by this header.

  • rendering/updating/RenderTreeUpdater.cpp: Updated includes.

Source/WTF:

  • WTF.xcodeproj/project.pbxproj: Remove ValueToString.h.
  • wtf/CMakeLists.txt: Ditto.
  • wtf/MediaTime.cpp:

(WTF::operator<<): Implement debug-only TextStream serialization
based on toJSONString.

  • wtf/MediaTime.h: Ditto.
  • wtf/text/ValueToString.h: Removed.
8:41 AM Changeset in webkit [253289] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Do not create PartialContent for a single character run when it does not fit.
https://bugs.webkit.org/show_bug.cgi?id=205010
<rdar://problem/57752705>

Reviewed by Antti Koivisto.

Use ContentWrappingRule::Keep instead of ContentWrappingRule::Split when dealing with single character overflown runs on empty lines.
<div style="width: 0px; word-break: break-all">text</div> <- produces single character runs.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::breakingContextForInlineContent):

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::left const):
(WebCore::Layout::InlineTextItem::right const):

7:36 AM Changeset in webkit [253288] by youenn@apple.com
  • 20 edits
    2 adds in trunk

Add an option to capture audio in GPU process
https://bugs.webkit.org/show_bug.cgi?id=205007

Reviewed by Eric Carlson.

Source/WebCore:

Add JS console logging of error when trying to create a MediaStream.
Test: fast/mediastream/captureAudioInGPUProcess.html

  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::allow):

  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::RealtimeMediaSourceCenter::createMediaStream):

  • platform/mediastream/RealtimeMediaSourceCenter.h:

Source/WebKit:

Add a flag to make audio capture in GPU process.
In WebProcess, if trying to capture through GPUProcess, send back an error since this is not implemented.

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

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

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetCaptureAudioInGPUProcessEnabled):
(WKPreferencesGetCaptureAudioInGPUProcessEnabled):

  • UIProcess/API/C/WKPreferencesRef.h:
  • UIProcess/WebPreferences.cpp:

(WebKit::WebPreferences::updateBoolValueForInternalDebugFeatureKey):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::createWebPage):

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::initialize):
(WebKit::UserMediaCaptureManager::AudioFactory::createAudioCaptureSource):

  • WebProcess/cocoa/UserMediaCaptureManager.h:

(WebKit::UserMediaCaptureManager::AudioFactory::setShouldCaptureInGPUProcess):

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

LayoutTests:

  • fast/mediastream/captureAudioInGPUProcess-expected.txt: Added.
  • fast/mediastream/captureAudioInGPUProcess.html: Added.
7:28 AM Changeset in webkit [253287] by Antti Koivisto
  • 6 edits in trunk/Source/WebCore

[LFC][Integration] Hit testing
https://bugs.webkit.org/show_bug.cgi?id=205008

Reviewed by Zalan Bujtas.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

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

Hit test LFC.

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

(WebCore::Layout::LayoutTreeContent::addLayoutBoxForRenderer):

Add Layout::Box -> RenderObject map.

  • layout/layouttree/LayoutTreeBuilder.h:

(WebCore::Layout::LayoutTreeContent::rendererForLayoutBox const):
(WebCore::Layout::LayoutTreeContent::addLayoutBoxForRenderer): Deleted.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::hitTestInlineChildren):

Call into LFC hit test function.

6:46 AM Changeset in webkit [253286] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Fix fast/text/word-break.html
https://bugs.webkit.org/show_bug.cgi?id=204999
<rdar://problem/57736608>

Reviewed by Antti Koivisto.

Keep at least one character on the line when even the first character overflows and the line is empty.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::breakingContextForInlineContent):
(WebCore::Layout::LineBreaker::Content::firstTextRunIndex const):

  • layout/inlineformatting/InlineLineBreaker.h:
6:24 AM Changeset in webkit [253285] by youenn@apple.com
  • 5 edits in trunk

fast/mediastream/mediastreamtrack-video-clone.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=205006

Reviewed by Eric Carlson.

Source/WebCore:

Covered by test no longer flaky.

  • platform/mediastream/RealtimeVideoSource.cpp:

(WebCore::RealtimeVideoSource::clone):
When cloning the source, clone its size in addition to its settings.

LayoutTests:

  • fast/mediastream/mediastreamtrack-video-clone-expected.txt:
  • fast/mediastream/mediastreamtrack-video-clone.html:

Add br to spot any potential issue with video elements to text dump.

1:18 AM Changeset in webkit [253284] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[GStreamer] Crashes in MediaPlayerPrivateGStreamer::ensureGstGLContext
https://bugs.webkit.org/show_bug.cgi?id=204848

Reviewed by Michael Catanzaro.

Make sure the GL video sink uses a valid WebKit shared GL context.

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:

(ensureGstGLContext):
(webKitGLVideoSinkProbePlatform):

12:17 AM Changeset in webkit [253283] by Wenson Hsieh
  • 6 edits in trunk/Source/WebCore

Add encoding and decoding support for more DisplayListItems
https://bugs.webkit.org/show_bug.cgi?id=205001

Reviewed by Tim Horton.

Adds boilerplate code to encode and decode the following display list items: SetLineCap, SetLineDash,
SetLineJoin, SetMiterLimit, ClearShadow, Clip, ClipOut, ClipOutToPath, ClipPath, BeginTransparencyLayer,
EndTransparencyLayer, DrawLine, DrawLinesForText, DrawDotsForDocumentMarker, DrawEllipse, DrawFocusRingPath,
DrawFocusRingRects, FillRectWithRoundedHole, FillEllipse, StrokeRect, StrokePath, StrokeEllipse,
ApplyStrokePattern, ApplyFillPattern, ApplyDeviceScaleFactor, DrawTiledImage, DrawTiledScaledImage, and
DrawPattern.

  • platform/graphics/GraphicsContext.h:

(WebCore::DocumentMarkerLineStyle::encode const):
(WebCore::DocumentMarkerLineStyle::decode):

  • platform/graphics/GraphicsTypes.h:
  • platform/graphics/WindRule.h:
  • platform/graphics/displaylists/DisplayListItems.cpp:

Additionally make a few other WebCore classes and enums encodable and decodable.

(WebCore::DisplayList::SetLineCap::SetLineCap):
(WebCore::DisplayList::SetLineDash::SetLineDash):
(WebCore::DisplayList::SetLineJoin::SetLineJoin):
(WebCore::DisplayList::SetMiterLimit::SetMiterLimit):
(WebCore::DisplayList::ClearShadow::ClearShadow):
(WebCore::DisplayList::Clip::Clip):
(WebCore::DisplayList::ClipOut::ClipOut):
(WebCore::DisplayList::ClipOutToPath::ClipOutToPath):
(WebCore::DisplayList::ClipPath::ClipPath):
(WebCore::DisplayList::DrawLine::DrawLine):
(WebCore::DisplayList::DrawLinesForText::DrawLinesForText):
(WebCore::DisplayList::DrawDotsForDocumentMarker::DrawDotsForDocumentMarker):
(WebCore::DisplayList::DrawEllipse::DrawEllipse):
(WebCore::DisplayList::DrawFocusRingPath::DrawFocusRingPath):
(WebCore::DisplayList::DrawFocusRingRects::DrawFocusRingRects):
(WebCore::DisplayList::FillRectWithRoundedHole::FillRectWithRoundedHole):
(WebCore::DisplayList::FillEllipse::FillEllipse):
(WebCore::DisplayList::StrokeRect::StrokeRect):
(WebCore::DisplayList::StrokeEllipse::StrokeEllipse):
(WebCore::DisplayList::StrokePath::StrokePath):

Also remove m_blockLocation from StrokePath (this member variable was unused, and seems to have been copied over
from other drawing items).

(WebCore::DisplayList::BeginTransparencyLayer::BeginTransparencyLayer):
(WebCore::DisplayList::EndTransparencyLayer::EndTransparencyLayer):
(WebCore::DisplayList::ApplyStrokePattern::ApplyStrokePattern):
(WebCore::DisplayList::ApplyFillPattern::ApplyFillPattern):
(WebCore::DisplayList::ApplyDeviceScaleFactor::ApplyDeviceScaleFactor):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::SetLineCap::encode const):
(WebCore::DisplayList::SetLineCap::decode):
(WebCore::DisplayList::SetLineDash::encode const):
(WebCore::DisplayList::SetLineDash::decode):
(WebCore::DisplayList::SetLineJoin::encode const):
(WebCore::DisplayList::SetLineJoin::decode):
(WebCore::DisplayList::SetMiterLimit::encode const):
(WebCore::DisplayList::SetMiterLimit::decode):
(WebCore::DisplayList::ClearShadow::encode const):
(WebCore::DisplayList::ClearShadow::decode):
(WebCore::DisplayList::Clip::encode const):
(WebCore::DisplayList::Clip::decode):
(WebCore::DisplayList::ClipOut::encode const):
(WebCore::DisplayList::ClipOut::decode):
(WebCore::DisplayList::ClipOutToPath::encode const):
(WebCore::DisplayList::ClipOutToPath::decode):
(WebCore::DisplayList::ClipPath::encode const):
(WebCore::DisplayList::ClipPath::decode):
(WebCore::DisplayList::DrawTiledImage::encode const):
(WebCore::DisplayList::DrawTiledImage::decode):
(WebCore::DisplayList::DrawTiledScaledImage::encode const):
(WebCore::DisplayList::DrawTiledScaledImage::decode):
(WebCore::DisplayList::DrawPattern::DrawPattern):
(WebCore::DisplayList::DrawPattern::encode const):
(WebCore::DisplayList::DrawPattern::decode):
(WebCore::DisplayList::BeginTransparencyLayer::encode const):
(WebCore::DisplayList::BeginTransparencyLayer::decode):
(WebCore::DisplayList::EndTransparencyLayer::encode const):
(WebCore::DisplayList::EndTransparencyLayer::decode):
(WebCore::DisplayList::DrawLine::encode const):
(WebCore::DisplayList::DrawLine::decode):
(WebCore::DisplayList::DrawLinesForText::encode const):
(WebCore::DisplayList::DrawLinesForText::decode):
(WebCore::DisplayList::DrawDotsForDocumentMarker::encode const):
(WebCore::DisplayList::DrawDotsForDocumentMarker::decode):
(WebCore::DisplayList::DrawEllipse::encode const):
(WebCore::DisplayList::DrawEllipse::decode):
(WebCore::DisplayList::DrawFocusRingPath::encode const):
(WebCore::DisplayList::DrawFocusRingPath::decode):
(WebCore::DisplayList::DrawFocusRingRects::encode const):
(WebCore::DisplayList::DrawFocusRingRects::decode):
(WebCore::DisplayList::FillRectWithRoundedHole::encode const):
(WebCore::DisplayList::FillRectWithRoundedHole::decode):
(WebCore::DisplayList::FillEllipse::encode const):
(WebCore::DisplayList::FillEllipse::decode):
(WebCore::DisplayList::StrokeRect::encode const):
(WebCore::DisplayList::StrokeRect::decode):
(WebCore::DisplayList::StrokePath::encode const):
(WebCore::DisplayList::StrokePath::decode):
(WebCore::DisplayList::StrokeEllipse::encode const):
(WebCore::DisplayList::StrokeEllipse::decode):
(WebCore::DisplayList::ApplyStrokePattern::encode const):
(WebCore::DisplayList::ApplyStrokePattern::decode):
(WebCore::DisplayList::ApplyFillPattern::encode const):
(WebCore::DisplayList::ApplyFillPattern::decode):
(WebCore::DisplayList::ApplyDeviceScaleFactor::encode const):
(WebCore::DisplayList::ApplyDeviceScaleFactor::decode):
(WebCore::DisplayList::Item::encode const):
(WebCore::DisplayList::Item::decode):
(WebCore::DisplayList::SetLineCap::SetLineCap): Deleted.
(WebCore::DisplayList::SetLineDash::SetLineDash): Deleted.
(WebCore::DisplayList::SetLineJoin::SetLineJoin): Deleted.
(WebCore::DisplayList::SetMiterLimit::SetMiterLimit): Deleted.
(WebCore::DisplayList::ClearShadow::ClearShadow): Deleted.
(WebCore::DisplayList::Clip::Clip): Deleted.
(WebCore::DisplayList::ClipOut::ClipOut): Deleted.
(WebCore::DisplayList::ClipOutToPath::ClipOutToPath): Deleted.
(WebCore::DisplayList::ClipPath::ClipPath): Deleted.
(WebCore::DisplayList::BeginTransparencyLayer::BeginTransparencyLayer): Deleted.
(WebCore::DisplayList::EndTransparencyLayer::EndTransparencyLayer): Deleted.
(WebCore::DisplayList::DrawLine::DrawLine): Deleted.
(WebCore::DisplayList::DrawLinesForText::DrawLinesForText): Deleted.
(WebCore::DisplayList::DrawDotsForDocumentMarker::DrawDotsForDocumentMarker): Deleted.
(WebCore::DisplayList::DrawEllipse::DrawEllipse): Deleted.
(WebCore::DisplayList::DrawFocusRingPath::DrawFocusRingPath): Deleted.
(WebCore::DisplayList::DrawFocusRingRects::DrawFocusRingRects): Deleted.
(WebCore::DisplayList::FillRectWithRoundedHole::FillRectWithRoundedHole): Deleted.
(WebCore::DisplayList::FillEllipse::FillEllipse): Deleted.
(WebCore::DisplayList::StrokeRect::StrokeRect): Deleted.
(WebCore::DisplayList::StrokePath::StrokePath): Deleted.
(WebCore::DisplayList::StrokeEllipse::StrokeEllipse): Deleted.
(WebCore::DisplayList::ApplyStrokePattern::ApplyStrokePattern): Deleted.
(WebCore::DisplayList::ApplyFillPattern::ApplyFillPattern): Deleted.
(WebCore::DisplayList::ApplyDeviceScaleFactor::ApplyDeviceScaleFactor): Deleted.

Dec 8, 2019:

11:25 PM Changeset in webkit [253282] by timothy_horton@apple.com
  • 5 edits in trunk/Tools

REGRESSION: Crash under UIScriptControllerIOS::simulateAccessibilitySettingsChangeNotification
https://bugs.webkit.org/show_bug.cgi?id=205002

Reviewed by Wenson Hsieh.

Keep a strong reference to the UIScriptController while running async tasks.
UIScriptContext will be nulled out if the view was torn down, but this way
we keep the UIScriptController itself and can find the null UIScriptContext
reliably.

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::doAsyncTask):
(WTR::UIScriptControllerIOS::zoomToScale):

  • DumpRenderTree/mac/UIScriptControllerMac.mm:

(WTR::UIScriptControllerMac::doAsyncTask):
(WTR::UIScriptControllerMac::activateDataListSuggestion):
(WTR::UIScriptControllerMac::removeViewFromWindow):
(WTR::UIScriptControllerMac::addViewToWindow):

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::doAfterPresentationUpdate):
(WTR::UIScriptControllerIOS::doAfterNextStablePresentationUpdate):
(WTR::UIScriptControllerIOS::ensurePositionInformationIsUpToDateAt):
(WTR::UIScriptControllerIOS::doAfterVisibleContentRectUpdate):
(WTR::UIScriptControllerIOS::zoomToScale):
(WTR::UIScriptControllerIOS::retrieveSpeakSelectionContent):
(WTR::UIScriptControllerIOS::simulateAccessibilitySettingsChangeNotification):
(WTR::UIScriptControllerIOS::touchDownAtPoint):
(WTR::UIScriptControllerIOS::liftUpAtPoint):
(WTR::UIScriptControllerIOS::twoFingerSingleTapAtPoint):
(WTR::UIScriptControllerIOS::doubleTapAtPoint):
(WTR::UIScriptControllerIOS::stylusDownAtPoint):
(WTR::UIScriptControllerIOS::stylusMoveToPoint):
(WTR::UIScriptControllerIOS::stylusUpAtPoint):
(WTR::UIScriptControllerIOS::stylusTapAtPointWithModifiers):
(WTR::UIScriptControllerIOS::dragFromPointToPoint):
(WTR::UIScriptControllerIOS::longPressAtPoint):
(WTR::UIScriptControllerIOS::typeCharacterUsingHardwareKeyboard):
(WTR::UIScriptControllerIOS::dismissFilePicker):
(WTR::UIScriptControllerIOS::applyAutocorrection):
(WTR::UIScriptControllerIOS::simulateRotation):
(WTR::UIScriptControllerIOS::simulateRotationLikeSafari):
(WTR::UIScriptControllerIOS::setDidStartFormControlInteractionCallback):
(WTR::UIScriptControllerIOS::setDidEndFormControlInteractionCallback):
(WTR::UIScriptControllerIOS::setDidShowContextMenuCallback):
(WTR::UIScriptControllerIOS::setDidDismissContextMenuCallback):
(WTR::UIScriptControllerIOS::setWillBeginZoomingCallback):
(WTR::UIScriptControllerIOS::setDidEndZoomingCallback):
(WTR::UIScriptControllerIOS::setDidShowKeyboardCallback):
(WTR::UIScriptControllerIOS::setDidHideKeyboardCallback):
(WTR::UIScriptControllerIOS::setWillPresentPopoverCallback):
(WTR::UIScriptControllerIOS::setDidDismissPopoverCallback):
(WTR::UIScriptControllerIOS::setDidEndScrollingCallback):
(WTR::UIScriptControllerIOS::activateDataListSuggestion):
(WTR::UIScriptControllerIOS::doAfterDoubleTapDelay):

  • WebKitTestRunner/mac/UIScriptControllerMac.mm:

(WTR::UIScriptControllerMac::zoomToScale):
(WTR::UIScriptControllerMac::simulateAccessibilitySettingsChangeNotification):
(WTR::UIScriptControllerMac::chooseMenuAction):
(WTR::UIScriptControllerMac::activateAtPoint):

5:52 PM Changeset in webkit [253281] by yousuke.kimoto@sony.com
  • 5 edits in trunk/Source/JavaScriptCore

[WinCairo] Refine initialization and error handling in RemoteInspectorSocket
https://bugs.webkit.org/show_bug.cgi?id=204338

Reviewed by Fujii Hironori.

RemoteInspectorSocket socket error handling is not enough,
which should be refined to avoid error cases.

  • inspector/remote/socket/RemoteInspectorSocket.h: Modifed return value checks to hanlde error cases.
  • inspector/remote/socket/RemoteInspectorSocketEndpoint.cpp: Refined check error handling.

(Inspector::RemoteInspectorSocketEndpoint::createListener):

  • inspector/remote/socket/posix/RemoteInspectorSocketPOSIX.cpp: Ditto

(Inspector::Socket::connect):
(Inspector::Socket::listen):
(Inspector::Socket::setup):
(Inspector::Socket::isListening):
(Inspector::Socket::getPort):
(Inspector::Socket::preparePolling):

  • inspector/remote/socket/win/RemoteInspectorSocketWin.cpp: Ditto

(Inspector::Socket::Socket::create):
(Inspector::Socket::setOpt):
(Inspector::Socket::bindAndListen):
(Inspector::Socket::connect):
(Inspector::Socket::accept):
(Inspector::Socket::createPair):
(Inspector::Socket::setup):
(Inspector::Socket::isListening):
(Inspector::Socket::getPort):
(Inspector::Socket::read):
(Inspector::Socket::write):
(Inspector::Socket::preparePolling): Initialized 'poll' with zero

5:35 PM Changeset in webkit [253280] by Tadeu Zagallo
  • 3 edits
    1 add in trunk

[WebAssembly] Fix LLIntGenerator's checkConsistency contract
https://bugs.webkit.org/show_bug.cgi?id=204998
<rdar://problem/57733405>

Reviewed by Mark Lam.

JSTests:

  • wasm/regress/stack-consistency.js: Added.

Source/JavaScriptCore:

We check the consistency of the WebAssembly parser's expression stack every time the LLIntGenerator calls
push to allocate a new stack value. However, if we call push more than once (e.g. in a loop), the stack
is no longer consistent, since those values have not yet been placed in the parser's expression stack, so
the generator and parser's stacks are out of sync. Instead, whenever we need to push multiple values, we
should first manually call checkConsistency before any pushes, and all pushes after that should be replaced
with push(NoConsistencyCheck).

  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::callInformationForCaller):
(JSC::Wasm::LLIntGenerator::addArguments):
(JSC::Wasm::LLIntGenerator::addLocal):

3:27 PM Changeset in webkit [253279] by rniwa@webkit.org
  • 11 edits in trunk/Source/WebCore

There should be one MicrotaskQueue per EventLoop
https://bugs.webkit.org/show_bug.cgi?id=204492
<rdar://problem/57420645>

Reviewed by Antti Koivisto.

This patch makes microtask queue and the microtasks for mutation observers and custom elements
specific to each event loop so that only similar origin windows share the same microtask queue
and mutation observer's compound microtask or custom element's backup element queue.

As a result, we can remove the workaround we added in r247222.

Because microtasks for mutation observers and custom elements are shared across similar origin
window agents, we can't use any one document's task group to schedule these. Instead, we create
a new "perpetual" task group in WindowEventLoop which is never suspended or stopped. It's the
responsibility of mutation observer and custom elements' code to deal with suspened or stopped
documents as it has been the case.

See also: https://dom.spec.whatwg.org/#queue-a-mutation-observer-compound-microtask

https://html.spec.whatwg.org/multipage/custom-elements.html#backup-element-queue

Test: editing/pasteboard/paste-does-not-fire-promises-while-sanitizing-web-content.html

  • dom/CustomElementReactionQueue.cpp:

(WebCore::CustomElementQueue::add): Renamed from CustomElementReactionQueue::ElementQueue to
allow forward declaration in EventLoop.h.
(WebCore::CustomElementQueue::invokeAll): Ditto.
(WebCore::CustomElementQueue::processQueue): Ditto.
(WebCore::CustomElementReactionQueue::enqueueElementOnAppropriateElementQueue):
(WebCore::CustomElementReactionQueue::processBackupQueue):
(WebCore::CustomElementReactionQueue::ensureBackupQueue): Deleted. Moved to WindowEventLoop.
(WebCore::CustomElementReactionQueue::backupElementQueue): Ditto.

  • dom/CustomElementReactionQueue.h:

(WebCore::CustomElementQueue): Renamed from CustomElementReactionQueue::ElementQueue to allow
forward declaration in EventLoop.h.

  • dom/Document.cpp:

(WebCore::Document::finishedParsing): Removed the workaround added in r247222.
(WebCore::Document::eventLoop):
(WebCore::Document::windowEventLoop): Added.

  • dom/Document.h:
  • dom/MutationObserver.cpp:

(WebCore::activeMutationObservers): Deleted. Moved to WindowEventLoop.
(WebCore::suspendedMutationObservers): Ditto.
(WebCore::signalSlotList): Ditto.
(WebCore::MutationObserver::queueMutationObserverCompoundMicrotask): Ditto.
(WebCore::MutationObserver::enqueueMutationRecord):
(WebCore::MutationObserver::enqueueSlotChangeEvent):
(WebCore::MutationObserver::setHasTransientRegistration):
(WebCore::MutationObserver::notifyMutationObservers): Now takes WindowEventLoop since various
lists and hash maps are specific to each WindowEventLoop.

  • dom/MutationObserver.h:
  • dom/WindowEventLoop.cpp:

(WebCore::WindowEventLoop::WindowEventLoop): Create m_perpetualTaskGroupForSimilarOriginWindowAgents.
(WebCore::WindowEventLoop::microtaskQueue):
(WebCore::WindowEventLoop::queueMutationObserverCompoundMicrotask):
(WebCore::WindowEventLoop::backupElementQueue):

  • dom/WindowEventLoop.h:
  • editing/markup.cpp:

(WebCore::createPageForSanitizingWebContent): Removed the workaround added in r247222.

  • page/Page.h:

(WebCore::Page::setIsForSanitizingWebContent): Ditto.
(WebCore::Page::isForSanitizingWebContent const): Ditto.

1:31 PM Changeset in webkit [253278] by Wenson Hsieh
  • 5 edits in trunk/Source

Move WebCore::Path encoders and decoders into WebCore from WebCoreArgumentCoders
https://bugs.webkit.org/show_bug.cgi?id=204993

Reviewed by Tim Horton.

Source/WebCore:

Move encoding and decoding logic from WebCoreArgumentCoders into WebCore. The ability to encode or decode Paths
is needed in order to encode or decode DisplayListItems that contain Paths; since these encoders live in
WebCore, the encoders for Paths should live there as well.

No change in behavior.

  • platform/graphics/Path.cpp:
  • platform/graphics/Path.h:

Also fixes up the indentation of the Path class in this header, such that the class declaration isn't indented
one level past the namespace.

(WebCore::Path::isNull const):
(WebCore::Path::platformPath const):
(WebCore::Path::circleControlPoint):
(WebCore::Path::encode const):
(WebCore::Path::decode):

Source/WebKit:

Remove Encoder/Decoder support for WebCore::Path.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::pathEncodeApplierFunction): Deleted.
(IPC::ArgumentCoder<Path>::encode): Deleted.
(IPC::ArgumentCoder<Path>::decode): Deleted.

  • Shared/WebCoreArgumentCoders.h:
1:30 PM Changeset in webkit [253277] by Chris Dumez
  • 17 edits in trunk

Preconnect to server as early as possible in WebPage::LoadRequest
https://bugs.webkit.org/show_bug.cgi?id=204992

Reviewed by Antti Koivisto.

Preconnect to server as early as possible in WebPage::LoadRequest. This avoids delaying the
connection to the server until after the policy check and is a ~1.3% progression on PLT5 on
both macOS and iOS.

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::preconnectTo):

  • WebProcess/Network/WebLoaderStrategy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadRequest):

11:10 AM Changeset in webkit [253276] by youenn@apple.com
  • 16 edits in trunk/Source/WebCore

Do not use DOMGuarded for maplike
https://bugs.webkit.org/show_bug.cgi?id=204879

Reviewed by Darin Adler.

Update maplike according setlike model where we support syncing at creation of the JS wrapper
and syncing whenever setlike/maplike methods are called.
Removing DOMGuardedObject makes implementation more lightweight, there is less things to implement on DOM side
and it allows collecting the private map to free memory if needed.

Covered by existing tests and rebased binding tests.

  • Modules/highlight/HighlightMap.cpp:

(WebCore::HighlightMap::initializeMapLike):

  • Modules/highlight/HighlightMap.h:

(WebCore::HighlightMap::synchronizeBackingMap): Deleted.
(WebCore::HighlightMap::backingMap): Deleted.

  • Modules/mediastream/RTCStatsReport.h:

(WebCore::RTCStatsReport::create):
(WebCore::RTCStatsReport::initializeMapLike):
(WebCore::RTCStatsReport::RTCStatsReport):
(WebCore::RTCStatsReport::synchronizeBackingMap): Deleted.
(WebCore::RTCStatsReport::backingMap): Deleted.
(WebCore::RTCStatsReport::addStats): Deleted.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::createStatsCollector):

  • Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.cpp:

(WebCore::LibWebRTCStatsCollector::~LibWebRTCStatsCollector):
(WebCore::initializeRTCStatsReportBackingMap):
(WebCore::LibWebRTCStatsCollector::OnStatsDelivered):

  • Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.h:
  • bindings/js/JSDOMMapLike.cpp:

(WebCore::getBackingMap):
(WebCore::clearBackingMap):
(WebCore::setToBackingMap):
(WebCore::forwardAttributeGetterToBackingMap):
(WebCore::forwardFunctionCallToBackingMap):
(WebCore::forwardForEachCallToBackingMap):
(WebCore::initializeBackingMap): Deleted.
(WebCore::createBackingMap): Deleted.

  • bindings/js/JSDOMMapLike.h:

(WebCore::DOMMapAdapter::DOMMapAdapter):
(WebCore::DOMMapAdapter::set):
(WebCore::DOMMapAdapter::clear):
(WebCore::getAndInitializeBackingMap):
(WebCore::forwardSizeToMapLike):
(WebCore::forwardEntriesToMapLike):
(WebCore::forwardKeysToMapLike):
(WebCore::forwardValuesToMapLike):
(WebCore::forwardClearToMapLike):
(WebCore::forwardForEachToMapLike):
(WebCore::forwardGetToMapLike):
(WebCore::forwardHasToMapLike):
(WebCore::forwardSetToMapLike):
(WebCore::forwardDeleteToMapLike):
(): Deleted.
(WebCore::DOMMapLike::set): Deleted.
(WebCore::synchronizeBackingMap): Deleted.

  • bindings/js/JSDOMSetLike.cpp:
  • bindings/js/JSDOMSetLike.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

  • bindings/scripts/test/JS/JSMapLike.cpp:

(WebCore::JSMapLike::finishCreation):

  • bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:

(WebCore::JSReadOnlyMapLike::finishCreation):

  • testing/InternalsMapLike.cpp:

(WebCore::InternalsMapLike::initializeMapLike):
(WebCore::InternalsMapLike::synchronizeBackingMap): Deleted.

  • testing/InternalsMapLike.h:

(WebCore::InternalsMapLike::backingMap): Deleted.

11:10 AM Changeset in webkit [253275] by youenn@apple.com
  • 17 edits in trunk

Support different resolutions for video tracks captured from UIProcess
https://bugs.webkit.org/show_bug.cgi?id=204945

Reviewed by Eric Carlson.

Source/WebCore:

Remove whether the a source is remote or not.
Previously we were doing the distinction as resizing would happen in WebProcess and not in UIProcess.
We are now moving away from doing resizing in WebProcess.
Covered by existing tests.

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeMediaSourceFactory.h:
  • platform/mediastream/RealtimeVideoCaptureSource.cpp:

(WebCore::RealtimeVideoCaptureSource::adaptVideoSample):
For remote tracks, we also update the size for observers.

  • platform/mediastream/RealtimeVideoSource.cpp:

(WebCore::m_source):
(WebCore::RealtimeVideoSource::sourceSettingsChanged):
Update computation of size based on rotation.
This makes sure we have resizing done right.

  • platform/mediastream/RealtimeVideoSource.h:
  • platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:

(WebCore::DisplayCaptureSourceCocoa::emitFrame):

Source/WebKit:

Change video capture in uiprocess to an experimental flag.
Add support for remote video source cloning by sending some IPC to UIProcess and cloning the source there.
This triggers IPC for both cloning and cloned sources but this allows to do resizing in UIProcess instead of WebProcess.
We thus disable video capture resizing in WebProcess.

  • Shared/WebPreferences.yaml:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::SourceProxy::start):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::stop):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::requestToEnd):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::preventSourceFromStopping):
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
(WebKit::UserMediaCaptureManagerProxy::startProducingData):
(WebKit::UserMediaCaptureManagerProxy::stopProducingData):
(WebKit::UserMediaCaptureManagerProxy::clone):
(WebKit::UserMediaCaptureManagerProxy::requestToEnd):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::Source::sourceID const):
(WebKit::UserMediaCaptureManager::Source::settings const):
(WebKit::UserMediaCaptureManager::Source::remoteVideoSampleAvailable):
(WebKit::UserMediaCaptureManager::Source::requestToEnd):
(WebKit::UserMediaCaptureManager::Source::stopBeingObserved):
(WebKit::UserMediaCaptureManager::cloneSource):
(WebKit::UserMediaCaptureManager::cloneVideoSource):
(WebKit::UserMediaCaptureManager::requestToEnd):
(WebKit::UserMediaCaptureManager::VideoFactory::setVideoCapturePageState):

  • WebProcess/cocoa/UserMediaCaptureManager.h:

LayoutTests:

  • fast/mediastream/mediastreamtrack-video-clone-expected.txt:
  • fast/mediastream/mediastreamtrack-video-clone.html:
8:41 AM Changeset in webkit [253274] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Tighten Mac sandbox by removing microphone access
https://bugs.webkit.org/show_bug.cgi?id=204939

Reviewed by Brent Fulgham.

No change of behavior, we do audio capture in UIProcess.

  • WebProcess/com.apple.WebProcess.sb.in:
8:29 AM Changeset in webkit [253273] by Caio Lima
  • 3 edits in trunk/JSTests

[ARMv7] Skip flaky stress tests
https://bugs.webkit.org/show_bug.cgi?id=204996

Unreviewed gardening.

  • stress/incremental-marking-should-not-dead-lock-in-new-property-transition.js:
  • stress/sampling-profiler-should-not-sample-beyond-stack-bounds.js:
8:14 AM Changeset in webkit [253272] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Add logging to NetworkRTCMonitor
https://bugs.webkit.org/show_bug.cgi?id=204850
<rdar://problem/57618773>

Reviewed by Eric Carlson.

Add logging and send IPC message back to WebProcess even if monitoring is stopped.
No observable change of behavior.

  • NetworkProcess/webrtc/NetworkRTCMonitor.cpp:

(WebKit::NetworkRTCMonitor::startUpdatingIfNeeded):
(WebKit::NetworkRTCMonitor::stopUpdating):
(WebKit::NetworkRTCMonitor::onNetworksChanged):

7:58 AM Changeset in webkit [253271] by youenn@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Add more logging to physical socket server when a socket file descriptor is invalid
https://bugs.webkit.org/show_bug.cgi?id=204948

Reviewed by Darin Adler.

  • Source/webrtc/rtc_base/physical_socket_server.cc:
7:30 AM Changeset in webkit [253270] by Antti Koivisto
  • 5 edits in trunk/Source/WebCore

[LFC][Integration] Collect overflow from lines
https://bugs.webkit.org/show_bug.cgi?id=204994

Reviewed by Zalan Bujtas.

  • layout/displaytree/DisplayLineBox.h:

(WebCore::Display::LineBox::logicalRect const):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

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

  • layout/integration/LayoutIntegrationLineLayout.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::addOverflowFromInlineChildren):

Connect to LFC layout.

7:10 AM Changeset in webkit [253269] by Alan Bujtas
  • 10 edits in trunk/Source/WebCore

[LFC][IFC] Switch over to float based types in inline layout
https://bugs.webkit.org/show_bug.cgi?id=204995
<rdar://problem/57733349>

Reviewed by Antti Koivisto.

Due to the relatively significant difference between float and LayoutUnit's precision, IFC
is unable to produce matching layout under the same constraints.
Let's switch over to float based types until after either CLL switches over to LayoutUnit
or LayoutUnit gains high enough precision.

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

  • layout/LayoutUnits.h:

(WebCore::Layout::maxInlineLayoutUnit):

  • layout/Verification.cpp:

(WebCore::Layout::areEssentiallyEqual):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

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

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::wordBreakingBehavior const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::alignContentHorizontally const):
(WebCore::Layout::LineBuilder::adjustBaselineAndLineHeight):
(WebCore::Layout::LineBuilder::halfLeadingMetrics):
(WebCore::Layout::LineBuilder::TrimmableContent::append):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::inlineItemWidth):

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::width):
(WebCore::Layout::TextUtil::fixedPitchWidth):
(WebCore::Layout::TextUtil::split):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::firstLineBaseline const):
(WebCore::LayoutIntegration::LineLayout::lastLineBaseline const):
(WebCore::LayoutIntegration::LineLayout::paint):

Note: See TracTimeline for information about the timeline view.