Timeline



Nov 24, 2019:

5:29 PM Changeset in webkit [252844] by Jonathan Bedard
  • 2 edits in trunk/LayoutTests

[WebGL] Garden dedicated queue (Part 4)
https://bugs.webkit.org/show_bug.cgi?id=204547

Unreviewed test gardening.

  • webgl/TestExpectations:
2:39 PM Changeset in webkit [252843] by ysuzuki@apple.com
  • 9 edits
    1 move
    5 deletes in trunk/Source/JavaScriptCore

[JSC] Introduce IsoHeapCellType
https://bugs.webkit.org/show_bug.cgi?id=204555

Reviewed by Mark Lam.

We introduce IsoHeapCellType<CellType>, which destroys cell based on CellType information, which should be in IsoSubspace.
By using this, we can avoid inheriting JSDestructibleObject. For each IsoSubspace, we know how to destroy cells if we use
IsoHeapCellType<CellType> without using methodTable. We start using it for, JSString, JSWeakMap, JSWeakSet, WebAssemblyFunction,
and JSWebAssemblyCodeBlock. And we use JSNonFinalObject for the base of JSWeakMap and JSWeakSet, which shrinks size of them
from 48 to 32.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • heap/IsoHeapCellType.h: Renamed from Source/JavaScriptCore/wasm/js/WebAssemblyFunctionHeapCellType.h.
  • runtime/JSString.cpp:

(JSC::JSString::destroy): Deleted.

  • runtime/JSString.h:

(JSC::JSString::destroy):

  • runtime/JSStringHeapCellType.cpp: Removed.
  • runtime/JSStringHeapCellType.h: Removed.
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
  • runtime/WeakMapImpl.h:
  • wasm/js/JSWebAssemblyCodeBlockHeapCellType.cpp: Removed.
  • wasm/js/JSWebAssemblyCodeBlockHeapCellType.h: Removed.
  • wasm/js/WebAssemblyFunctionHeapCellType.cpp: Removed.
12:18 PM Changeset in webkit [252842] by Jonathan Bedard
  • 2 edits in trunk/LayoutTests

[WebGL] Garden dedicated queue (Part 3)
https://bugs.webkit.org/show_bug.cgi?id=204547

Unreviewed test gardening.

  • webgl/TestExpectations:
3:23 AM Changeset in webkit [252841] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebCore

Ensure SpeechSynthesis::cancel() correctly clears m_currentSpeechUtterance
https://bugs.webkit.org/show_bug.cgi?id=204429
<rdar://57072704>

Patch by Sunny He <sunny_he@apple.com> on 2019-11-24
Reviewed by Chris Fleizach.

Currently it is possible for the utterance that is in the process of
being spoken to be garbage collected. In this case, the pointer held
by SpeechSynthesis (m_currentSpeechUtterance) won't be properly
cleared on cancel(). This change ensures that cancel() nulls out the
current utterance and SpeechSynthesis takes a Ref for the utterance.

  • Modules/speech/SpeechSynthesis.cpp:

(WebCore::SpeechSynthesis::cancel):

  • Modules/speech/SpeechSynthesis.h:

Nov 23, 2019:

7:05 PM Changeset in webkit [252840] by wilander@apple.com
  • 46 edits
    4 adds in trunk

Resource Load Statistics: Allow multiple third-party cookie blocking settings
https://bugs.webkit.org/show_bug.cgi?id=204389
<rdar://problem/57344054>

Reviewed by Brent Fulgham.

Source/WebCore:

This change introduces an enum ThirdPartyCookieBlockingMode for how third-party
cookie blocking should be carried out. It then uses the set mode in
NetworkStorageSession::shouldBlockCookies().

The reason for supporting three different modes is that what is now named
OnlyAccordingToPerDomainPolicy is shipping, AllOnSitesWithoutUserInteraction is
in beta, and All is behind an experimental flag.

Tests: http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction-database.html

http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction.html

  • page/Settings.yaml:

Flipped the isThirdPartyCookieBlockingEnabled flag to on by default.

  • platform/network/NetworkStorageSession.cpp:

(WebCore::NetworkStorageSession::shouldBlockCookies const):
(WebCore::NetworkStorageSession::setThirdPartyCookieBlockingMode):

  • platform/network/NetworkStorageSession.h:

(WebCore::NetworkStorageSession::setIsThirdPartyCookieBlockingEnabled): Deleted.

Source/WebKit:

This change make the third-party cookie blocking setting go from a boolean to
the new enum WebCore::ThirdPartyCookieBlockingMode with three different settings.
Functions and member variables are renamed accordingly.

The reason for supporting three different modes is that what is now named
OnlyAccordingToPerDomainPolicy is shipping, AllOnSitesWithoutUserInteraction is
in beta, and All is behind an experimental flag.

The change also updates the test API to map the TestRunner call to the enum.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::hasStorageAccess):
(WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess):
(WebKit::ResourceLoadStatisticsDatabaseStore::clearUserInteraction):

Now makes use of a completion handler and updates the cookie blocking state.

(WebKit::ResourceLoadStatisticsDatabaseStore::hasHadUserInteraction):
(WebKit::ResourceLoadStatisticsDatabaseStore::areAllThirdPartyCookiesBlockedUnder):

New convenience function to check the cookie blocking status per first-party domain.

(WebKit::ResourceLoadStatisticsDatabaseStore::cookieAccess):

Restructured the code to make it very clear that the logic is the same as the
corresponding function in ResourceLoadStatisticsMemoryStore.
Can no longer be const since it calls areAllThirdPartyCookiesBlockedUnder() which
in turn calls hasHadUserInteraction() and that function may clear user interaction data.

(WebKit::ResourceLoadStatisticsDatabaseStore::hasHadUnexpiredRecentUserInteraction):
(WebKit::ResourceLoadStatisticsDatabaseStore::cookieAccess const): Deleted.

See comment above on the non-const version of this function.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::areAllThirdPartyCookiesBlockedUnder):

New convenience function to check the cookie blocking status per first-party domain.

(WebKit::ResourceLoadStatisticsMemoryStore::cookieAccess):

Restructured the code to make it very clear that the logic is the same as the
corresponding function in ResourceLoadStatisticsDatabaseStore.
Can no longer be const since it calls areAllThirdPartyCookiesBlockedUnder() which
in turn calls hasHadUserInteraction() and that function may clear user interaction data.

(WebKit::ResourceLoadStatisticsMemoryStore::hasStorageAccess):
(WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess):
(WebKit::ResourceLoadStatisticsMemoryStore::clearUserInteraction):

Now makes use of a completion handler and updates the cookie blocking state.

(WebKit::ResourceLoadStatisticsMemoryStore::cookieAccess const): Deleted.

See comment above on the non-const version of this function.

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:

(WebKit::ResourceLoadStatisticsStore::setThirdPartyCookieBlockingMode):
(WebKit::ResourceLoadStatisticsStore::thirdPartyCookieBlockingMode const):
(WebKit::ResourceLoadStatisticsStore::setIsThirdPartyCookieBlockingEnabled): Deleted.
(WebKit::ResourceLoadStatisticsStore::isThirdPartyCookieBlockingEnabled const): Deleted.

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::setThirdPartyCookieBlockingMode):
(WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):

Now forwards the completion handler.

(WebKit::WebResourceLoadStatisticsStore::setIsThirdPartyCookieBlockingEnabled): Deleted.

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::setShouldBlockThirdPartyCookiesForTesting):

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

The SetShouldBlockThirdPartyCookiesForTesting message now uses an enum instead of a
boolean.

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::setResourceLoadStatisticsEnabled):

Now forwards the enum value instead of a boolean.

(WebKit::NetworkSession::recreateResourceLoadStatisticStore):

Now makes sure the cookie blocking setting is forwarded to the recreated store.

(WebKit::NetworkSession::setThirdPartyCookieBlockingMode):
(WebKit::NetworkSession::setIsThirdPartyCookieBlockingEnabled): Deleted.

  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

Support for the new enum.

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

  • Scripts/webkit/messages.py:

Tells the IPC code generator where to find WebCore::ThirdPartyCookieBlockingMode.

  • Shared/WebPreferences.yaml:

Flipped the IsThirdPartyCookieBlockingEnabled flag to on by default.

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreSetResourceLoadStatisticsShouldBlockThirdPartyCookiesForTesting):
(WKWebsiteDataStoreStatisticsResetToConsistentState):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::setShouldBlockThirdPartyCookiesForTesting):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

Makes use of the enum in the NetworkSessionCreationParameters.

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldBlockThirdPartyCookiesForTesting):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

This change allows the existing TestRunner function
setStatisticsShouldBlockThirdPartyCookies() to set an optional boolean
parameter onlyOnSitesWithoutUserInteraction to opt in to that behavior.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setStatisticsShouldBlockThirdPartyCookies):

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

(WTR::TestController::setStatisticsShouldBlockThirdPartyCookies):

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

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

The added tests existed before and are not re-introduced to test their dedicated setting.

The changed tests have been expanded to cover the new code paths.

  • http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction-database.html: Added.
  • http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction-expected.txt: Added.
  • http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction.html: Added.
  • http/tests/storageAccess/grant-with-prompt-under-general-third-party-cookie-blocking-database-expected.txt:
  • http/tests/storageAccess/grant-with-prompt-under-general-third-party-cookie-blocking-database.html:
  • http/tests/storageAccess/grant-with-prompt-under-general-third-party-cookie-blocking-expected.txt:
  • http/tests/storageAccess/grant-with-prompt-under-general-third-party-cookie-blocking.html:
  • http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-with-cookie-database-expected.txt:
  • http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-with-cookie-database.html:
  • http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-with-cookie-expected.txt:
  • http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-with-cookie.html:
7:03 PM Changeset in webkit [252839] by commit-queue@webkit.org
  • 36 edits
    2 adds in trunk

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

Caused test failures and ASan crashes (Requested by ap on
#webkit).

Reverted changeset:

"Cross-thread version StorageQuotaManager"
https://bugs.webkit.org/show_bug.cgi?id=203971
https://trac.webkit.org/changeset/252805

4:42 PM Changeset in webkit [252838] by Jonathan Bedard
  • 2 edits in trunk/LayoutTests

[WebGL] Garden dedicated queue (Part 2)
https://bugs.webkit.org/show_bug.cgi?id=204547

Unreviewed test gardening.

  • webgl/TestExpectations:
3:39 PM Changeset in webkit [252837] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Replace redundant Line::isVisuallyEmpty() with LineBox::isConsideredEmpty()
https://bugs.webkit.org/show_bug.cgi?id=204551
<rdar://problem/57454620>

Reviewed by Antti Koivisto.

It turns out the we already cache the visually empty status in LineBox.

  • layout/displaytree/DisplayBox.h:

(WebCore::Display::Box::isEmpty const):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::isInlineContainerConsideredEmpty): Deleted.
(WebCore::Layout::Line::isVisuallyEmpty const): Deleted.

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::hasContent const): Deleted.

  • layout/inlineformatting/InlineLineLayout.cpp:

(WebCore::Layout::LineLayout::placeInlineItem):
(WebCore::Layout::LineLayout::processUncommittedContent):

3:23 PM Changeset in webkit [252836] by Ross Kirsling
  • 4 edits
    1 add in trunk

[JSC] GetSubstitution is performed incorrectly via RegExp.prototype[@@replace]
https://bugs.webkit.org/show_bug.cgi?id=204490

Reviewed by Mark Lam.

JSTests:

  • stress/replace-indexed-backreferences.js: Added.
  • test262/expectations.yaml: Mark four test cases as passing.

Source/JavaScriptCore:

String.prototype.replace and RegExp.prototype[Symbol.replace] are meant to perform the same substitution
of $-backreferences (called GetSubstitution in the spec: https://tc39.es/ecma262/#sec-getsubstitution).

The implementation of this in StringPrototype.cpp is correct but the one in RegExpPrototype.js is not.
In particular, the latter *removes* backreferences with out-of-range indices, instead of leaving them as-is.

One thing that is *not* broken in either implementation and thus maintained here is the fact $10 is interpreted
as $1 followed by a 0 when we have 1 <= n < 10 captures (and analogously for other invalid $nn backreferences).
This behavior is consistent across all engines but currently described incorrectly in the spec; this patch thus
aligns with the spec PR currently open to correct this (https://github.com/tc39/ecma262/pull/1732).

  • builtins/RegExpPrototype.js:

(getSubstitution): Ensure that invalid backreferences remain untouched in the output string.
(replace): Fix off-by-one error when populating captures list. We shouldn't be reserving a slot for the full match.

1:36 PM Changeset in webkit [252835] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Defer run height/baseline adjustment computation until Line::close
https://bugs.webkit.org/show_bug.cgi?id=204550
<rdar://problem/57454497>

Reviewed by Antti Koivisto.

Currently we measure run height and adjust the line's baseline/height on every append.
We could do all that in Line::close after we've merged the neighboring runs.
([text][ ][content] vs. [text content])
This is about ~5% win on line-layout-simple.html

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::alignContentVertically):
(WebCore::Layout::Line::append):
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendInlineContainerEnd):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendLineBreak):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
(WebCore::Layout::Line::runContentHeight const):
(WebCore::Layout::Line::alignContentVertically const): Deleted.
(WebCore::Layout::Line::inlineItemContentHeight const): Deleted.

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Run::setLogicalHeight):

12:17 PM Changeset in webkit [252834] by pvollan@apple.com
  • 2 edits in trunk/Tools

Archive step is failing after r252827
https://bugs.webkit.org/show_bug.cgi?id=204548

Reviewed by Alexey Proskuryakov.

After https://trac.webkit.org/changeset/252827/webkit, the archive step is failing.

  • BuildSlaveSupport/built-product-archive:

(createZip):

8:58 AM Changeset in webkit [252833] by Jonathan Bedard
  • 2 edits in trunk/LayoutTests

[WebGL] Garden dedicated queue (Part 1)
https://bugs.webkit.org/show_bug.cgi?id=204547

Unreviewed test gardening.

  • webgl/TestExpectations:
8:16 AM Changeset in webkit [252832] by Andres Gonzalez
  • 6 edits in trunk

Run LayoutTests/accessibility/mac/primary-screen-height.html on secondary accessibility thread.
https://bugs.webkit.org/show_bug.cgi?id=204391

Reviewed by Chris Fleizach.

Source/WebCore:

LayoutTests/accessibility/mac/primary-screen-height.html tests this
change when isolated tree is enabled.

Use ASSERT(!isMainThread()) instead of HIServices call to detect
whether not running in the secondary thread during LayoutTests.

  • accessibility/isolatedtree/AXIsolatedTreeNode.cpp:

(WebCore::AXIsolatedObject::children):
(WebCore::AXIsolatedObject::updateBackingStore):

Tools:

Added AccessibilityController::execute to execute any
AccessibilityUIElement call into AccessibilityObjectWrapper on the
secondary accessibility thread.

  • WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:

(WTR::AccessibilityController::rootElement): leftover from previous review.
(WTR::AccessibilityController::execute): added this to execute any AccessibilityUIElement method on the appropriate thread.

  • WebKitTestRunner/InjectedBundle/AccessibilityController.h:
  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::getChildrenWithRange): Runs on secondary thread.
(WTR::AccessibilityUIElement::numberAttributeValue): Runs on secondary thread.

8:05 AM Changeset in webkit [252831] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WTF

Unreviewed. Try to fix the GTK WebDriver tests in the bots after r252770

They are failing in the bots because g_variant_new_from_data() is failing due to the given data not being
properly aligned for the type being loaded. This is not a problem since GLib 2.60 that checks the alignment and
reallocates the buffer in aligned memory only if needed. For previous versions we need to ensure the memory we
pass to g_variant_new_from_data() is aligned.

  • wtf/glib/SocketConnection.cpp:

(WTF::SocketConnection::readMessage):

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

Some tests are failing on Win64
https://bugs.webkit.org/show_bug.cgi?id=204545

Unreviewed test gardening.

  • platform/win/TestExpectations:
5:33 AM Changeset in webkit [252829] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Remove unnecessary Line::hasContent() calls in LineLayout::placeInlineItem
https://bugs.webkit.org/show_bug.cgi?id=204540
<rdar://problem/57443500>

Reviewed by Antti Koivisto.

LineLayout::placeInlineItem is hot. This shaves off ~3% on line-layout-simple.html

  • layout/inlineformatting/InlineLineLayout.cpp:

(WebCore::Layout::LineLayout::placeInlineItem):

  • page/FrameView.cpp:

(WebCore::FrameView::paintContents):

  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::layoutUsingFormattingContext):
(WebCore::FrameViewLayoutContext::layout):

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::attachToRenderElementInternal):

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateRendererStyle):

2:19 AM Changeset in webkit [252828] by Antti Koivisto
  • 14 edits
    4 adds in trunk

Media queries in img sizes attribute don't evaluate dynamically
https://bugs.webkit.org/show_bug.cgi?id=204521

Reviewed by Simon Fraser.

Source/WebCore:

Tests: fast/images/sizes-dynamic-001.html

fast/images/sizes-dynamic-002.html

  • css/MediaQueryEvaluator.cpp:

(WebCore::MediaQueryEvaluator::evaluateForChanges const):

Add a helper function for evaluating dynamic results for changes.

  • css/MediaQueryEvaluator.h:

(WebCore::MediaQueryDynamicResults::isEmpty const):

  • css/parser/SizesAttributeParser.cpp:

(WebCore::SizesAttributeParser::SizesAttributeParser):
(WebCore::SizesAttributeParser::mediaConditionMatches):

Gather MediaQueryDynamicResults

  • css/parser/SizesAttributeParser.h:
  • dom/Document.cpp:

(WebCore::Document::updateElementsAffectedByMediaQueries):
(WebCore::Document::addDynamicMediaQueryDependentImage):
(WebCore::Document::removeDynamicMediaQueryDependentImage):

Replace viewport/appearance specific mechanism with a unified one (they were all invoked together anyway).
Make it about HTMLImageElement rather than HTMLPictureElement since that is the only client in this patch.

(WebCore::Document::checkViewportDependentPictures): Deleted.
(WebCore::Document::checkAppearanceDependentPictures): Deleted.
(WebCore::Document::addViewportDependentPicture): Deleted.
(WebCore::Document::removeViewportDependentPicture): Deleted.
(WebCore::Document::addAppearanceDependentPicture): Deleted.
(WebCore::Document::removeAppearanceDependentPicture): Deleted.

  • dom/Document.h:
  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::~HTMLImageElement):
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
(WebCore::HTMLImageElement::evaluateDynamicMediaQueryDependencies):
(WebCore::HTMLImageElement::selectImageSource):

Gather MediaQueryDynamicResults from all paths.

(WebCore::HTMLImageElement::didMoveToNewDocument):

  • html/HTMLImageElement.h:
  • html/HTMLPictureElement.cpp:

(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture const): Deleted.
(WebCore::HTMLPictureElement::appearanceChangeAffectedPicture const): Deleted.

Move the media query dependency code to HTMLImageElement since thats where it is actually needed.

  • html/HTMLPictureElement.h:
  • rendering/RenderImage.cpp:

(WebCore::RenderImage::setImageDevicePixelRatio):

Update rendering also if only the pixel ratio changes.

  • rendering/RenderImage.h:

(WebCore::RenderImage::setImageDevicePixelRatio): Deleted.

LayoutTests:

  • fast/images/sizes-dynamic-001-expected.html: Added.
  • fast/images/sizes-dynamic-001.html: Added.
  • fast/images/sizes-dynamic-002-expected.html: Added.
  • fast/images/sizes-dynamic-002.html: Added.

Copied and modified from imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/sizes-dynamic-*
because we don't support reftest-wait (webkit.org/b/186045).

Nov 22, 2019:

9:37 PM Changeset in webkit [252827] by pvollan@apple.com
  • 3 edits in trunk/Tools

Set 64-bit as default architecture on Windows
https://bugs.webkit.org/show_bug.cgi?id=204477

Reviewed by Ross Kirsling.

This will make 64-bit building and testing the default.

  • Scripts/webkitdirs.pm:

(determineIsWin64):

  • Scripts/webkitpy/port/win.py:

(WinPort):

8:52 PM Changeset in webkit [252826] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Some tests are failing on Win64
https://bugs.webkit.org/show_bug.cgi?id=204545

Unreviewed test gardening.

  • platform/win/TestExpectations:
8:45 PM Changeset in webkit [252825] by sbarati@apple.com
  • 16 edits
    1 add in trunk/Source/JavaScriptCore

Use LLInt profiling to rule out generating an IC for get_by_val
https://bugs.webkit.org/show_bug.cgi?id=204536

Reviewed by Yusuke Suzuki.

When I landed the get_by_val polymorphic inline caching patch, the prepack
benchmark in JetStream2 slowed down by 10%. Through some analysis, I found
out that we were slowing down because of the time we spent in the JITs
actually generating inline caches. This patch skips generating an inline
cache when it seems like it won't be profitable. The heuristic for doing this
is simple:

  • If we see more than 4 identifiers in the LLInt, we won't generate an IC

in the upper tiers.

  • If we see a non-identifier JSString in the LLInt, we won't generate an IC

in the upper tiers.

This patch recovers the regression on prepack.

  • bytecode/BytecodeList.rb:
  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • generator/main.rb:
  • heap/TinyBloomFilter.h:

(JSC::TinyBloomFilter::bits const):
(JSC::TinyBloomFilter::TinyBloomFilter):

  • jit/JIT.h:
  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emitSlow_op_get_by_val):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/Operations.h:

(JSC::getByValWithIndex):

  • runtime/OptionsList.h:
8:28 PM Changeset in webkit [252824] by rniwa@webkit.org
  • 24 edits in trunk

Use the event loop instead of DocumentEventQueue and WorkerEventQueue
https://bugs.webkit.org/show_bug.cgi?id=204447
<rdar://problem/57420691>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Updated the expected result. It now fails one step head due to EventLoop getting better integrated with timers.

  • web-platform-tests/requestidlecallback/callback-timeout-when-busy-expected.txt:

Source/WebCore:

This patch replaces every use of DocumentEventQueue and WorkerEventQueue by the integration
with the event loop.

Because this changes the order by which some of the affected events fire and tasks run,
this patch also makes WindowEventLoop::scheduleToRun use a Timer instead of callOnMainThread
in order to avoid introducing new test failures.

In addition, WebSQL needed a code change to scheudle tasks via the event loop after moving
to the event loop as callOnMainThread could run before or after a 0s timer fires depending
on whether it was called during another timer or not; meaning that it could change the order
of operations with respect to other tasks scheduled via event loops in some cases.

Finally, added the links to various specifications where appropriate.

  • Modules/indexeddb/IDBDatabase.cpp:

(WebCore::IDBDatabase::connectionToServerLost):
(WebCore::IDBDatabase::fireVersionChangeEvent):

  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::enqueueEvent):

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::enqueueEvent):
(WebCore::IDBTransaction::dispatchEvent):

  • Modules/mediastream/RTCDataChannel.cpp:

(WebCore::RTCDataChannel::scheduleDispatchEvent):

  • Modules/webdatabase/Database.cpp:

(WebCore::Database::scheduleTransactionCallback): Schedule a task on the event loop once
we're in the main thread as the order of operation could change with respect to other tasks
scheduled via the event loop otherwise.

  • Modules/webdatabase/SQLTransaction.cpp:

(WebCore::SQLTransaction::notifyDatabaseThreadIsShuttingDown): Ditto.

  • dom/Document.cpp:

(WebCore::Document::visibilityStateChanged):
(WebCore::Document::prepareForDestruction):
(WebCore::Document::enqueueWindowEvent): Deleted.
(WebCore::Document::queueTaskToDispatchEvent): Added.
(WebCore::Document::enqueueDocumentEvent): Deleted.
(WebCore::Document::queueTaskToDispatchEventOnWindow): Added.
(WebCore::Document::enqueueOverflowEvent):
(WebCore::Document::enqueueSecurityPolicyViolationEvent):
(WebCore::Document::enqueueHashchangeEvent): Rewritten. Keep the target node alive until
the overflow event fires.
fired on an overflow element

  • dom/Document.h:
  • dom/ScriptExecutionContext.h:
  • dom/TaskSource.h:
  • dom/WindowEventLoop.cpp:

(WebCore::WindowEventLoop::WindowEventLoop):
(WebCore::WindowEventLoop::scheduleToRun):

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

(WebCore::FrameSelection::setSelectionWithoutUpdatingAppearance):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::languagesChanged):

  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::elementWasRemoved):

  • page/PointerLockController.cpp:

(WebCore::PointerLockController::enqueueEvent):

  • storage/StorageEventDispatcher.cpp:

(WebCore::StorageEventDispatcher::dispatchSessionStorageEventsToFrames):
(WebCore::StorageEventDispatcher::dispatchLocalStorageEventsToFrames):

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::eventQueue const): Deleted.

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

(WebCore::WorkletGlobalScope::WorkletGlobalScope):

  • worklets/WorkletGlobalScope.h:
7:30 PM Changeset in webkit [252823] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

REGRESSION (r252792?): 6 inspector/canvas tests crashing
https://bugs.webkit.org/show_bug.cgi?id=204542

Reviewed by Devin Rousso.

Copy the list of identifiers to a Vector before iterating over it
since m_identifierToInspectorCanvas could be mutated meanwhile.

  • inspector/agents/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::recordCanvasAction):

6:25 PM Changeset in webkit [252822] by Jonathan Bedard
  • 2 edits in trunk/Tools

run-javascriptcore-tests: Failure to determine configuration for reporting is fatal
https://bugs.webkit.org/show_bug.cgi?id=204526

Reviewed by Aakash Jain.

  • Scripts/run-javascriptcore-tests:

(configurationForUpload): Use uname as the default upload configuration

6:14 PM Changeset in webkit [252821] by rniwa@webkit.org
  • 3 edits in trunk/LayoutTests

http/tests/eventloop/queue-task-across-cross-site-frames.html is flaky failure on iOS
https://bugs.webkit.org/show_bug.cgi?id=204510

Reviewed by Chris Dumez.

There are two issues with this test. First, queue-task-across-cross-site-frames.html wasn't waiting
for the helper file to post logs, and secondly, eventloop-helper.html was relying on setTimeout(~, 0)
to always happen after queued tasks had run, which is not always true if there had already been
another 0s timer scheduled.

  • http/tests/eventloop/queue-task-across-cross-site-frames.html:
  • http/tests/eventloop/resources/eventloop-helper.html:
5:53 PM Changeset in webkit [252820] by rniwa@webkit.org
  • 11 edits
    2 deletes in trunk/Source/WebCore

Associate each microtask with a task group and remove ActiveDOMCallbackMicrotask
https://bugs.webkit.org/show_bug.cgi?id=204491

Reviewed by Antti Koivisto.

This patch associates each microtask with a EventLoopTaskGroup by making MicrotaskQueue
use EventLoopTaskGroup in place of Microtask, eliminating the latter.

This allows microtasks associated with each script execution context's test group to be
suspsned or stopped along with the script execution context without having to wrap each
microtask in ActiveDOMCallbackMicrotask, which is now redundant and therefore deleted.

No new tests since there should be no observable behavioral change here.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::queueMicrotaskToEventLoop):

  • bindings/js/JSWorkerGlobalScopeBase.cpp:

(WebCore::JSWorkerGlobalScopeBase::queueMicrotaskToEventLoop):

  • dom/ActiveDOMCallbackMicrotask.cpp: Removed.
  • dom/ActiveDOMCallbackMicrotask.h: Removed.
  • dom/EventLoop.cpp:

(WebCore::EventLoop::queueTask):
(WebCore::EventLoop::queueMicrotask):
(WebCore::EventLoopTaskGroup::queueMicrotask):
(WebCore::EventLoopTaskGroup::queueMicrotaskCallback): Deleted.

  • dom/EventLoop.h:
  • dom/Microtasks.cpp:

(WebCore::Microtask::removeSelfFromQueue): Deleted.
(WebCore::MicrotaskQueue::append):
(WebCore::MicrotaskQueue::remove): Deleted.
(WebCore::MicrotaskQueue::performMicrotaskCheckpoint): Like EventLoop::run, skip any task
associated with a stopped group (script execution context) and add back any task associated
with a suspened group; these are tasks which used to return Microtask::Result::KeepInQueue.

  • dom/Microtasks.h:

(WebCore::Microtask): Deleted.
(WebCore::Microtask::~Microtask): Deleted.

  • dom/TaskSource.h:

(WebCore::TaskSource): Added Microtask as a new task source.

  • inspector/agents/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::recordCanvasAction):

  • testing/Internals.cpp:

(WebCore::Internals::queueMicroTask):

5:13 PM Changeset in webkit [252819] by achristensen@apple.com
  • 11 edits in trunk/Source/WebKit

Unreviewed, rolling out r252796.

Turns out my reverting earlier today wasn't so necessary after all.
This is effectively re-landing r250422.

Reverted changeset:

"Revert r250422"
https://bugs.webkit.org/show_bug.cgi?id=202285
https://trac.webkit.org/changeset/252796

5:08 PM Changeset in webkit [252818] by achristensen@apple.com
  • 9 edits in trunk/Source/WebKit

Unreviewed, rolling out r252798.

Turns out my reverting earlier today wasn't so necessary after all.
This is effectively re-landing r250421.

Reverted changeset:

"Revert r250421"
https://bugs.webkit.org/show_bug.cgi?id=202290
https://trac.webkit.org/changeset/252798

4:42 PM Changeset in webkit [252817] by Kate Cheney
  • 3 edits in trunk/Source/WebKit

ITP Database crashes if table schema is not correct
https://bugs.webkit.org/show_bug.cgi?id=204458
<rdar://problem/57399084>

Reviewed by Brent Fulgham.

ITP database was crashing if the table schema wasn't correct. This
should instead be handled by re-opening a new database with a correct
schema to allow for future schema updates.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::isCorrectTableSchema):
(WebKit::ResourceLoadStatisticsDatabaseStore::openAndDropOldDatabaseIfNecessary):

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
4:38 PM Changeset in webkit [252816] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC][IFC] Text content is not exactly rare data.
https://bugs.webkit.org/show_bug.cgi?id=204539
<rdar://problem/57442263>

Reviewed by Antti Koivisto.

If it turns out to be a memory consumption issue, we can always subclass Layout::Box. Let's go with the m_textContext member for now.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::ContinousContent::close):
(WebCore::Layout::Line::appendTextContent):

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::createAndAppendTextItems):

  • layout/inlineformatting/text/TextUtil.cpp:

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

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::setTextContext): Deleted.
(WebCore::Layout::Box::hasTextContent const): Deleted.
(WebCore::Layout::Box::textContext const): Deleted.

  • layout/layouttree/LayoutBox.h:

(WebCore::Layout::Box::hasTextContent const):
(WebCore::Layout::Box::textContext const):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::outputLayoutBox):

4:15 PM Changeset in webkit [252815] by Jonathan Bedard
  • 5 edits in trunk/Tools

results.webkit.org/api/failures should return an error when no test-run is found for specified criteria
https://bugs.webkit.org/show_bug.cgi?id=204385
<rdar://problem/57334389>

Rubber-stamped by Aakash Jain.

  • resultsdbpy/resultsdbpy/controller/failure_controller.py:

(FailureController.failures): Return a 404 error if no test runs are found.

  • resultsdbpy/resultsdbpy/controller/failure_controller_unittest.py:

(FailureControllerTest):
(FailureControllerTest.test_no_runs):

  • resultsdbpy/resultsdbpy/model/failure_context.py:

(FailureContext._failures): Return 'None' if no test runs are found.

  • resultsdbpy/resultsdbpy/model/failure_context_unittest.py:

(FailureContextTest):
(FailureContextTest.test_no_test_runs):

4:14 PM Changeset in webkit [252814] by Devin Rousso
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught Exception: TypeError: undefined is not an object (evaluating 'target.PageAgent.getCompositingBordersVisible')
https://bugs.webkit.org/show_bug.cgi?id=204473

Reviewed by Brian Burg.

Change the definition of WI.targetsAvailable and WI.whenTargetsAvailable to instead
resolve based on when a page target is created, not the backend target, as the latter can
be a multiplexing target which only has a Target domain.

  • UserInterface/Controllers/TargetManager.js:

(WI.TargetManager.prototype._initializeBackendTarget):
(WI.TargetManager.prototype._initializePageTarget):

  • UserInterface/Base/Main.js:

(WI.loaded):
(WI.contentLoaded):
(WI.targetsAvailable):
(WI.whenTargetsAvailable):

  • UserInterface/Test/Test.js:

(WI.loaded):
(WI.contentLoaded):
(WI.targetsAvailable):
(WI.whenTargetsAvailable):

  • UserInterface/Views/SearchSidebarPanel.js:

(WI.SearchSidebarPanel.prototype.performSearch):
Only wait for targets if inspecting a web debuggable, as non-web debuggables don't have a
different page target vs the backend target (which is guaranteed to exist anyways).

4:04 PM Changeset in webkit [252813] by Chris Dumez
  • 5 edits
    1 add in trunk

HTTPHeaderMap's operator== is not fully correct
https://bugs.webkit.org/show_bug.cgi?id=204361

Reviewed by Alex Christensen.

Source/WebCore:

If headers are added in a different order, HTTPHeaderMap's operator==() would wrongly
return false because it is using a Vector internally to store the headers. Also, it
would incorrectly return false if the case of the headers did not match.

  • platform/network/HTTPHeaderMap.cpp:

(WebCore::HTTPHeaderMap::get const):
(WebCore::HTTPHeaderMap::getUncommonHeader const):

  • platform/network/HTTPHeaderMap.h:

(WebCore::HTTPHeaderMap::operator==):

Tools:

Add API test coverage.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/HTTPHeaderMap.cpp: Added.

(TestWebKitAPI::TEST):

3:52 PM Changeset in webkit [252812] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Simplify VisitedLinkStore process registration logic
https://bugs.webkit.org/show_bug.cgi?id=204472

Reviewed by Geoffrey Garen.

Simplify VisitedLinkStore process registration logic:

  1. WebProcessProxy objects no longer delay their registration with the VisitedLinkStore until after they are done launching. There is no need to do this because AuxiliaxyProcessProxy::send() will correctly queue the IPC message if the process is not done launching when the VisitedLinkStore tries to send its IPC.
  2. Switch VisitedLinkStore to using a WeakHashSet to store the WebProcessProxy object pointers. This is safer and this also makes it so that the WebProcessProxy no longer need to unregister themselves when shutting down. Note that AuxiliaxyProcessProxy::send() properly discards IPC messages to a terminated process anyway.
  • UIProcess/VisitedLinkStore.cpp:

(WebKit::VisitedLinkStore::~VisitedLinkStore):
(WebKit::VisitedLinkStore::addProcess):
(WebKit::VisitedLinkStore::removeProcess):
(WebKit::VisitedLinkStore::removeAll):
(WebKit::VisitedLinkStore::didInvalidateSharedMemory):
(WebKit::VisitedLinkStore::didUpdateSharedStringHashes):

  • UIProcess/VisitedLinkStore.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::shutDown):
(WebKit::WebProcessProxy::addVisitedLinkStoreUser):
(WebKit::WebProcessProxy::didFinishLaunching):

3:50 PM Changeset in webkit [252811] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[iOS] Copy assertions before iterating over them in _notifyAssertionsOfImminentSuspension
https://bugs.webkit.org/show_bug.cgi?id=204524
<rdar://problem/57265830>

Reviewed by Alexey Proskuryakov.

Copy assertions before iterating over them in _notifyAssertionsOfImminentSuspension and use WeakPtr
to make sure the assertions are still alive before calling uiAssertionWillExpireImminently() on
them. It is common for process assertions to get released when uiAssertionWillExpireImminently()
gets called, which would remove them from the _assertionsNeedingBackgroundTask vector we were
iterating on.

  • UIProcess/ios/ProcessAssertionIOS.mm:

(-[WKProcessAssertionBackgroundTaskManager _notifyAssertionsOfImminentSuspension]):

3:30 PM Changeset in webkit [252810] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Merge "insert inline runs" and "setup display runs" loops in InlineFormattingContext::setDisplayBoxesForLine
https://bugs.webkit.org/show_bug.cgi?id=204537
<rdar://problem/57440394>

Reviewed by Antti Koivisto.

Let's loop the new Line::Run list only once.

  • layout/inlineformatting/InlineFormattingContext.cpp:

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

3:14 PM Changeset in webkit [252809] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Null check callback in NetworkConnectionToWebProcess::didDeliverMessagePortMessages
https://bugs.webkit.org/show_bug.cgi?id=204460
<rdar://problem/57348618>

Reviewed by Chris Dumez.

When the network process crashes during a message port connection establishment,
a web process may have an identifier that becomes stale. In this case, we should not crash again.
No test because this only happens during a rare race condition after a network process crash, but the radar shows records of this happening.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::didDeliverMessagePortMessages):

3:10 PM Changeset in webkit [252808] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Bindings generator fails to add includes for iterable<> key / value types
https://bugs.webkit.org/show_bug.cgi?id=204530

Reviewed by Ryosuke Niwa.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateIterableDefinition):

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

(WebCore::JSTestInterfacePrototype::finishCreation):
(WebCore::jsTestInterfacePrototypeFunctionEntriesCaller):
(WebCore::jsTestInterfacePrototypeFunctionEntries):
(WebCore::jsTestInterfacePrototypeFunctionKeysCaller):
(WebCore::jsTestInterfacePrototypeFunctionKeys):
(WebCore::jsTestInterfacePrototypeFunctionValuesCaller):
(WebCore::jsTestInterfacePrototypeFunctionValues):
(WebCore::jsTestInterfacePrototypeFunctionForEachCaller):
(WebCore::jsTestInterfacePrototypeFunctionForEach):

  • bindings/scripts/test/JS/JSTestIterable.cpp:
  • bindings/scripts/test/JS/JSTestNode.cpp:
  • bindings/scripts/test/TestInterface.idl:
3:06 PM Changeset in webkit [252807] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Line::Run::expand should take a range of runs to merge
https://bugs.webkit.org/show_bug.cgi?id=204514
<rdar://problem/57428139>

Reviewed by Antti Koivisto.

As part of Line::close, we iterate through the runs and merge them if possible.
e.g [text][ ][content][ ][and][ ][more] -> [text content and ][more] (note the whitespace collapsing)
Instead of taking and expanding the runs one by one, let's collect the continuous neighboring runs first
and expand the current run with the continuous range in one go. This shaves off ~2% on line-layout-simple.html.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::ContinousContent::isEmpty const):
(WebCore::Layout::ContinousContent::length const):
(WebCore::Layout::ContinousContent::width const):
(WebCore::Layout::ContinousContent::hasTrailingExpansionOpportunity const):
(WebCore::Layout::ContinousContent::expansionOpportunityCount const):
(WebCore::Layout::ContinousContent::ContinousContent):
(WebCore::Layout::ContinousContent::append):
(WebCore::Layout::ContinousContent::canMergeRuns):
(WebCore::Layout::Line::Run::expand):
(WebCore::Layout::Line::close):

  • layout/inlineformatting/InlineLine.h:
2:49 PM Changeset in webkit [252806] by mmaxfield@apple.com
  • 5 edits in trunk/Source/WebCore

[Cocoa] Rename some internal names for system fonts
https://bugs.webkit.org/show_bug.cgi?id=204486

Reviewed by Simon Fraser.

designSystemUI -> systemDesign (because https://developer.apple.com/documentation/appkit/nsfontdescriptorsystemdesign?language=objc)
SystemFontDatabaseCoreText::ClientUse -> SystemFontKind
ForSystemUI -> SystemUI (because https://drafts.csswg.org/css-fonts-4/#system-ui-def)
ForSystemUISerif -> UISerif (because https://drafts.csswg.org/css-fonts-4/#ui-serif-def)
ForSystemUIMonospace -> UIMonospace (because https://drafts.csswg.org/css-fonts-4/#ui-monospace-def)
ForSystemUIRounded -> UIRounded (because https://drafts.csswg.org/css-fonts-4/#ui-rounded-def)
ForTextStyle -> TextStyle (because CTFontDescriptorCreateWithTextStyle())

No new tests because there is no behavior change.

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::fontWithFamilySpecialCase):

  • platform/graphics/cocoa/FontDescriptionCocoa.cpp:

(WebCore::matchSystemFontUse):
(WebCore::systemFontCascadeList):

  • platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:

(WebCore::SystemFontDatabaseCoreText::createSystemDesignFont):
(WebCore::SystemFontDatabaseCoreText::cascadeList):
(WebCore::SystemFontDatabaseCoreText::systemFontParameters):
(WebCore::SystemFontDatabaseCoreText::createDesignSystemUIFont): Deleted.

  • platform/graphics/cocoa/SystemFontDatabaseCoreText.h:
2:42 PM Changeset in webkit [252805] by sihui_liu@apple.com
  • 36 edits
    2 deletes in trunk

Cross-thread version StorageQuotaManager
https://bugs.webkit.org/show_bug.cgi?id=203971
<rdar://problem/57290349>

Reviewed by Chris Dumez.

Source/WebCore:

Implement a lock-based StorageQuotaManager so that quota check can be done on different threads.
If space request is made on a background thread, it needs to hold a lock until it is finished, so no request
from different threads can be performed at the same time.
If space request is made on the main thread, we will dispatch it to a background thread and schedule a calllback
to the main thread when result is available, so the main thread will not be blocked.

Covered by existing quota related tests.

  • Headers.cmake:
  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::create):
(WebCore::IDBServer::IDBServer::IDBServer):
(WebCore::IDBServer::IDBServer::didPerformCloseAndDeleteDatabases):
(WebCore::IDBServer::IDBServer::requestSpace):
(WebCore::IDBServer::IDBServer::diskUsage):
(WebCore::IDBServer::IDBServer::QuotaUser::QuotaUser): Deleted.
(WebCore::IDBServer::IDBServer::QuotaUser::~QuotaUser): Deleted.
(WebCore::IDBServer::IDBServer::QuotaUser::resetSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::QuotaUser::computeSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::QuotaUser::increaseSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::QuotaUser::decreaseSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::QuotaUser::whenInitialized): Deleted.
(WebCore::IDBServer::IDBServer::QuotaUser::initializeSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::ensureQuotaUser): Deleted.
(WebCore::IDBServer::IDBServer::startComputingSpaceUsedForOrigin): Deleted.
(WebCore::IDBServer::IDBServer::computeSpaceUsedForOrigin): Deleted.
(WebCore::IDBServer::IDBServer::finishComputingSpaceUsedForOrigin): Deleted.
(WebCore::IDBServer::IDBServer::resetSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::increaseSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::decreaseSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::increasePotentialSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::decreasePotentialSpaceUsed): Deleted.

  • Modules/indexeddb/server/IDBServer.h:

(WebCore::IDBServer::IDBServer::initializeQuotaUser): Deleted.
(): Deleted.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation):
(WebCore::IDBServer::UniqueIDBDatabase::openBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::didOpenBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::createObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::performCreateObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformCreateObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::deleteObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::renameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::performRenameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformRenameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::clearObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::createIndex):
(WebCore::IDBServer::UniqueIDBDatabase::performCreateIndex):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformCreateIndex):
(WebCore::IDBServer::UniqueIDBDatabase::deleteIndex):
(WebCore::IDBServer::UniqueIDBDatabase::renameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::performRenameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformRenameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformPutOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::getRecord):
(WebCore::IDBServer::UniqueIDBDatabase::getAllRecords):
(WebCore::IDBServer::UniqueIDBDatabase::performGetRecord):
(WebCore::IDBServer::UniqueIDBDatabase::performGetAllRecords):
(WebCore::IDBServer::UniqueIDBDatabase::getCount):
(WebCore::IDBServer::UniqueIDBDatabase::deleteRecord):
(WebCore::IDBServer::UniqueIDBDatabase::openCursor):
(WebCore::IDBServer::UniqueIDBDatabase::iterateCursor):
(WebCore::IDBServer::UniqueIDBDatabase::commitTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::abortTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::requestSpace): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::waitForRequestSpaceCompletion): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::startSpaceIncreaseTask): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::finishSpaceIncreaseTask): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::createObjectStoreAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::deleteObjectStoreAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::renameObjectStoreAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::clearObjectStoreAfetQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::createIndexAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::deleteIndexAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::renameIndexAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::putOrAddAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::getRecordAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::getAllRecordsAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::getCountAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::deleteRecordAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::openCursorAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::iterateCursorAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::commitTransactionAfterQuotaCheck): Deleted.

  • Modules/indexeddb/server/UniqueIDBDatabase.h:
  • Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:

(WebCore::IDBServer::UniqueIDBDatabaseConnection::abortTransactionWithoutCallback):

  • Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:

(WebCore::IDBServer::UniqueIDBDatabaseTransaction::abort):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getRecord):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getAllRecords):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getCount):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::deleteRecord):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::openCursor):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::iterateCursor):

  • Modules/indexeddb/shared/InProcessIDBServer.cpp:

(WebCore::InProcessIDBServer::quotaManager):
(WebCore::storageQuotaManagerSpaceRequester):
(WebCore::InProcessIDBServer::InProcessIDBServer):
(WebCore::storageQuotaManagerGetter): Deleted.

  • Modules/indexeddb/shared/InProcessIDBServer.h:
  • WebCore.xcodeproj/project.pbxproj:
  • storage/StorageQuotaManager.cpp:

(WebCore::StorageQuotaManager::create):
(WebCore::StorageQuotaManager::StorageQuotaManager):
(WebCore::StorageQuotaManager::requestSpaceOnMainThread):
(WebCore::StorageQuotaManager::requestSpaceOnBackgroundThread):
(WebCore::StorageQuotaManager::tryGrantRequest):
(WebCore::StorageQuotaManager::updateQuotaBasedOnUsage):
(WebCore::StorageQuotaManager::resetQuotaUpdatedBasedOnUsageForTesting):
(WebCore::StorageQuotaManager::resetQuotaForTesting):
(WebCore::StorageQuotaManager::~StorageQuotaManager): Deleted.
(WebCore::StorageQuotaManager::spaceUsage const): Deleted.
(WebCore::StorageQuotaManager::updateQuotaBasedOnSpaceUsage): Deleted.
(WebCore::StorageQuotaManager::initializeUsersIfNeeded): Deleted.
(WebCore::StorageQuotaManager::askUserToInitialize): Deleted.
(WebCore::StorageQuotaManager::addUser): Deleted.
(WebCore::StorageQuotaManager::shouldAskForMoreSpace const): Deleted.
(WebCore::StorageQuotaManager::removeUser): Deleted.
(WebCore::StorageQuotaManager::requestSpace): Deleted.
(WebCore::StorageQuotaManager::askForMoreSpace): Deleted.
(WebCore::StorageQuotaManager::processPendingRequests): Deleted.

  • storage/StorageQuotaManager.h:

(WebCore::StorageQuotaManager::defaultThirdPartyQuotaFromPerOriginQuota):
(WebCore::StorageQuotaManager::StorageQuotaManager): Deleted.
(WebCore::StorageQuotaManager::resetQuota): Deleted.
(WebCore::StorageQuotaManager::state const): Deleted.

  • storage/StorageQuotaUser.h: Removed.

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp: Introduce class SessionStorageQuotaManager to manage all

StorageQuotaManagers of the same session.
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::addWebsiteDataStore):
(WebKit::NetworkProcess::addSessionStorageQuotaManager):
(WebKit::NetworkProcess::removeSessionStorageQuotaManager):
(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcess::createIDBServer):
(WebKit::NetworkProcess::addIndexedDatabaseSession):
(WebKit::NetworkProcess::setSessionStorageQuotaManagerIDBRootPath):
(WebKit::NetworkProcess::updateQuotaBasedOnSpaceUsageForTesting):
(WebKit::NetworkProcess::resetQuota):
(WebKit::NetworkProcess::storageQuotaManager):
(WebKit::NetworkProcess::initializeStorageQuota): Deleted.
(WebKit::NetworkProcess::clearStorageQuota): Deleted.
(): Deleted.
(WebKit::NetworkProcess::initializeQuotaUsers): Deleted.

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::SessionStorageQuotaManager::SessionStorageQuotaManager):
(WebKit::NetworkProcess::SessionStorageQuotaManager::defaultQuota const):
(WebKit::NetworkProcess::SessionStorageQuotaManager::ensureOriginStorageQuotaManager):
(WebKit::NetworkProcess::SessionStorageQuotaManager::existingStorageQuotaManagers):
(WebKit::NetworkProcess::SessionStorageQuotaManager::cacheRootPath const):
(WebKit::NetworkProcess::SessionStorageQuotaManager::setIDBRootPath):
(WebKit::NetworkProcess::SessionStorageQuotaManager::idbRootPath const):
(WebKit::NetworkProcess::StorageQuotaManagers::defaultQuota const): Deleted.
(WebKit::NetworkProcess::StorageQuotaManagers::setDefaultQuotas): Deleted.
(WebKit::NetworkProcess::StorageQuotaManagers::managersPerOrigin): Deleted.

  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::getDirectorySize):
(WebKit::CacheStorage::Engine::diskUsage): static function to get the disk usage of CacheStorage given
CacheStorage root directory.
(WebKit::CacheStorage::Engine::requestSpace):
(WebKit::CacheStorage::Engine::readCachesFromDisk):
(WebKit::CacheStorage::Engine::writeSizeFile):
(WebKit::CacheStorage::Engine::readSizeFile):
(WebKit::CacheStorage::Engine::initializeQuotaUser): Deleted.

  • NetworkProcess/cache/CacheStorageEngine.h:
  • NetworkProcess/cache/CacheStorageEngineCache.cpp:

(WebKit::CacheStorage::Cache::put):
(WebKit::CacheStorage::Cache::remove):

  • NetworkProcess/cache/CacheStorageEngineCaches.cpp:

(WebKit::CacheStorage::Caches::create):
(WebKit::CacheStorage::Caches::Caches):
(WebKit::CacheStorage::Caches::~Caches):
(WebKit::CacheStorage::Caches::updateSizeFile):
(WebKit::CacheStorage::Caches::initializeSize):
(WebKit::CacheStorage::Caches::clear):
(WebKit::CacheStorage::Caches::requestSpace):
(WebKit::CacheStorage::Caches::writeRecord):
(WebKit::CacheStorage::Caches::removeRecord):
(WebKit::CacheStorage::Caches::whenInitialized): Deleted.
(WebKit::CacheStorage::Caches::resetSpaceUsed): Deleted.

  • NetworkProcess/cache/CacheStorageEngineCaches.h:
  • Shared/WebsiteDataStoreParameters.cpp:

(WebKit::WebsiteDataStoreParameters::encode const):
(WebKit::WebsiteDataStoreParameters::decode):

  • Shared/WebsiteDataStoreParameters.h: Add a cacheStorageDirectory parameter so we know the direcotry of

CacheStorage when we start using WebsiteDataStore.

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreResetQuota):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h: Add a C API for reseting quota in TestRunner.
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::resetQuota):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::parameters):
(WebKit::WebsiteDataStore::resetQuota):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/StorageQuotaManager.cpp: Removed as we have a different StorageQuotaManager

implementation now.

  • WebKitTestRunner/TestController.cpp: reset StorageQuotaManager's quota between tests.

(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::resetQuota):

  • WebKitTestRunner/TestController.h:
2:35 PM Changeset in webkit [252804] by Alan Coon
  • 1 copy in tags/Safari-608.5.3

Tag Safari-608.5.3.

2:34 PM Changeset in webkit [252803] by Alan Coon
  • 7 edits in branches/safari-608-branch/Source

Versioning.

2:29 PM Changeset in webkit [252802] by Simon Fraser
  • 2 edits in trunk/LayoutTests

Regression (r252701): imported/w3c/web-platform-tests/css/css-multicol/multicol-rule-shorthand-2.xht and multicol-rule-fraction-003.xht are failing on iOS
https://bugs.webkit.org/show_bug.cgi?id=204505

Unreviewed test gardening.

Two multicol tests still fail on iOS.

  • platform/ios/TestExpectations:
2:21 PM Changeset in webkit [252801] by pvollan@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix compile error in release mode
https://bugs.webkit.org/show_bug.cgi?id=204534

Reviewed by Mark Lam.

A compiler error is thrown in release mode when compiling FullBytecodeLiveness::getLiveness,
since not all paths are returning a value.

  • bytecode/FullBytecodeLiveness.h:

(JSC::FullBytecodeLiveness::getLiveness const):

2:13 PM Changeset in webkit [252800] by Tadeu Zagallo
  • 14 edits
    1 add in trunk

[WebAssembly] Improve Wasm::LLIntGenerator
https://bugs.webkit.org/show_bug.cgi?id=204092

Reviewed by Saam Barati.

JSTests:

  • wasm/stress/set-local-enclosed-stack.js: Added.

(assert.eq.instance.exports.foo):
(assert.eq):

Source/JavaScriptCore:

This improves the Wasm::LLIntGenerator by:

  • Changing LLIntGenerator::ExpressionType from RefPtr<RegisterID> to VirtualRegister: Instead of allocating and retaining RegisterIDs we use VirtualRegisters directly and ensure that they match the WebAssembly stack, i.e. the parser's expression stack should match the virtual registers.
  • Removing redundant moves when materializing constants and performing local.get: instead of creating a new temporary for each constant and local.get, we return the VirtualRegister for the constant/local slot directly. In order for this to work, we still allocate the stack slot for the temporaries, since we have to materialize them before loops and branches.
  • Adding a constructor to ControlType that takes the results ExpressionList as an rvalue instead of copying it
  • Optimizing callInformationFor, which is now split into two functions. The callee does not care about arguments, and should never allocate temporaries, and the caller case was optimized by avoiding unnecessary calls to newTemporary
  • Delay holding the lock in LLintPlan::compileFunction, since we do not need to hold it while compiling the js-to-wasm entrypoint
  • bytecode/BytecodeList.rb:
  • bytecompiler/Label.h:

(JSC::GenericLabel::location const):
(JSC::GenericLabel::unresolvedJumps const):

  • generator/Wasm.rb:
  • llint/WebAssembly.asm:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::endTopLevel):
(JSC::Wasm::AirIRGenerator::didPopValueFromStack):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::endTopLevel):
(JSC::Wasm::B3IRGenerator::didPopValueFromStack):

  • wasm/WasmFunctionCodeBlock.cpp:

(JSC::Wasm::FunctionCodeBlock::addJumpTable):

  • wasm/WasmFunctionCodeBlock.h:
  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser::expressionStack):
(JSC::Wasm::FunctionParser<Context>::parseBody):
(JSC::Wasm::FunctionParser<Context>::parseExpression):

  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::ControlType::loop):
(JSC::Wasm::LLIntGenerator::ControlType::topLevel):
(JSC::Wasm::LLIntGenerator::ControlType::block):
(JSC::Wasm::LLIntGenerator::ControlType::if_):
(JSC::Wasm::LLIntGenerator::ControlType::targetArity const):
(JSC::Wasm::LLIntGenerator::ControlType::stackSize const):
(JSC::Wasm::LLIntGenerator::ControlType::ControlType):
(JSC::Wasm::LLIntGenerator::unifyValuesWithBlock):
(JSC::Wasm::LLIntGenerator::push):
(JSC::Wasm::LLIntGenerator::didPopValueFromStack):
(JSC::Wasm::LLIntGenerator::emptyExpression):
(JSC::Wasm::LLIntGenerator::addEndToUnreachable):
(JSC::Wasm::LLIntGenerator::dump):
(JSC::Wasm::LLIntGenerator::virtualRegisterForWasmLocal):
(JSC::Wasm::LLIntGenerator::jsNullConstant):
(JSC::Wasm::LLIntGenerator::zeroConstant):
(JSC::Wasm::LLIntGenerator::getDropKeepCount):
(JSC::Wasm::LLIntGenerator::dropKeep):
(JSC::Wasm::LLIntGenerator::walkExpressionStack):
(JSC::Wasm::LLIntGenerator::checkConsistency):
(JSC::Wasm::LLIntGenerator::materializeConstantsAndLocals):
(JSC::Wasm::LLIntGenerator::materializeLocals):
(JSC::Wasm::LLIntGenerator::ConstantMapHashTraits::constructDeletedValue):
(JSC::Wasm::LLIntGenerator::ConstantMapHashTraits::isDeletedValue):
(JSC::Wasm::LLIntGenerator::LLIntGenerator):
(JSC::Wasm::LLIntGenerator::finalize):
(JSC::Wasm::LLIntGenerator::callInformationForCaller):
(JSC::Wasm::LLIntGenerator::callInformationForCallee):
(JSC::Wasm::LLIntGenerator::addArguments):
(JSC::Wasm::LLIntGenerator::addLocal):
(JSC::Wasm::LLIntGenerator::didFinishParsingLocals):
(JSC::Wasm::LLIntGenerator::addConstant):
(JSC::Wasm::LLIntGenerator::getLocal):
(JSC::Wasm::LLIntGenerator::setLocal):
(JSC::Wasm::LLIntGenerator::getGlobal):
(JSC::Wasm::LLIntGenerator::addLoop):
(JSC::Wasm::LLIntGenerator::addTopLevel):
(JSC::Wasm::LLIntGenerator::addBlock):
(JSC::Wasm::LLIntGenerator::addIf):
(JSC::Wasm::LLIntGenerator::addElse):
(JSC::Wasm::LLIntGenerator::addElseToUnreachable):
(JSC::Wasm::LLIntGenerator::addReturn):
(JSC::Wasm::LLIntGenerator::addBranch):
(JSC::Wasm::LLIntGenerator::addSwitch):
(JSC::Wasm::LLIntGenerator::endBlock):
(JSC::Wasm::LLIntGenerator::endTopLevel):
(JSC::Wasm::LLIntGenerator::addCall):
(JSC::Wasm::LLIntGenerator::addCallIndirect):
(JSC::Wasm::LLIntGenerator::addRefIsNull):
(JSC::Wasm::LLIntGenerator::addRefFunc):
(JSC::Wasm::LLIntGenerator::addTableGet):
(JSC::Wasm::LLIntGenerator::addTableSize):
(JSC::Wasm::LLIntGenerator::addTableGrow):
(JSC::Wasm::LLIntGenerator::addCurrentMemory):
(JSC::Wasm::LLIntGenerator::addGrowMemory):
(JSC::Wasm::LLIntGenerator::addSelect):
(JSC::Wasm::LLIntGenerator::load):
(JSC::GenericLabel<Wasm::GeneratorTraits>::setLocation):

  • wasm/WasmLLIntPlan.cpp:

(JSC::Wasm::LLIntPlan::compileFunction):

  • wasm/WasmValidate.cpp:

(JSC::Wasm::Validate::endTopLevel):
(JSC::Wasm::Validate::didPopValueFromStack):

1:58 PM Changeset in webkit [252799] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r251227): dashboard no longer shows page weight
https://bugs.webkit.org/show_bug.cgi?id=204528

Reviewed by Brian Burg.

WI.contentLoaded adds the debuggable type as a class to the <body>. In r251227, the
"web" debuggable type was split into "page" and "web-page". Update the few selectors that
used the debuggable type to show/hide parts of the UI.

  • UserInterface/Views/DashboardContainerView.css:

(body:matches(.page, .web-page) .toolbar .dashboard-container): Added.
(body:not(.page, .web-page) .toolbar .dashboard-container): Added.
(body.web .toolbar .dashboard-container): Deleted.
(body:not(.web) .toolbar .dashboard-container): Deleted.

  • UserInterface/Views/DefaultDashboardView.css:

(body:matches(.page, .web-page) .toolbar.collapsed .dashboard.default > :matches(.resourcesSize, .time, .logs)): Added.
(body:not(.page, .web-page) .toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time)): Added.
(body.web .toolbar.collapsed .dashboard.default > :matches(.resourcesSize, .time, .logs)): Deleted.
(body:not(.web) .toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time)): Deleted.

1:32 PM Changeset in webkit [252798] by achristensen@apple.com
  • 9 edits in trunk/Source/WebKit

Revert r250421
https://bugs.webkit.org/show_bug.cgi?id=202290

This is needed for rdar://problem/56760896
I left the soup parts of the original change untouched, which leaves speculative validation on for soup ports.

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

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

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

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::copy):

  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/C/WKContext.cpp:

(WKContextSetDiskCacheSpeculativeValidationEnabled):

  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:

(-[_WKProcessPoolConfiguration diskCacheSpeculativeValidationEnabled]):
(-[_WKProcessPoolConfiguration setDiskCacheSpeculativeValidationEnabled:]):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

1:30 PM Changeset in webkit [252797] by Jonathan Bedard
  • 2 edits in trunk/Tools

Unreviewed, rolling out r252791.

Cannot use key on scalar in some perl versions

Reverted changeset:

"run-javascriptcore-tests: Failure to determine configuration
for reporting is fatal"
https://bugs.webkit.org/show_bug.cgi?id=204526
https://trac.webkit.org/changeset/252791

1:25 PM Changeset in webkit [252796] by achristensen@apple.com
  • 11 edits in trunk/Source/WebKit

Revert r250422
https://bugs.webkit.org/show_bug.cgi?id=202285

This is needed for rdar://problem/56760896

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::setCanHandleHTTPSServerTrustEvaluation):

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::canHandleHTTPSServerTrustEvaluation const):

  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkProcessCreationParameters.cpp:

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

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

(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):

  • UIProcess/API/C/WKContext.cpp:

(WKContextSetCanHandleHTTPSServerTrustEvaluation):

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _setCanHandleHTTPSServerTrustEvaluation:]):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::setCanHandleHTTPSServerTrustEvaluation):

  • UIProcess/WebProcessPool.h:
1:21 PM Changeset in webkit [252795] by Alan Coon
  • 1 copy in tags/Safari-608.5.2

Tag Safari-608.5.2.

1:19 PM Changeset in webkit [252794] by Alan Coon
  • 7 edits in branches/safari-608-branch/Source

Versioning.

12:40 PM Changeset in webkit [252793] by eric.carlson@apple.com
  • 7 edits in trunk

( r251737 ) media/remoteplayback-prompt.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=204362
<rdar://problem/57327870>

Reviewed by Jer Noble.

Source/WebCore:

No new tests, this fixes a flakey test.

  • platform/mock/MediaPlaybackTargetPickerMock.cpp:

(WebCore::MediaPlaybackTargetPickerMock::MediaPlaybackTargetPickerMock):
(WebCore::MediaPlaybackTargetPickerMock::showPlaybackTargetPicker):
(WebCore::MediaPlaybackTargetPickerMock::startingMonitoringPlaybackTargets):
(WebCore::MediaPlaybackTargetPickerMock::setState):
(WebCore::MediaPlaybackTargetPickerMock::timerFired): Deleted.

  • platform/mock/MediaPlaybackTargetPickerMock.h:

LayoutTests:

  • media/media-source/only-bcp47-language-tags-accepted-as-valid-expected.txt:
  • media/remoteplayback-prompt.html: Update to make debugging timeouts easier.
  • media/video-test.js:

(waitForEventWithTimeout):

12:29 PM Changeset in webkit [252792] by Devin Rousso
  • 3 edits in trunk/Source/WebCore

Web Inspector: Canvas: adjust InspectorCanvasAgent::recordCanvasAction to actually check that the CanvasRenderingContext still exists
https://bugs.webkit.org/show_bug.cgi?id=204395
<rdar://problem/57347504>

Reviewed by Ryosuke Niwa.

The microtask we create to handle marking the end of a frame for a detached canvas doesn't
actually check that the CanvasRenderingContext still exists, such as if it gets GCd during
a recording.

Instead of creating a microtask per-canvas, create a microtask per-InspectorCanvasAgent
and save a list of canvasId that are actively recording, which can then be iterated to
handle marking the end of a frame for each once the microtask fires. If the canvasId can't
be re-found, then the related CanvasRenderingContext must have been removed.

  • inspector/agents/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::recordCanvasAction):
(WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
(WebCore::InspectorCanvasAgent::reset):

12:06 PM Changeset in webkit [252791] by Jonathan Bedard
  • 2 edits in trunk/Tools

run-javascriptcore-tests: Failure to determine configuration for reporting is fatal
https://bugs.webkit.org/show_bug.cgi?id=204526

Reviewed by Aakash Jain.

  • Scripts/run-javascriptcore-tests:

(configurationForUpload): Return empty hash if no configuration is available.
(uploadResults): Soft-fail upload if configuration is empty.

12:01 PM Changeset in webkit [252790] by BJ Burg
  • 9 edits
    1 copy
    3 adds in trunk

Web Inspector: add support for new kinds of diagnostic events
https://bugs.webkit.org/show_bug.cgi?id=204430

Reviewed by Devin Rousso.

Source/WebInspectorUI:

This patch restructures the existing DiagnosticController to support multiple
self-contained event recorders. The first such recorder is for the TabActivity
diagnostic event. More will be added later.

Add two engineering settings: one which auto-logs diagnostic events to Inspector2 console,
and another which forces DiagnosticController to be active or inactive regardless of
whether a diagnostic logging delegate is actually installed. This is for manual testing.

This patch does not introduce any functionality changes to diagnostic event collection.
The TabActivityDiagnosticeventRecorder still needs some changes for it to sample correctly.

New Test: inspector/unit-tests/diagnostic-controller.html

  • UserInterface/Base/Main.js:

(WI.contentLoaded):

  • UserInterface/Controllers/DiagnosticController.js:

(WI.DiagnosticController):
(WI.DiagnosticController.prototype.set diagnosticLoggingAvailable):
(WI.DiagnosticController.prototype.addRecorder):
(WI.DiagnosticController.prototype.logDiagnosticEvent):
(WI.DiagnosticController.prototype._debugEnableDiagnosticLoggingSettingDidChange):
(WI.DiagnosticController.prototype._debugAutoLogDiagnosticEventsSettingDidChange):
(WI.DiagnosticController.prototype._updateRecorderStates):
(WI.DiagnosticController.supportsDiagnosticLogging): Deleted.
(WI.DiagnosticController.prototype.logDiagnosticMessage): Deleted.
(WI.DiagnosticController.prototype._didInteractWithTabContent): Deleted.
(WI.DiagnosticController.prototype._clearTabActivityTimeout): Deleted.
(WI.DiagnosticController.prototype._beginTabActivityTimeout): Deleted.
(WI.DiagnosticController.prototype._stopTrackingTabActivity): Deleted.
(WI.DiagnosticController.prototype._handleWindowFocus): Deleted.
(WI.DiagnosticController.prototype._handleWindowBlur): Deleted.
(WI.DiagnosticController.prototype._handleWindowKeyDown): Deleted.
(WI.DiagnosticController.prototype._handleWindowMouseDown): Deleted.
(WI.DiagnosticController.prototype._handleTabBrowserSelectedTabContentViewDidChange): Deleted.
Restructure DiagnosticController to be dumber. It holds on to a list of recorders and
turns them on and off. All event logging goes through one funnel method, which does not
use InspectorFrontendHost at all when running a Web Inspector layout test.

  • UserInterface/Controllers/DiagnosticEventRecorder.js: Added.

(WI.DiagnosticEventRecorder):
(WI.DiagnosticEventRecorder.prototype.get name):
(WI.DiagnosticEventRecorder.prototype.get active):
(WI.DiagnosticEventRecorder.prototype.set active):
(WI.DiagnosticEventRecorder.prototype.setup):
(WI.DiagnosticEventRecorder.prototype.teardown):
Add base class for all individual diagnostic event recorders.

  • UserInterface/Controllers/TabActivityDiagnosticEventRecorder.js: Copied from Source/WebInspectorUI/UserInterface/Controllers/DiagnosticController.js.

(WI.TabActivityDiagnosticEventRecorder):
(WI.TabActivityDiagnosticEventRecorder.prototype.setup):
(WI.TabActivityDiagnosticEventRecorder.prototype.teardown):
(WI.TabActivityDiagnosticEventRecorder.prototype.handleEvent):
(WI.TabActivityDiagnosticEventRecorder.prototype._didInteractWithTabContent):
(WI.TabActivityDiagnosticEventRecorder.prototype._clearTabActivityTimeout):
(WI.TabActivityDiagnosticEventRecorder.prototype._beginTabActivityTimeout):
(WI.TabActivityDiagnosticEventRecorder.prototype._stopTrackingTabActivity):
(WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowFocus):
(WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowBlur):
(WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowKeyDown):
(WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowMouseDown):
(WI.TabActivityDiagnosticEventRecorder.prototype._handleTabBrowserSelectedTabContentViewDidChange):
Move all user activity tracking to here. Restructure so that the recorder can be
turned on and off (this adds/removes its listeners and timers).

  • UserInterface/Main.html: Add new files.
  • UserInterface/Protocol/InspectorFrontendAPI.js:

(InspectorFrontendAPI.setDiagnosticLoggingAvailable):
Adjust the name, as WI.diagnosticController is no longer underscore-prefixed.

  • UserInterface/Base/Setting.js:

Add new settings. Add getter 'valueRespectingDebugUIAvailability' which only
returns default values for Debug/Engineering settings if DebugUI is not enabled.

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createDebugSettingsView):
Add new settings to Settings Tab UI.

LayoutTests:

Add new test cases for WI.DiagnosticController.

  • inspector/unit-tests/diagnostic-controller-expected.txt: Added.
  • inspector/unit-tests/diagnostic-controller.html: Added.
11:55 AM Changeset in webkit [252789] by ysuzuki@apple.com
  • 14 edits
    9 adds in trunk

[JSC] DFG terminal's liveness should respect caller's opcodeID
https://bugs.webkit.org/show_bug.cgi?id=204317

Reviewed by Saam Barati.

JSTests:

  • stress/call-var-args-phantom-arguments-handler-strict.js: Added.

(shouldBe):
(inlined):
(test):

  • stress/call-var-args-phantom-arguments-handler.js: Added.

(shouldBe):
(inlined):
(test):

  • stress/call-var-args-phantom-arguments-strict.js: Added.

(shouldBe):
(inlined):
(test):

  • stress/call-var-args-phantom-arguments.js: Added.

(shouldBe):
(inlined):
(test):

  • stress/derived-class-construct-varargs.js: Added.

(shouldThrow):
(B):

  • stress/tail-call-var-args-phantom-arguments-handler-strict.js: Added.

(shouldBe):
(inlined):
(test):

  • stress/tail-call-var-args-phantom-arguments-handler.js: Added.

(shouldBe):
(inlined):
(test):

  • stress/tail-call-var-args-phantom-arguments-strict.js: Added.

(shouldBe):
(inlined):
(test):

  • stress/tail-call-var-args-phantom-arguments.js: Added.

(shouldBe):
(inlined):
(test):

Source/JavaScriptCore:

Let's consider the following example, which is freqneutly seen in Speedometer2/EmberJS-Debug.

"use strict";

function assertImpl(cond)
{

if (!cond)

throw new Error();

}

function assert()
{

assertImpl.apply(undefined, arguments);

}
noInline(assert);

When compiling throw, we emit a terminal node and put Phantom/PhantomLocal based on the bytecode liveness.
When collecting liveness for each frame, we use the liveness information of the bytecode op_call_varargs in assert function.
This means that op_call_varargs's uses are considered as live (like, arguments in this example).
But it is not necessary to mark it "live": if we are in assertImpl, arguments is already loaded into the stack, and we no longer
use arguments when exiting, and the execution after the exit. Marking this arguments live makes this arguments allocated
in DFG, but this is wasteful.

In this patch, we introduce BeforeUse and AfterUse concept into bytecode liveness information. And use AfterUse information when
collecting liveness in the caller's frame in DFG. We only enable this for varargs for now since (1) applying this to the other ones
is not profitable, and (2) we need to be careful to make stack arguments live to allow materialization of arguments objects.
In op_call_varargs / op_tail_call_varargs / op_construct_varargs cases, uses are happen only for |callee|, |this|, and |arguments|.
And these are no longer necessary after calling.

We don't use liveness information in the next bytecode since it misses uses marked by exception handlers.

  • bytecode/BytecodeLivenessAnalysis.cpp:

(JSC::BytecodeLivenessAnalysis::computeFullLiveness):

  • bytecode/BytecodeLivenessAnalysis.h:

(JSC::BytecodeLivenessAnalysis::graph):

  • bytecode/BytecodeLivenessAnalysisInlines.h:

(JSC::BytecodeLivenessPropagation::stepOverInstructionDef):
(JSC::BytecodeLivenessPropagation::stepOverInstructionUse):
(JSC::BytecodeLivenessPropagation::stepOverInstructionUseInExceptionHandler):
(JSC::BytecodeLivenessPropagation::stepOverInstruction):

  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeIndex):
(JSC::computeDefsForBytecodeIndex):

  • bytecode/FullBytecodeLiveness.h:

(JSC::FullBytecodeLiveness::getLiveness const):
(JSC::FullBytecodeLiveness::operandIsLive const):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::ForInContext::finalize):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::flushForTerminalImpl):

  • dfg/DFGForAllKills.h:

(JSC::DFG::forAllKilledOperands):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::isLiveInBytecode):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::forAllLocalsLiveInBytecode):
(JSC::DFG::Graph::appropriateLivenessCalculationPoint):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
11:55 AM Changeset in webkit [252788] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Setup EWS queue for JSConly i386
https://bugs.webkit.org/show_bug.cgi?id=204523

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/config.json:
11:14 AM Changeset in webkit [252787] by sihui_liu@apple.com
  • 10 edits in trunk/Source/WebCore

IndexedDB: lock-based implementation of suspension
https://bugs.webkit.org/show_bug.cgi?id=204379

Reviewed by Geoffrey Garen.

Covered by existing API test: IndexedDB.IndexedDBSuspendImminently

  • Modules/indexeddb/server/IDBBackingStore.h:
  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::tryStop):
(WebCore::IDBServer::IDBServer::resume):

  • Modules/indexeddb/server/IDBServer.h:

(WebCore::IDBServer::IDBServer::addDatabase):
(WebCore::IDBServer::IDBServer::removeDatabase):

  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::getOrEstablishDatabaseInfo):
(WebCore::IDBServer::MemoryIDBBackingStore::beginTransaction):
(WebCore::IDBServer::MemoryIDBBackingStore::abortTransaction):
(WebCore::IDBServer::MemoryIDBBackingStore::commitTransaction):
(WebCore::IDBServer::MemoryIDBBackingStore::createObjectStore):
(WebCore::IDBServer::MemoryIDBBackingStore::deleteObjectStore):
(WebCore::IDBServer::MemoryIDBBackingStore::renameObjectStore):
(WebCore::IDBServer::MemoryIDBBackingStore::clearObjectStore):
(WebCore::IDBServer::MemoryIDBBackingStore::createIndex):
(WebCore::IDBServer::MemoryIDBBackingStore::deleteIndex):
(WebCore::IDBServer::MemoryIDBBackingStore::renameIndex):
(WebCore::IDBServer::MemoryIDBBackingStore::keyExistsInObjectStore):
(WebCore::IDBServer::MemoryIDBBackingStore::deleteRange):
(WebCore::IDBServer::MemoryIDBBackingStore::addRecord):
(WebCore::IDBServer::MemoryIDBBackingStore::getRecord):
(WebCore::IDBServer::MemoryIDBBackingStore::getAllRecords):
(WebCore::IDBServer::MemoryIDBBackingStore::getIndexRecord):
(WebCore::IDBServer::MemoryIDBBackingStore::getCount):
(WebCore::IDBServer::MemoryIDBBackingStore::generateKeyNumber):
(WebCore::IDBServer::MemoryIDBBackingStore::revertGeneratedKeyNumber):
(WebCore::IDBServer::MemoryIDBBackingStore::maybeUpdateKeyGeneratorNumber):
(WebCore::IDBServer::MemoryIDBBackingStore::openCursor):
(WebCore::IDBServer::MemoryIDBBackingStore::iterateCursor):
(WebCore::IDBServer::MemoryIDBBackingStore::infoForObjectStore):
(WebCore::IDBServer::MemoryIDBBackingStore::deleteBackingStore):
(WebCore::IDBServer::MemoryIDBBackingStore::close):
(WebCore::IDBServer::MemoryIDBBackingStore::databaseSize const): Deleted.

  • Modules/indexeddb/server/MemoryIDBBackingStore.h:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::getOrEstablishDatabaseInfo):
(WebCore::IDBServer::SQLiteIDBBackingStore::beginTransaction):
(WebCore::IDBServer::SQLiteIDBBackingStore::abortTransaction):
(WebCore::IDBServer::SQLiteIDBBackingStore::commitTransaction):
(WebCore::IDBServer::SQLiteIDBBackingStore::createObjectStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteObjectStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::renameObjectStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::clearObjectStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::createIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::renameIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::keyExistsInObjectStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteRange):
(WebCore::IDBServer::SQLiteIDBBackingStore::addRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getAllRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::getIndexRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getCount):
(WebCore::IDBServer::SQLiteIDBBackingStore::generateKeyNumber):
(WebCore::IDBServer::SQLiteIDBBackingStore::revertGeneratedKeyNumber):
(WebCore::IDBServer::SQLiteIDBBackingStore::maybeUpdateKeyGeneratorNumber):
(WebCore::IDBServer::SQLiteIDBBackingStore::openCursor):
(WebCore::IDBServer::SQLiteIDBBackingStore::iterateCursor):
(WebCore::IDBServer::SQLiteIDBBackingStore::prefetchCursor):
(WebCore::IDBServer::SQLiteIDBBackingStore::infoForObjectStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteBackingStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::close):
(WebCore::IDBServer::SQLiteIDBBackingStore::hasTransaction const):
(WebCore::IDBServer::SQLiteIDBBackingStore::databaseSize const): Deleted.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::UniqueIDBDatabase):
(WebCore::IDBServer::UniqueIDBDatabase::~UniqueIDBDatabase):
(WebCore::IDBServer::UniqueIDBDatabase::deleteBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::performUnconditionalDeleteBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::shutdownForClose):
(WebCore::IDBServer::UniqueIDBDatabase::performStartVersionChangeTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::openBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::performCreateObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::performDeleteObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::performRenameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::performClearObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::performCreateIndex):
(WebCore::IDBServer::UniqueIDBDatabase::performDeleteIndex):
(WebCore::IDBServer::UniqueIDBDatabase::performRenameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::performGetRecord):
(WebCore::IDBServer::UniqueIDBDatabase::performGetIndexRecord):
(WebCore::IDBServer::UniqueIDBDatabase::performGetAllRecords):
(WebCore::IDBServer::UniqueIDBDatabase::performGetCount):
(WebCore::IDBServer::UniqueIDBDatabase::performDeleteRecord):
(WebCore::IDBServer::UniqueIDBDatabase::performOpenCursor):
(WebCore::IDBServer::UniqueIDBDatabase::performIterateCursor):
(WebCore::IDBServer::UniqueIDBDatabase::performPrefetchCursor):
(WebCore::IDBServer::UniqueIDBDatabase::performCommitTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::performAbortTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::performActivateTransactionInBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::abortTransactionOnMainThread):
(WebCore::IDBServer::UniqueIDBDatabase::commitTransactionOnMainThread):
(WebCore::IDBServer::UniqueIDBDatabase::suspend):
(WebCore::IDBServer::UniqueIDBDatabase::resume):
(WebCore::IDBServer::UniqueIDBDatabase::finishActiveTransactions): Deleted.

  • Modules/indexeddb/server/UniqueIDBDatabase.h:
11:08 AM Changeset in webkit [252786] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Add KillOldProcesses step before running JSC tests
https://bugs.webkit.org/show_bug.cgi?id=204525

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/factories.py:
11:00 AM Changeset in webkit [252785] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

Make CSSValuePool constructable
https://bugs.webkit.org/show_bug.cgi?id=204520

Patch by Chris Lord <Chris Lord> on 2019-11-22
Reviewed by Antti Koivisto.

No new tests, no new functionality.

  • css/CSSInheritedValue.h:
  • css/CSSRevertValue.h:
  • css/CSSUnsetValue.h:
  • css/CSSValuePool.cpp:

(WebCore::CSSValuePool::singleton):
(WebCore::CSSValuePool::CSSValuePool):

  • css/CSSValuePool.h:
11:00 AM Changeset in webkit [252784] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Try to fix build on an old MacOS version

Unreviewed.

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::commitTreeState):

10:57 AM Changeset in webkit [252783] by guijemont@igalia.com
  • 4 edits in trunk/JSTests

Skip tests that fail on arm and mips devices
https://bugs.webkit.org/show_bug.cgi?id=204522

Unreviewed gardening.

  • stress/generator-cell-with-type.js:
  • stress/stack-overflow-in-yarr-byteCompile.js:
  • stress/toctou-having-a-bad-time-new-array.js:
10:41 AM Changeset in webkit [252782] by Conrad Shultz
  • 3 edits in trunk/Source/WebKit

Remove -[_WKThumbnailView usesSnapshot/setUsesSnapshot:]
https://bugs.webkit.org/show_bug.cgi?id=150099

Reviewed by Tim Horton.

Remove some unused, no-op SPI. While we're here, remove a couple unneeded explicit
property syntheses.

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

(-[_WKThumbnailView setUsesSnapshot:]): Deleted.
(-[_WKThumbnailView usesSnapshot]): Deleted.

10:25 AM Changeset in webkit [252781] by Jonathan Bedard
  • 2 edits in trunk/Tools

run-javascriptcore-tests: Hide the output of binaries behind --verbose
https://bugs.webkit.org/show_bug.cgi?id=204386

Reviewed by Aakash Jain.

  • Scripts/run-javascriptcore-tests:

(runTest): Do not log binary output by default, always log test failures.

10:02 AM Changeset in webkit [252780] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[ews] Add basic commit-queue support in new EWS
https://bugs.webkit.org/show_bug.cgi?id=204517

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/config.json:
  • BuildSlaveSupport/ews-build/factories.py:
  • BuildSlaveSupport/ews-build/loadConfig.py:
9:51 AM Changeset in webkit [252779] by Jonathan Bedard
  • 2 edits in trunk/Tools

run-webkit-tests: Failing to run spindump shouldn't be fatal
https://bugs.webkit.org/show_bug.cgi?id=204518
<rdar://problem/57397417>

Reviewed by Aakash Jain.

  • Scripts/webkitpy/port/darwin.py:

(DarwinPort.sample_process): Catch script error.

9:25 AM Changeset in webkit [252778] by Chris Dumez
  • 11 edits in trunk

Speculative loading sometimes happens too early and is missing login cookies
https://bugs.webkit.org/show_bug.cgi?id=204305
<rdar://problem/57063840>

Reviewed by Antti Koivisto.

Source/WebKit:

Speculative loads were issued before receiving the response from the main resource. However,
the main resource may set important cookies that are thus missing from the speculative requests.

To address the issue we now delay speculative loads for first-party subresources until we've
received the response from the main resource. To avoid regressing PLT, we still warm up the
first-party subresources from disk right away and preconnect to the server.

No new tests, extended existing test.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::didReceiveMainResourceResponse):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):

  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:

(WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::didReceiveMainResourceResponse const):
(WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::markMainResourceResponseAsReceived):
(WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::addPostMainResourceResponseTask):
(WebKit::NetworkCache::SpeculativeLoadManager::shouldRegisterLoad):
(WebKit::NetworkCache::SpeculativeLoadManager::registerLoad):
(WebKit::NetworkCache::SpeculativeLoadManager::registerMainResourceLoadResponse):
(WebKit::NetworkCache::SpeculativeLoadManager::preconnectForSubresource):
(WebKit::NetworkCache::SpeculativeLoadManager::revalidateSubresource):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:
  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:

(WebKit::NetworkCache::SubresourceInfo::isFirstParty const):

  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:

LayoutTests:

Extend layout test coverage to make sure that the validation request contains the latest cookies
set by the main resource.

  • http/tests/cache/disk-cache/speculative-validation/resources/validation-request-frame.php:
  • http/tests/cache/disk-cache/speculative-validation/validation-request-expected.txt:
  • http/tests/cache/disk-cache/speculative-validation/validation-request.html:
9:08 AM Changeset in webkit [252777] by Brent Fulgham
  • 2 edits in trunk/Source/WTF

Unreviewed FTW build fix after r252687.

  • wtf/PlatformFTW.cmake:
8:37 AM Changeset in webkit [252776] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Line::inlineItemContentHeight should only call FormattingContext::geometryForBox when needed
https://bugs.webkit.org/show_bug.cgi?id=204516
<rdar://problem/57429153>

Reviewed by Antti Koivisto.

Line::inlineItemContentHeight is hot and geometryForBox() is a hash lookup. Let's not call it unless we need to.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::inlineItemContentHeight const):

7:28 AM Changeset in webkit [252775] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

Remove JSC 32bit ARMv7 and MipsEl old EWS queues
https://bugs.webkit.org/show_bug.cgi?id=204344

Patch by Paulo Matos <Paulo Matos> on 2019-11-22
Reviewed by Aakash Jain.

Remove JSC armv7 and mips from old EWS queue and fix bubbles
by removing them from old ews and adding them to new ews.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js:

(BubbleQueueServer):

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble):

  • QueueStatusServer/config/queues.py:
7:23 AM Changeset in webkit [252774] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Layout Test storage/indexeddb/modern/new-database-after-user-delete.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=204489

Unreviewed test gardening.

  • platform/win/TestExpectations:
6:55 AM Changeset in webkit [252773] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Support JSCOnly platform in test reporting
https://bugs.webkit.org/show_bug.cgi?id=204495

Patch by Paulo Matos <Paulo Matos> on 2019-11-22
Reviewed by Carlos Garcia Campos.

Add JSCOnly to possible platforms.

  • Scripts/run-javascriptcore-tests:

(configurationForUpload):

6:51 AM Changeset in webkit [252772] by Carlos Garcia Campos
  • 4 edits in trunk/Source

Unreviewed. Fix GTK/WPE debug build after r252770

Just remove the ASSERT instead, since it now always receive a newly created Ref.

Source/JavaScriptCore:

  • inspector/remote/glib/RemoteInspectorGlib.cpp:

(Inspector::RemoteInspector::setupConnection):

Source/WebDriver:

  • glib/SessionHostGlib.cpp:

(WebDriver::SessionHost::setupConnection):

6:42 AM Changeset in webkit [252771] by Carlos Garcia Campos
  • 4 edits in trunk/Source

Unreviewed. Fix GTK/WPE debug build after r252770

Source/JavaScriptCore:

  • inspector/remote/glib/RemoteInspectorGlib.cpp:

(Inspector::RemoteInspector::setupConnection):

Source/WebDriver:

  • glib/SessionHostGlib.cpp:

(WebDriver::SessionHost::setupConnection):

6:22 AM Changeset in webkit [252770] by Carlos Garcia Campos
  • 23 edits
    2 copies
    2 adds
    1 delete in trunk

[GTK][WPE] RemoteInspector: use sockets instead of DBus
https://bugs.webkit.org/show_bug.cgi?id=204503

Reviewed by Žan Doberšek.

Source/JavaScriptCore:

It turns out DBus is event slower than expected. Using GSockets API we can simplify the code and make it a lot
more efficient. This will drastically reduce the time to run WebDriver tests in the bots.

  • inspector/remote/RemoteInspector.h:
  • inspector/remote/glib/RemoteInspectorGlib.cpp:

(Inspector::RemoteInspector::start):
(Inspector::RemoteInspector::stopInternal):
(Inspector::RemoteInspector::setupConnection):
(Inspector::RemoteInspector::pushListingsNow):
(Inspector::RemoteInspector::pushListingsSoon):
(Inspector::RemoteInspector::sendAutomaticInspectionCandidateMessage):
(Inspector::RemoteInspector::sendMessageToRemote):

  • inspector/remote/glib/RemoteInspectorServer.cpp:

(Inspector::RemoteInspectorServer::~RemoteInspectorServer):
(Inspector::RemoteInspectorServer::start):
(Inspector::RemoteInspectorServer::incomingConnectionCallback):
(Inspector::RemoteInspectorServer::incomingConnection):
(Inspector::RemoteInspectorServer::setTargetList):
(Inspector::RemoteInspectorServer::setupInspectorClient):
(Inspector::RemoteInspectorServer::setup):
(Inspector::RemoteInspectorServer::close):
(Inspector::RemoteInspectorServer::connectionDidClose):
(Inspector::RemoteInspectorServer::sendMessageToBackend):
(Inspector::RemoteInspectorServer::sendMessageToFrontend):
(Inspector::RemoteInspectorServer::startAutomationSession):

  • inspector/remote/glib/RemoteInspectorServer.h:

(Inspector::RemoteInspectorServer::isRunning const):

Source/WebDriver:

Use GSockets API instead of DBus.

  • SessionHost.cpp:

(WebDriver::SessionHost::sendCommandToBackend):

  • SessionHost.h:
  • glib/SessionHostGlib.cpp:

(WebDriver::SessionHost::~SessionHost):
(WebDriver::SessionHost::isConnected const):
(WebDriver::ConnectToBrowserAsyncData::ConnectToBrowserAsyncData):
(WebDriver::SessionHost::launchBrowser):
(WebDriver::SessionHost::connectToBrowser):
(WebDriver::SessionHost::connectionDidClose):
(WebDriver::SessionHost::setupConnection):
(WebDriver::SessionHost::startAutomationSession):
(WebDriver::SessionHost::didStartAutomationSession):
(WebDriver::SessionHost::setTargetList):
(WebDriver::SessionHost::sendMessageToBackend):

  • socket/SessionHostSocket.cpp:

(WebDriver::SessionHost::sendMessageToBackend):

Source/WebKit:

Use GSockets API instead of DBus.

  • Platform/IPC/Connection.h:
  • SourcesGTK.txt: Remove GSocketMonitor that has been moved to WTF.
  • SourcesWPE.txt: Ditto.
  • UIProcess/glib/RemoteInspectorClient.cpp:

(WebKit::RemoteInspectorClient::RemoteInspectorClient):
(WebKit::RemoteInspectorClient::~RemoteInspectorClient):
(WebKit::RemoteInspectorClient::setupConnection):
(WebKit::RemoteInspectorClient::connectionDidClose):
(WebKit::RemoteInspectorClient::inspect):
(WebKit::RemoteInspectorClient::sendMessageToBackend):
(WebKit::RemoteInspectorClient::closeFromFrontend):

  • UIProcess/glib/RemoteInspectorClient.h:

Source/WTF:

Add SocketConnection class.

  • wtf/PlatformGTK.cmake:
  • wtf/PlatformWPE.cmake:
  • wtf/glib/GSocketMonitor.cpp: Renamed from Source/WebKit/Platform/IPC/glib/GSocketMonitor.cpp.

(WTF::GSocketMonitor::start):

  • wtf/glib/GSocketMonitor.h: Renamed from Source/WebKit/Platform/IPC/glib/GSocketMonitor.h.

(WTF::GSocketMonitor::isActive const):

  • wtf/glib/GTypedefs.h:
  • wtf/glib/GUniquePtr.h:
  • wtf/glib/SocketConnection.cpp: Added.

(WTF::SocketConnection::SocketConnection):
(WTF::SocketConnection::~SocketConnection):
(WTF::SocketConnection::read):
(WTF::SocketConnection::readMessage):
(WTF::SocketConnection::sendMessage):
(WTF::SocketConnection::write):
(WTF::SocketConnection::waitForSocketWritability):
(WTF::SocketConnection::close):
(WTF::SocketConnection::didClose):

  • wtf/glib/SocketConnection.h: Added.

(WTF::SocketConnection::create):
(WTF::SocketConnection::isClosed const):

Tools:

Update the unit tests to not use DBus.

  • TestWebKitAPI/Tests/WebKitGLib/TestAutomationSession.cpp:
5:28 AM Changeset in webkit [252769] by Chris Dumez
  • 5 edits
    3 moves
    1 add
    1 delete in trunk/LayoutTests

[ iOS Release ]: Layout Test http/tests/navigation/page-cache-domcache-pending-promise.html is a Flaky Timeout
https://bugs.webkit.org/show_bug.cgi?id=203373
<rdar://problem/56590038>

Reviewed by Youenn Fablet.

I am not able to reproduce the flakiness so this includes speculative fixes and better error handling so
that the test would hopefully fail with a message instead of timing out.

Speculative fixes:

  1. If the promise is resolved before we've navigated away, retry it asynchronously.
  2. If the promise is rejected before we've navigated away, retry it asynchronously instead of synchronously. I believe it is possible to prevent the navigation otherwise, in cases where the promise is rejected synchronously.
  • http/tests/navigation/page-cache-domcache-pending-promise-expected.txt:
  • http/tests/navigation/page-cache-domcache-pending-promise.html:
5:09 AM Changeset in webkit [252768] by Carlos Garcia Campos
  • 5 edits
    2 adds in trunk

File input should fire an 'input' event before the 'change' event
https://bugs.webkit.org/show_bug.cgi?id=204292

Reviewed by Wenson Hsieh.

Source/WebCore:

"Queue a task to first update the element's selected files so that it represents the user's selection, then fire
an event named input at the input element, with the bubbles attribute initialized to true, and finally fire an
event named change at the input element, with the bubbles attribute initialized to true."
https://html.spec.whatwg.org/#file-upload-state-(type=file):event-input

This will also fix WebDriver test imported/w3c/webdriver/tests/element_send_keys/events.py::test_file_upload in
safari driver.

Test: fast/forms/file/file-input-user-selection-events.html

  • html/FileInputType.cpp:

(WebCore::FileInputType::setFiles):

LayoutTests:

Add new test to check both events are fired now.

  • fast/forms/file/file-input-user-selection-events-expected.txt: Added.
  • fast/forms/file/file-input-user-selection-events.html: Added.
3:32 AM Changeset in webkit [252767] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Fix missing exception check in replaceUsingStringSearch().
https://bugs.webkit.org/show_bug.cgi?id=204496

Reviewed by Yusuke Suzuki.

The CachedCall constructor can throw OutOfMemory or StackOverflow errors.
This was caught by existing JSC stress tests when we run with a debug build.

Also placate the exception check validator in $vm's functionCallWithStackSize().

  • runtime/StringPrototype.cpp:

(JSC::replaceUsingStringSearch):

  • tools/JSDollarVM.cpp:

(JSC::functionCallWithStackSize):

1:39 AM Changeset in webkit [252766] by mark.lam@apple.com
  • 4 edits in trunk

replaceUsingStringSearch() should not use CachedCall with host functions.
https://bugs.webkit.org/show_bug.cgi?id=204494
<rdar://problem/57421078>

Reviewed by Ross Kirsling.

JSTests:

  • stress/string-replaceAll-2.js:

Source/JavaScriptCore:

The CachedCall mechanism does not support calling hist functions.

  • runtime/StringPrototype.cpp:

(JSC::replaceUsingStringSearch):

Nov 21, 2019:

10:46 PM Changeset in webkit [252765] by Ross Kirsling
  • 2 edits in trunk/JSTests

Unreviewed test262 gardening following r252680.

  • test262/expectations.yaml:

Mark eight test cases as passing.

10:01 PM Changeset in webkit [252764] by mitz@apple.com
  • 9 copies
    1 add in releases/Apple/Safari Technology Preview/Safari Technology Preview 96

Added a tag for Safari Technology Preview release 96.

9:41 PM Changeset in webkit [252763] by sbarati@apple.com
  • 14 edits
    9 adds in trunk

GetByStatus should not say it took the slow path for multiple identifiers and should have a way to indicate if the StructureStubInfo it saw took the slow path
https://bugs.webkit.org/show_bug.cgi?id=204435

Reviewed by Tadeu Zagallo.

JSTests:

  • microbenchmarks/get-by-val-polymorphic-ic-1.js: Added.

(assert):
(test1.foo):
(test1):

  • microbenchmarks/get-by-val-polymorphic-ic-2.js: Added.

(assert):
(test2.foo):
(test2):

  • microbenchmarks/get-by-val-polymorphic-ic-3.js: Added.

(assert):
(test3.foo):
(test3.args):
(test3):

  • microbenchmarks/get-by-val-polymorphic-ic-4.js: Added.

(assert):
(test4.foo):
(test4.capture):
(test4.args):
(test4):

  • microbenchmarks/get-by-val-polymorphic-ic-5.js: Added.

(assert):
(test5.foo):
(test5.capture):
(test5.args):
(test5):

  • microbenchmarks/get-by-val-polymorphic-ic-6.js: Added.

(assert):
(test6.foo):
(test6.capture):
(test6.args):
(test6):

  • microbenchmarks/get-by-val-polymorphic-ic-7.js: Added.

(assert):
(test7.foo):
(test7):

  • microbenchmarks/get-by-val-polymorphic-ic-8.js: Added.

(assert):
(test7.foo):
(test7):

  • microbenchmarks/get-by-val-polymorphic-ic-9.js: Added.

(assert):
(test7.foo):
(test7):

Source/JavaScriptCore:

I discovered some issues with get by val ICs when re-running the microbenchmarks
I wrote. I noticed that we were faster when not running with the DFG. The reason
for this is that we were only emitting a get by val IC in the DFG/FTL when we
observe the GetByStatus says it didn't "go to the slow path". The logic in GetByStatus
for building up a variant list was wrong for ICs with multiple identifiers. We have
a consistency check when building up the list to ensure that no two variants have
structure sets which overlap, because we wouldn't know which one to choose. However,
we were accidentally saying two GetByIdVariants overlap when they had different identifiers.
This patch fixes that bug by also doing an identifier comparison check. Two GetByIdVariants
with different identifiers do not overlap.

We also used to say a GetByStatus "goes to the slow path" if any of the cases were an
array-like load. I wrote that code thinking that ArrayProfile would just handle it.
However, sometimes we have a get by val IC that both has string properties and int32 properties.
In these kinds of scenarios, an IC is super profitable. This patch now distinguishes
between a GetByStatus saying "we're a slow path" and if we actually observed the StructureStubInfo
go to the slow path. In the DFG/FTL, we only forgo emitting a get by val IC when observing a
prior StructureStubInfo that went to the slow path.

I also realized are call to StructureStubInfo::considerCaching was wrong for get by val ICs.
We were only considering the Structure in isolation, not the { Structure, Identifier }
pair. For get by val, we need to consider the pair together, since {s1, "a"}
and {s1, "b"} will be two different access cases.

This patch demonstrates that on these microbenchmarks, get by val ICs can
be between 50-200% faster.

  • bytecode/GetByIdVariant.cpp:

(JSC::GetByIdVariant::dumpInContext const):

  • bytecode/GetByIdVariant.h:

(JSC::GetByIdVariant::overlaps):

  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::GetByStatus):
(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::GetByStatus::makesCalls const):
(JSC::GetByStatus::slowVersion const):
(JSC::GetByStatus::merge):
(JSC::GetByStatus::dump const):

  • bytecode/GetByStatus.h:

(JSC::GetByStatus::GetByStatus):
(JSC::GetByStatus::takesSlowPath const):
(JSC::GetByStatus::observedStructureStubInfoSlowPath const):

  • bytecode/ICStatusUtils.h:

(JSC::appendICStatusVariant):

  • bytecode/InByIdVariant.h:

(JSC::InByIdVariant::overlaps):

  • bytecode/InstanceOfVariant.h:

(JSC::InstanceOfVariant::overlaps):

  • bytecode/PutByIdVariant.h:

(JSC::PutByIdVariant::overlaps):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::visitWeakReferences):

  • bytecode/StructureStubInfo.h:

(JSC::StructureStubInfo::considerCaching):

  • dfg/DFGByteCodeParser.cpp:

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

  • jit/JITOperations.cpp:
9:17 PM Changeset in webkit [252762] by jer.noble@apple.com
  • 26 edits
    4 adds in trunk

Experimental support for HDR media query
https://bugs.webkit.org/show_bug.cgi?id=204422

Reviewed by Eric Carlson.

Source/WebCore:

Test: fast/media/mq-highdynamicrange-live-update.html

Add support for the dynamic-range: media query.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSValueKeywords.in:
  • css/MediaFeatureNames.h:
  • css/MediaQueryEvaluator.cpp:

(WebCore::dynamicRangeEvaluate):

  • css/MediaQueryExpression.cpp:

(WebCore::featureWithValidIdent):

  • page/Chrome.cpp:

(WebCore::Chrome::windowScreenDidChange):

  • page/Settings.yaml:
  • page/SettingsBase.h:
  • platform/PlatformScreen.h:
  • platform/ScreenProperties.h:

(WebCore::ScreenData::encode const):
(WebCore::ScreenData::decode):

  • platform/ios/PlatformScreenIOS.mm:

(WebCore::screenSupportsHighDynamicRange):

  • platform/mac/PlatformScreenMac.mm:

(WebCore::collectScreenProperties):
(WebCore::screenSupportsHighDynamicRange):

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::forcedSupportsHighDynamicRangeValue const):
(WebCore::InternalSettings::setForcedSupportsHighDynamicRangeValue):

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/PlatformMac.cmake:
  • pal/cocoa/MediaToolboxSoftLink.cpp: Renamed from Source/WebCore/platform/cocoa/MediaToolboxSoftLink.h.
  • pal/cocoa/MediaToolboxSoftLink.h: Renamed from Source/WebCore/platform/cocoa/MediaToolboxSoftLink.cpp.

Source/WebKit:

Notify the WebContent process of updated screen properties when the screen's
color space changes.

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

(-[WKWindowVisibilityObserver startObserving:]):
(-[WKWindowVisibilityObserver stopObserving:]):
(-[WKWindowVisibilityObserver _screenDidChangeColorSpace:]):
(WebKit::WebViewImpl::screenDidChangeColorSpace):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::screenPropertiesDidChange):

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

(WebKit::WebProcess::setScreenProperties):

LayoutTests:

  • fast/media/mq-highdynamicrange-live-update-expected.txt: Added.
  • fast/media/mq-highdynamicrange-live-update.html: Added.
9:09 PM Changeset in webkit [252761] by rniwa@webkit.org
  • 7 edits in trunk

Scrolling to fragment shouldn't happen as a part of updating style
https://bugs.webkit.org/show_bug.cgi?id=203982

Reviewed by Simon Fraser.

Source/WebCore:

Don't scroll to the current URL's fragment at the end of resolveStyle. Instead, schedule a task
to scroll to the current URL's fragment when all pending stylesheets have finished loading.

This patch also moves the code which sets a Document's m_gotoAnchorNeededAfterStylesheetsLoadflag
from FrameView to FrameLoader as FrameView shouldn't be relying on the states of pending stylesheets.

  • dom/Document.cpp:

(WebCore::Document::resolveStyle): Removed the code to scroll to the current URL's fragment.
(WebCore::Document::didRemoveAllPendingStylesheet): Added a code to schedule a task to scoll.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::scrollToFragmentWithParentBoundary): Moved the code to trigger the code
in didRemoveAllPendingStylesheet from FrameView.

  • page/FrameView.cpp:

(WebCore::FrameView::scrollToFragment):
(WebCore::FrameView::scrollToFragmentInternal): Renamed from scrollToAnchor since this function sets
the current anchor. Also removed the code which defers the scrolling based on pending stylesheets'
states since such a code doesn't belong in FrameView.

  • page/FrameView.h:

LayoutTests:

Made an existing test more robust.

  • fast/parser/adoption-agency-unload-iframe-4.html: Made the iframe's data URL not cachable.
7:56 PM Changeset in webkit [252760] by mmaxfield@apple.com
  • 38 edits
    2 deletes in trunk

Remove font-variant @font-face descriptor
https://bugs.webkit.org/show_bug.cgi?id=203179

Reviewed by Simon Fraser.

Source/WebCore:

As per https://github.com/w3c/csswg-drafts/issues/2531

Deleted relevant tests.

  • css/CSSFontFace.cpp:

(WebCore::CSSFontFace::font):
(WebCore::CSSFontFace::setVariantLigatures): Deleted.
(WebCore::CSSFontFace::setVariantPosition): Deleted.
(WebCore::CSSFontFace::setVariantCaps): Deleted.
(WebCore::CSSFontFace::setVariantNumeric): Deleted.
(WebCore::CSSFontFace::setVariantAlternates): Deleted.
(WebCore::CSSFontFace::setVariantEastAsian): Deleted.

  • css/CSSFontFace.h:
  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::load):
(WebCore::CSSFontFaceSource::font):

  • css/CSSFontFaceSource.h:
  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::addFontFaceRule):

  • css/FontFace.cpp:

(WebCore::FontFace::create):
(WebCore::FontFace::setVariant): Deleted.
(WebCore::FontFace::variant const): Deleted.

  • css/FontFace.h:
  • css/FontFace.idl:
  • loader/cache/CachedFont.cpp:

(WebCore::CachedFont::createFont):
(WebCore::CachedFont::platformDataFromCustomData):

  • loader/cache/CachedFont.h:
  • loader/cache/CachedSVGFont.cpp:

(WebCore::CachedSVGFont::createFont):
(WebCore::CachedSVGFont::platformDataFromCustomData):

  • loader/cache/CachedSVGFont.h:
  • platform/graphics/FontCache.cpp:

(WebCore::FontPlatformDataCacheKey::FontPlatformDataCacheKey):
(WebCore::FontPlatformDataCacheKey::operator== const):
(WebCore::FontPlatformDataCacheKeyHash::hash):
(WebCore::FontCache::getCachedFontPlatformData):
(WebCore::FontCache::fontForFamily):

  • platform/graphics/FontCache.h:

(WebCore::FontCache::fontForFamily):
(WebCore::FontCache::getCachedFontPlatformData):
(WebCore::FontCache::createFontPlatformDataForTesting):

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::preparePlatformFont):
(WebCore::fontWithFamily):
(WebCore::FontCache::createFontPlatformData):
(WebCore::FontCache::systemFallbackForCharacters):

  • platform/graphics/cocoa/FontCacheCoreText.h:
  • platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:

(WebCore::FontFamilySpecificationCoreText::fontRanges const):

  • platform/graphics/mac/FontCustomPlatformData.cpp:

(WebCore::FontCustomPlatformData::fontPlatformData):

  • platform/graphics/mac/FontCustomPlatformData.h:

LayoutTests:

Delete tests for the removed feature.

  • css3/font-variant-font-face-all-expected.html: Deleted.
  • css3/font-variant-font-face-all.html: Deleted.
  • css3/font-variant-font-face-override-expected.html:
  • css3/font-variant-font-face-override.html:
  • fast/text/font-face-empty-string-expected.txt:
  • fast/text/font-face-empty-string.html:
  • fast/text/font-face-javascript-expected.txt:
  • fast/text/font-face-javascript.html:
7:01 PM Changeset in webkit [252759] by BJ Burg
  • 2 edits in trunk/Source/WebKit

Unreviewed, sort WebKit's project file after changes in r252702 and r252637.

  • WebKit.xcodeproj/project.pbxproj:
6:16 PM Changeset in webkit [252758] by mark.lam@apple.com
  • 4 edits
    1 add
    1 delete in trunk

Fix broken String.prototype.replace() and replaceAll().
https://bugs.webkit.org/show_bug.cgi?id=204479
<rdar://problem/57354854>

Reviewed by Ross Kirsling and Yusuke Suzuki.

JSTests:

  • ChakraCore.yaml:
  • ChakraCore/test/Strings/replace.baseline-jsc: Removed.
  • We no longer need this because we've fixed the spec compliance issue in replace().
  • stress/string-replaceAll-2.js: Added.

Source/JavaScriptCore:

String.prototype.replace() regressed due to r252683: <https://trac.webkit.org/r252683>
for webkit.org/b/202471. The patch failed to handle InternalFunctions.

This patch also fixed a spec compliance bug for String.prototype.replace() i.e.
the replaceValue needs to be evaluated before we check if there's a match in the
source string.
Ref: 21.1.3.16-6 at https://www.ecma-international.org/ecma-262/10.0/#sec-string.prototype.replace

For String.prototype.replaceAll(), make sure it "behaves just like
String.prototype.replace if searchValue is a global regular expression".
Ref: https://github.com/tc39/proposal-string-replaceall

r252683 also made replaceUsingStringSearch() work the same way as
replaceUsingRegExpSearch(). I think this is the wrong trade off to make.
replaceUsingRegExpSearch() expects each search leg to do a RegExp search, which
is inherently expensive. We shouldn't make string searches slower just because
the RegExp search does it that way.

However, at https://bugs.webkit.org/show_bug.cgi?id=202471#c22, Ross pointed out
that JetStream 2 results appeared to be neutral. I think we should double check
with a micro-benchmark as well. I'll leave this for a later patch. For now, the
goal of this patch is simply to achieve correctness.
Ref: https://bugs.webkit.org/show_bug.cgi?id=204481

  • runtime/StringPrototype.cpp:

(JSC::replaceUsingRegExpSearch):
(JSC::replaceUsingStringSearch):

5:32 PM Changeset in webkit [252757] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Crash in com.apple.WebKit.WebContent at WebKit: WebKit::StorageAreaMap::loadValuesIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=204459
<rdar://problem/57383446>

Reviewed by Geoffrey Garen.

If m_storageMapID can be null if connect() fails.

  • WebProcess/WebStorage/StorageAreaMap.cpp:

(WebKit::StorageAreaMap::setItem):
(WebKit::StorageAreaMap::removeItem):
(WebKit::StorageAreaMap::clear):
(WebKit::StorageAreaMap::loadValuesIfNeeded):

4:54 PM Changeset in webkit [252756] by pvollan@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

Fix Win64 compile errors
https://bugs.webkit.org/show_bug.cgi?id=204471

Reviewed by Brent Fulgham.

Fix warnings being treated as errors.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::requiresIdentifierNameMatch const):
(JSC::AccessCase::requiresInt32PropertyCheck const):
(JSC::AccessCase::needsScratchFPR const):
(JSC::AccessCase::doesCalls const):
(JSC::AccessCase::canReplace const):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::executeOSRExit):

  • jit/JITOperations.cpp:

(JSC::profiledAdd):

  • jit/Repatch.cpp:

(JSC::appropriateOptimizingGetByFunction):
(JSC::appropriateGetByFunction):

  • tools/JSDollarVM.cpp:

(JSC::functionCallWithStackSize):

4:32 PM Changeset in webkit [252755] by commit-queue@webkit.org
  • 7 edits in trunk/Source

Ignore the requests to enter/exit video fullscreen/picture-in-picture if the requesting mode is the same as the current mode
https://bugs.webkit.org/show_bug.cgi?id=204461

Patch by Peng Liu <Peng Liu> on 2019-11-21
Reviewed by Jer Noble.

Source/WebCore:

Change the order of enum VideoPresentationMode and add some log messages regarding presentation mode change.
Those changes make the debugging easier.

Covered by existing test cases.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::enterFullscreen):
(WebCore::HTMLMediaElement::didBecomeFullscreenElement):
(WebCore::HTMLMediaElement::waitForPreparedForInlineThen):
(WebCore::HTMLMediaElement::setVideoFullscreenLayer):

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::webkitSetPresentationMode):
(WebCore::HTMLVideoElement::setFullscreenMode):
(WebCore::HTMLVideoElement::fullscreenModeChanged):

  • html/HTMLVideoElement.h:
  • html/HTMLVideoElement.idl:

Source/WebKit:

In enterVideoFullscreenForVideoElement() and exitVideoFullscreenForVideoElement(),
we can ignore the request if the targeting mode is the same as the current one.

  • WebProcess/cocoa/VideoFullscreenManager.mm:

(WebKit::VideoFullscreenManager::enterVideoFullscreenForVideoElement):
(WebKit::VideoFullscreenManager::exitVideoFullscreenForVideoElement):

3:35 PM Changeset in webkit [252754] by ysuzuki@apple.com
  • 10 edits
    1 add in trunk

Unreviewed, rolling in again, regression is not caused by it
https://bugs.webkit.org/show_bug.cgi?id=202471

JSTests:

  • stress/string-replaceall.js: Added.

(shouldBe):
(shouldThrowTypeError):
(shouldBe.string_appeared_here.replaceAll.Symbol.match):

Source/JavaScriptCore:

  • builtins/BuiltinNames.h:
  • builtins/StringPrototype.js:

(replaceAll):

  • runtime/StringPrototype.cpp:

(JSC::StringPrototype::finishCreation):
(JSC::jsSpliceSubstringsWithSeparators):
(JSC::replaceUsingStringSearch):
(JSC::replace):
(JSC::stringProtoFuncReplaceUsingStringSearch):
(JSC::stringProtoFuncReplaceAllUsingStringSearch):

Source/WTF:

  • wtf/text/StringCommon.h:

(WTF::findCommon):

LayoutTests:

  • js/Object-getOwnPropertyNames-expected.txt:
  • js/script-tests/Object-getOwnPropertyNames.js:
3:18 PM Changeset in webkit [252753] by commit-queue@webkit.org
  • 10 edits
    1 delete in trunk

Unreviewed, rolling out r252683 and r252721.
https://bugs.webkit.org/show_bug.cgi?id=204475

13% regression in JetStream2/prepack-wtb (Requested by
yusukesuzuki on #webkit).

Reverted changesets:

"Implement String.prototype.replaceAll"
https://bugs.webkit.org/show_bug.cgi?id=202471
https://trac.webkit.org/changeset/252683

"Unreviewed, address Darin's feedback on r252683."
https://trac.webkit.org/changeset/252721

2:42 PM Changeset in webkit [252752] by Alan Coon
  • 1 copy in tags/Safari-608.5.1

Tag Safari-608.5.1.

1:47 PM Changeset in webkit [252751] by Justin Fan
  • 2 edits in trunk/Source/WebCore

[WebGL] Fix framebufferTexture2D with DEPTH_STENCIL_ATTACHMENT on ANGLE
https://bugs.webkit.org/show_bug.cgi?id=204433

Reviewed by Dean Jackson.

ANGLE expects requests for DEPTH_STENCIL_ATTACHMENT to not be split into two calls, as previous WebGL 1 backend required.

No new tests. Prevents conformance/extensions/webgl-depth-texture.html regression when run with the ANGLE backend.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::framebufferTexture2D):

1:42 PM Changeset in webkit [252750] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Cache trailing trimmable width.
https://bugs.webkit.org/show_bug.cgi?id=204466
<rdar://problem/57403888>

Reviewed by Antti Koivisto.

Line::trailingTrimmableWidth() is called every time we pass a run to the line breaker because their accumulated widths are part of the "available width context".

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::TrimmableContent::append):
(WebCore::Layout::Line::trailingTrimmableWidth const): Deleted.

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::trailingTrimmableWidth const):
(WebCore::Layout::Line::TrimmableContent::width const):
(WebCore::Layout::Line::TrimmableContent::runs):
(WebCore::Layout::Line::TrimmableContent::isEmpty const):
(WebCore::Layout::Line::TrimmableContent::clear):

1:30 PM Changeset in webkit [252749] by Simon Fraser
  • 25 edits
    1 move in trunk/LayoutTests

Flaky Test: compositing/backing/backing-store-attachment-with-rotation.html
https://bugs.webkit.org/show_bug.cgi?id=204394

Reviewed by Myles C. Maxfield.

Move compositing-overlap-utils.js to compositing/resources and use its layerTreeWithoutTransforms()
function to not dump transforms for the flakey test.

Adjust other tests which use this JS file.

  • compositing/backing/backing-store-attachment-with-rotation-expected.txt:
  • compositing/backing/backing-store-attachment-with-rotation.html:
  • compositing/layer-creation/animation-overlap-with-children.html:
  • compositing/layer-creation/mismatched-rotated-transform-animation-overlap.html:
  • compositing/layer-creation/mismatched-rotated-transform-transition-overlap.html:
  • compositing/layer-creation/mismatched-transform-transition-overlap.html:
  • compositing/layer-creation/multiple-keyframes-animation-overlap.html:
  • compositing/layer-creation/scale-rotation-animation-overlap.html:
  • compositing/layer-creation/scale-rotation-transition-overlap.html:
  • compositing/layer-creation/translate-animation-overlap.html:
  • compositing/layer-creation/translate-scale-animation-overlap.html:
  • compositing/layer-creation/translate-scale-transition-overlap.html:
  • compositing/layer-creation/translate-transition-overlap.html:
  • compositing/resources/compositing-test-utils.js: Renamed from LayoutTests/compositing/layer-creation/resources/compositing-overlap-utils.js.

(makeDots):
(layerTreeWithoutTransforms):
(dumpLayersWithoutTransforms):

  • legacy-animation-engine/compositing/layer-creation/animation-overlap-with-children.html:
  • legacy-animation-engine/compositing/layer-creation/mismatched-rotated-transform-animation-overlap.html:
  • legacy-animation-engine/compositing/layer-creation/mismatched-rotated-transform-transition-overlap.html:
  • legacy-animation-engine/compositing/layer-creation/mismatched-transform-transition-overlap.html:
  • legacy-animation-engine/compositing/layer-creation/multiple-keyframes-animation-overlap.html:
  • legacy-animation-engine/compositing/layer-creation/scale-rotation-animation-overlap.html:
  • legacy-animation-engine/compositing/layer-creation/scale-rotation-transition-overlap.html:
  • legacy-animation-engine/compositing/layer-creation/translate-animation-overlap.html:
  • legacy-animation-engine/compositing/layer-creation/translate-scale-animation-overlap.html:
  • legacy-animation-engine/compositing/layer-creation/translate-scale-transition-overlap.html:
  • legacy-animation-engine/compositing/layer-creation/translate-transition-overlap.html:
1:26 PM Changeset in webkit [252748] by Chris Fleizach
  • 3 edits in trunk/Source/WebCore

AX: support more attributes for AXIsolatedTreeNode
https://bugs.webkit.org/show_bug.cgi?id=204241
<rdar://problem/57237606>

Reviewed by Zalan Bujtas.

Add more attributes to the accessibility isolated tree model.

  • accessibility/isolatedtree/AXIsolatedTreeNode.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):

  • accessibility/isolatedtree/AXIsolatedTreeNode.h:
1:11 PM Changeset in webkit [252747] by Nikita Vasilyev
  • 8 edits in trunk

Web Inspector: Outline sRGB-safe areas on P3 color picker
https://bugs.webkit.org/show_bug.cgi?id=203533
<rdar://problem/56688057>

Reviewed by Brian Burg.

Source/WebInspectorUI:

Visualize the edge of sRGB gamut as a white line.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Models/Color.js:

(WI.Color.displayP3toSRGB.multiplyMatrixByVector):
(WI.Color.displayP3toSRGB):
(WI.Color._toLinearLight):
(WI.Color._gammaCorrect):
Use equations from CSS Color Module Level 4.

  • UserInterface/Views/ColorSquare.css:

(.color-square):
(.color-square > .crosshair):
Place the crosshair above the sRGB edge line.

(.color-square .svg-root):
(.color-square .srgb-edge):
(.color-square .srgb-label):
(.color-square .srgb-label:hover):
(.color-square .srgb-label:hover + .svg-root > .srgb-edge):
(@media (-webkit-device-pixel-ratio: 1)):
Make the optical weight of the line on non-retina screens the same as on retina screens.

  • UserInterface/Views/ColorSquare.js:

(WI.ColorSquare):
(WI.ColorSquare.prototype.set tintedColor):
(WI.ColorSquare.prototype._updateBaseColor):
(WI.ColorSquare.prototype._drawSRGBOutline):

LayoutTests:

Test WI.Color.displayP3toSRGB.

LayoutTests:

  • inspector/model/color-expected.txt:
  • inspector/model/color.html:
12:27 PM Changeset in webkit [252746] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKitLegacy/mac

Remove unneeded code that annotated DOMHTMLElement as conforming to UITextInputTraits protocol
https://bugs.webkit.org/show_bug.cgi?id=204464

Reviewed by Wenson Hsieh.

DOMHTMLElement never really conformed to the UITextInputTraits protocol. It was annotated as doing so
in order to register with the runtime as part of advertising that it implemented two UITextInputTraits_Private
messages in r222487: -acceptsAutofilledLoginCredentials and -representingPageURL. These messages were
subsequently removed in r222991 (over years ago). So, we do not need to continue advertising UITextInputTraits
conformance.

  • DOM/DOMHTMLInputElement.h:
12:06 PM Changeset in webkit [252745] by Devin Rousso
  • 7 edits in trunk/Source/WebInspectorUI

Web Inspector: call frames from blackboxed scripts should be visually distinct
https://bugs.webkit.org/show_bug.cgi?id=204424

Reviewed by Timothy Hatcher.

Seeing "Deferred pause from blackboxed script" in the Pause Reason does indicate that
something in the Call Stack was blackboxed, but it doesn't clarify what was blackboxed.

Given that the debugger effectively ignores blackboxed scripts, we should distinguish call
frames that were ignored so that it's clear how the current pause location was reached.

  • UserInterface/Views/CallFrameTreeElement.js:

(WI.CallFrameTreeElement):
(WI.CallFrameTreeElement.prototype.onattach):

  • UserInterface/Views/CallFrameTreeElement.css:

(.tree-outline .item.call-frame.blackboxed:not(.selected)): Added.
Make blackboxed call frames 50% opaque when not selected. Add additional explanatory text to
the end of the tooltip when hovering blackboxed call frame tree elements.

  • UserInterface/Views/ContextMenuUtilities.js:

(WI.appendContextMenuItemsForSourceCode):

  • UserInterface/Views/SourceCodeTreeElement.js:

(WI.SourceCodeTreeElement.prototype._updateToggleBlackboxImageElementState):
Update tooltip/contextmenu text to include "blacboxing" so functionality is clearer.

  • UserInterface/Models/SourceCodeLocation.js:

(WI.SourceCodeLocation.prototype.populateLiveDisplayLocationTooltip):
Allow a suffix to be added to the end of the live location.

  • Localizations/en.lproj/localizedStrings.js:
11:53 AM Changeset in webkit [252744] by Kate Cheney
  • 2 edits in trunk/LayoutTests

REGRESSION (r234440): [Mac WK2 ] Layout Test http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-but-access-from-wrong-frame.html is flaky timeout (194164)
<https://bugs.webkit.org/show_bug.cgi?id=194164>
<rdar://problem/48011649>

Reviewed by John Wilander.

Test no longer flaky.

  • platform/mac-wk2/TestExpectations:
11:50 AM Changeset in webkit [252743] by Wenson Hsieh
  • 5 edits in trunk

[iOS] Web process crashes when attempting to request document context in a textarea
https://bugs.webkit.org/show_bug.cgi?id=204455
<rdar://problem/57383975>

Reviewed by Tim Horton.

Source/WebCore:

Make WebCore::rangesOverlap robust in the case where the ranges' container nodes are in different tree scopes.
Currently, compareBoundaryPoints returns an exception in this scenario, which rangesOverlap does not expect.
As a result, we crash when releasing the return value after boundary point comparison. To fix this, just upgrade
the ownerDocument check in rangesOverlap to check for tree scopes instead, via the
areNodesConnectedInSameTreeScope helper function.

Test: WebKit.DocumentEditingContextSpatialRequestInTextField

  • dom/Range.cpp:

(WebCore::rangesOverlap):

Tools:

Add a test to verify that we don't crash (and are still able to retrieve character rects).

  • TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:

(-[UIWKDocumentContext markedTextRects]):
(-[UIWKDocumentContext textRects]):

  • TestWebKitAPI/ios/UIKitSPI.h:
11:31 AM Changeset in webkit [252742] by Antti Koivisto
  • 5 edits in trunk/Source/WebCore

Tighten ScrollingTreeNode tree mutations
https://bugs.webkit.org/show_bug.cgi?id=204451

Reviewed by Simon Fraser.

  • Use plain Vector instead of std::unique_ptr<Vector> for children
  • Use Vector<Ref> instead of Vector<RefPtr>
  • Remove non-const ScrollingTreeNode::children() accessor
  • Add relase assert that all mutations happen during ScrollingTree::commitTreeState
  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::commitTreeState):
(WebCore::ScrollingTree::updateTreeFromStateNode):
(WebCore::ScrollingTree::applyLayerPositionsRecursive):
(WebCore::ScrollingTree::notifyRelatedNodesRecursive):

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::inCommitTreeState const):

  • page/scrolling/ScrollingTreeNode.cpp:

(WebCore::ScrollingTreeNode::appendChild):
(WebCore::ScrollingTreeNode::removeChild):
(WebCore::ScrollingTreeNode::removeAllChildren):

Encapsulate mutations to these functions.

(WebCore::ScrollingTreeNode::dump const):
(WebCore::ScrollingTreeNode::scrollingNodeForPoint const):

  • page/scrolling/ScrollingTreeNode.h:

(WebCore::ScrollingTreeNode::children const):
(WebCore::ScrollingTreeNode::children): Deleted.

10:53 AM Changeset in webkit [252741] by dino@apple.com
  • 5 edits in trunk/Source/WebCore

Implement accelerated video-to-texture upload path for ANGLE backend for WebGL on desktop
https://bugs.webkit.org/show_bug.cgi?id=200904

Support GPU-accelerated video uploads to WebGL textures with ANGLE.

Uses the IOSurface path, as the CVOpenGLTextureCache seems to have
been disabled at the OS level, even on top-of-tree WebKit without
using ANGLE.

Uses the EGL_ANGLE_iosurface_client_buffer extension to import
IOSurfaces; reuses all of the existing shader and OpenGL code.

Necessary other fixes to GraphicsContext3D's ANGLE backend: supporting
context sharing, and querying the selected EGLConfig.

Covered by WebGL conformance tests. Verified speedup with
"Animating textures in WebGL" MDN article.

Patch by Kenneth Russell <kbr@chromium.org> on 2019-11-21
Reviewed by Dean Jackson.

  • platform/graphics/GraphicsContext3D.h:

(WebCore::GraphicsContext3D::platformDisplay const):
(WebCore::GraphicsContext3D::platformConfig const):

  • platform/graphics/cocoa/GraphicsContext3DCocoa.mm:

(WebCore::GraphicsContext3D::GraphicsContext3D):

  • platform/graphics/cv/VideoTextureCopierCV.cpp:

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

  • platform/graphics/cv/VideoTextureCopierCV.h:
9:52 AM Changeset in webkit [252740] by Matt Lewis
  • 2 edits in trunk/Tools

Fix triggers for catalina debug and webgl testers.
https://bugs.webkit.org/show_bug.cgi?id=204456

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
9:39 AM Changeset in webkit [252739] by Jonathan Bedard
  • 2 edits in trunk/Tools

build.webkit.org: Forward results database credentials to jsc test runs
https://bugs.webkit.org/show_bug.cgi?id=204453

Reviewed by Aakash Jain.

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

(RunJavaScriptCoreTests.init): Do not log environment with credentials in it.
(RunJavaScriptCoreTests.start): Add results database API key to environment.
(RunLLINTCLoopTests.init): Do not log environment with credentials in it.
(RunLLINTCLoopTests.start): Add results database API key to environment.
(Run32bitJSCTests.init): Do not log environment with credentials in it.
(Run32bitJSCTests.start): Add results database API key to environment.

9:08 AM Changeset in webkit [252738] by Jonathan Bedard
  • 3 edits in trunk/Tools

run-webkit-tests: Clean-up simulator processes after tearing down simulators
https://bugs.webkit.org/show_bug.cgi?id=204416

Reviewed by Simon Fraser.

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

(MockExecutive.running_pids): Make function Python 3 compatible.

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDeviceManager.tear_down): Kill any CoreSimulator processes.

9:07 AM Changeset in webkit [252737] by youenn@apple.com
  • 5 edits in trunk

Regression (r252660): Layout Test platform/ios/mediastream/audio-muted-in-background-tab.html is failing
https://bugs.webkit.org/show_bug.cgi?id=204408
<rdar://problem/57364353>

Reviewed by Eric Carlson.

Source/WebCore:

Covered by no longer failing test.

  • platform/mediastream/mac/CoreAudioCaptureSource.h:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp:

Now that we are using CoreAudioCaptureSource, we need to use its factory to interrupt/uninterrupt the active source.

LayoutTests:

  • platform/ios/TestExpectations:
8:50 AM Changeset in webkit [252736] by Antti Koivisto
  • 13 edits in trunk/Source/WebCore

MediaQueryEvaluator shouldn't know about style resolver
https://bugs.webkit.org/show_bug.cgi?id=204449

Reviewed by Zalan Bujtas.

Gather dynamic dependencies from MediaQueryEvaluator into a struct rather than writing them directly to a resolver.

  • css/MediaQueryEvaluator.cpp:

(WebCore::MediaQueryEvaluator::evaluate const):

Delete a duplicate version of evaluate() that returned partial dependencies.

  • css/MediaQueryEvaluator.h:

(WebCore::MediaQueryDynamicResults::append):

  • css/parser/SizesAttributeParser.cpp:

(WebCore::SizesAttributeParser::mediaConditionMatches):

This doesn't need resolver, the picture element implementation takes care of the media query dependencies.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):

  • html/HTMLPictureElement.cpp:

(WebCore::HTMLPictureElement::viewportChangeAffectedPicture const):
(WebCore::HTMLPictureElement::appearanceChangeAffectedPicture const):

Store MediaQueryDynamicResults struct instead of individual vectors.

  • style/RuleSet.cpp:

(WebCore::Style::RuleSet::addChildRules):
(WebCore::Style::RuleSet::addRulesFromSheet):

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

(WebCore::Style::Resolver::appendAuthorStyleSheets):
(WebCore::Style::Resolver::addMediaQueryDynamicResults):
(WebCore::Style::Resolver::hasMediaQueriesAffectedByViewportChange const):
(WebCore::Style::Resolver::hasMediaQueriesAffectedByAccessibilitySettingsChange const):
(WebCore::Style::Resolver::hasMediaQueriesAffectedByAppearanceChange const):
(WebCore::Style::Resolver::addViewportDependentMediaQueryResult): Deleted.
(WebCore::Style::Resolver::addAccessibilitySettingsDependentMediaQueryResult): Deleted.
(WebCore::Style::Resolver::addAppearanceDependentMediaQueryResult): Deleted.

Store MediaQueryDynamicResults struct instead of individual vectors.

  • style/StyleResolver.h:

(WebCore::Style::Resolver::hasViewportDependentMediaQueries const):
(WebCore::Style::Resolver::hasAccessibilitySettingsDependentMediaQueries const):
(WebCore::Style::Resolver::hasAppearanceDependentMediaQueries const):

  • style/StyleScopeRuleSets.cpp:

(WebCore::Style::ScopeRuleSets::updateUserAgentMediaQueryStyleIfNeeded const):
(WebCore::Style::ScopeRuleSets::initializeUserStyle):
(WebCore::Style::ScopeRuleSets::collectRulesFromUserStyleSheets):
(WebCore::Style::ScopeRuleSets::appendAuthorStyleSheets):

  • style/StyleScopeRuleSets.h:
8:32 AM Changeset in webkit [252735] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC] Add support for LFC layout only.
https://bugs.webkit.org/show_bug.cgi?id=204441
<rdar://problem/57382929>

Reviewed by Antti Koivisto.

Clean up the render tree state when RenderView::layout is not called.

  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::layoutUsingFormattingContext):

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateRendererStyle):

8:21 AM Changeset in webkit [252734] by Pablo Saavedra
  • 2 edits in trunk/Tools

Fix Tools/Scripts/run-javascriptcore-tests after r252490
https://bugs.webkit.org/show_bug.cgi?id=204452

Rubber-stamped by Philippe Normand

Regression introduced in:

results.webkit.org: Report JSC tests to the results database
https://bugs.webkit.org/show_bug.cgi?id=204091
<rdar://problem/49778900>

WebKitGTK and WPE build environment is defined by the dependencies
policy document [1] as a Debian Stable. For Debian the uname binary
is installed in the /bin/ directory and this directory is included
in the $PATH for any regular or system user. This fix removes the
path for the uname command in the run-javascriptcore-tests script.

[1] https://trac.webkit.org/wiki/WebKitGTK/DependenciesPolicy

  • Scripts/run-javascriptcore-tests:

(configurationForUpload):

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

Update test expectations for flaky tests

Unreviewed test gardening.

  • platform/win/TestExpectations:
6:12 AM Changeset in webkit [252732] by Andres Gonzalez
  • 5 edits in trunk/Source/WebCore

Support boundingBoxRect and elementRect in AXIsolatedObject.
https://bugs.webkit.org/show_bug.cgi?id=204431

Reviewed by Chris Fleizach.

  • Implementation of boundingBoxRect and elementRect in AXIsolatedObject.
  • Templatized rectAttributeValue generalize retrieval of cached rects for different types of rects.
  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:

(WebCore::AXCoreObject::pixelSnappedBoundingBoxRect const): Moved from AccessibilityObject.
(WebCore::AXCoreObject::size const): Moved from AccessibilityObject.

  • accessibility/isolatedtree/AXIsolatedTreeNode.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData): Caching of boundingBox and element rects.
(WebCore::AXIsolatedObject::rectAttributeValue const): Templatized version.

  • accessibility/isolatedtree/AXIsolatedTreeNode.h:
4:59 AM Changeset in webkit [252731] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

add ASSERT_NOT_REACHED_WITH_MESSAGE and RELEASE_ASSERT_NOT_REACHED_WITH_MESSAGE
https://bugs.webkit.org/show_bug.cgi?id=204445

Patch by Tuomas Karkkainen <tuomas.webkit@apple.com> on 2019-11-21
Reviewed by Antti Koivisto.

Add assertions that combine ASSERT_NOT_REACHED and ASSERT_WITH_MESSAGE.

  • wtf/Assertions.h:
4:14 AM Changeset in webkit [252730] by Devin Rousso
  • 5 edits in trunk

Web Inspector: removing the blackbox for a specific script doesn't actually remove the blackbox
https://bugs.webkit.org/show_bug.cgi?id=204428

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

Previously, when updating the blackbox state of each existing script, we would only tell the
Debugger about when scripts should be blackboxed, not when they shouldn't. This means that
when a given script is un-blackboxed, the Debugger would never get told about it and would
therefore still defer pauses as if it was blackboxed.

The solution to this is simple; update the blackboxed state of every script, not just those
that should be blackboxed, and tell the Debugger about each.

  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::setShouldBlackboxURL):

LayoutTests:

  • inspector/debugger/setShouldBlackboxURL.html:
  • inspector/debugger/setShouldBlackboxURL-expected.txt:
2:56 AM WebKitGTK/2.26.x edited by Philippe Normand
(diff)
2:56 AM WebKitGTK/2.26.x edited by Philippe Normand
(diff)

Nov 20, 2019:

11:25 PM Changeset in webkit [252729] by Conrad Shultz
  • 2 edits in trunk/Source/WebCore

Crash at com.apple.WebCore: -[WebRevealHighlight revealContext:drawRectsForItem:]
https://bugs.webkit.org/show_bug.cgi?id=204434

Reviewed by Megan Gardner.

_attributedString was not retained, leading to a potential use-after-dealloc. Fix
this by wrapping it in a RetainPtr. While we're here, remove explicit ivars and
property synthesis and copy the string during assignment.

Reveal functionality is currently not testable.

  • editing/cocoa/DictionaryLookup.mm:

(SOFT_LINK_CLASS_OPTIONAL):
(-[WebRevealHighlight initWithHighlightRect:useDefaultHighlight:attributedString:]):

10:02 PM Changeset in webkit [252728] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Extend MacroAssemblerARM64::load/store for datasize = 16
https://bugs.webkit.org/show_bug.cgi?id=204442
<rdar://problem/57366761>

Reviewed by Mark Lam.

Our void load16(const void* address, RegisterID dest) and void store16(RegisterID src, const void* address) are not aware of
the condition that passed register can be memoryTempRegister, while MacroAssemblerARM64::{load,store} handles it correctly, e.g.
load invalidates cachedMemoryTempRegister if destination register is memoryTempRegister. As a result, when we are emitting
or16(TrustedImm32 imm, AbsoluteAddress address) with address where the address's value does not fit in imm, the generated code
is reusing memoryTempRegister incorrectly.

0xedf8d4fb4: mov x17, #0x7af0
0xedf8d4fb8: movk x17, #0xd5a, lsl #16
0xedf8d4fbc: movk x17, #0x1, lsl #32 Construct imm register on x17.
0xedf8d4fc0: ldrh w17, [x17]
Load half word from x17 to w17 (we should invalidate x17 memoryTempRegister here).
0xedf8d4fc4: mov w16, #0x1b
0xedf8d4fc8: orr w16, w17, w16
0xedf8d4fcc: strh w16, [x17] x17 memoryTempRegister is reused while its content is invalid.

The problem is that load and store functions are not supporting datasize = 16 case. This patch extends MacroAssemblerARM64::{load,store}
to support 16 so that or16 implementation looks is similar to or32 etc.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load16):
(JSC::MacroAssemblerARM64::store16):
(JSC::MacroAssemblerARM64::load):
(JSC::MacroAssemblerARM64::store):

  • assembler/testmasm.cpp:

(JSC::testOrImmMem):

9:12 PM Changeset in webkit [252727] by Jonathan Bedard
  • 2 edits in trunk/Tools

run-webkit-tests: Make usability test on booting simulators more robust
https://bugs.webkit.org/show_bug.cgi?id=204423
<rdar://problem/57364735>

Reviewed by Alexey Proskuryakov.

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDevice.is_usable): Use regular expressions to find home-screen service.

8:34 PM Changeset in webkit [252726] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

[MSVC] error C2039: 'weakPtrFactory': is not a member of 'WebCore::DocumentStorageAccess::requestStorageAccess::<lambda_3f2cfd7704f93d8fe19d5b5f064f8add>'
https://bugs.webkit.org/show_bug.cgi?id=204437

Unreviewed build fix.

MSVC has a bug of a outer lambda's captured 'this' can't be used as
a lambda capture initializer of a inner lambda.

  • dom/DocumentStorageAccess.cpp:

(WebCore::DocumentStorageAccess::requestStorageAccess): Replaced '*this' in the lambda capture initializer with '*weakThis'.

6:00 PM Changeset in webkit [252725] by sbarati@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Baseline JIT should fill in StructureStubInfo's propertyIsInt32 and the slow path should update the array profile more frequently
https://bugs.webkit.org/show_bug.cgi?id=204432

Reviewed by Tadeu Zagallo.

When I added inline caching for get by val, I removed code which updated the
ArrayProfile with some frequency. This patch adds code that does that back,
which recovers some of the JetStream2 regressions we are seeing.

  • jit/JITOperations.cpp:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_get_by_val):

5:48 PM Changeset in webkit [252724] by Simon Fraser
  • 31 edits in trunk

getComputedStyle returns "auto" for zIndex property even after it has been set, on non-positioned elements
https://bugs.webkit.org/show_bug.cgi?id=15562

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

More passing tests.

  • web-platform-tests/css/css-position/inheritance-expected.txt:
  • web-platform-tests/css/css-values/calc-integer-expected.txt:
  • web-platform-tests/css/css-values/calc-z-index-fractions-001-expected.txt:
  • web-platform-tests/css/css-values/minmax-integer-computed-expected.txt:

Source/WebCore:

The computed value of z-index should be the specified value, but Style::Adjuster::adjust() set z-index
to auto on non-positioned elements, so we reported the incorrect computed value.

Fix by storing the specified value in RenderStyle as "zIndex", and the used value as "effectiveZIndex", and
converting all rendering code to use the "effective" variants. getComputedStyle reads "zIndex".

Style::Adjuster::adjust() copies zIndex to effectiveZIndex for positioned elements.

Tests: fast/css/getComputedStyle/getComputedStyle-zIndex-auto.html

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::apply):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json:
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::createInnerTextStyle):

  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • page/animation/CompositeAnimation.cpp:

(WebCore::CompositeAnimation::animate):

  • rendering/RenderBox.cpp:

(WebCore::isCandidateForOpaquenessTest):

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

(WebCore::RenderElement::styleWillChange):

  • rendering/RenderFullScreen.cpp:

(WebCore::createFullScreenStyle):

  • rendering/RenderLayer.cpp:

(WebCore::canCreateStackingContext):
(WebCore::RenderLayer::shouldBeCSSStackingContext const):
(WebCore::RenderLayer::calculateClipRects const):

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

(WebCore::RenderLayerCompositor::logLayerInfo):

  • rendering/RenderLayerModelObject.cpp:

(WebCore::RenderLayerModelObject::styleWillChange):

  • rendering/RenderTreeAsText.cpp:

(WebCore::RenderTreeAsText::writeRenderObject):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::changeRequiresLayerRepaint const):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::specifiedZIndex const):
(WebCore::RenderStyle::hasAutoSpecifiedZIndex const):
(WebCore::RenderStyle::setSpecifiedZIndex):
(WebCore::RenderStyle::setHasAutoSpecifiedZIndex):
(WebCore::RenderStyle::usedZIndex const):
(WebCore::RenderStyle::hasAutoUsedZIndex const):
(WebCore::RenderStyle::setUsedZIndex):
(WebCore::RenderStyle::setHasAutoUsedZIndex):
(WebCore::RenderStyle::hasAutoZIndex const): Deleted.
(WebCore::RenderStyle::setHasAutoZIndex): Deleted.
(WebCore::RenderStyle::zIndex const): Deleted.
(WebCore::RenderStyle::setZIndex): Deleted.

  • rendering/style/StyleBoxData.cpp:

(WebCore::StyleBoxData::StyleBoxData):
(WebCore::StyleBoxData::operator== const):

  • rendering/style/StyleBoxData.h:

(WebCore::StyleBoxData::specifiedZIndex const):
(WebCore::StyleBoxData::hasAutoSpecifiedZIndex const):
(WebCore::StyleBoxData::usedZIndex const):
(WebCore::StyleBoxData::hasAutoUsedZIndex const):
(WebCore::StyleBoxData::zIndex const): Deleted.
(WebCore::StyleBoxData::hasAutoZIndex const): Deleted.

  • style/StyleAdjuster.cpp:

(WebCore::Style::Adjuster::adjust const):

LayoutTests:

  • fast/css-grid-layout/grid-item-z-index-support-expected.txt:
  • fast/css-grid-layout/grid-item-z-index-support.html:
  • fast/css/getComputedStyle/getComputedStyle-zIndex-auto-expected.txt:
  • fast/css/getComputedStyle/getComputedStyle-zIndex-auto.html:
5:47 PM Changeset in webkit [252723] by rniwa@webkit.org
  • 34 edits in trunk/Source/WebCore

MicrotaskQueue should be accessed via EventLoop
https://bugs.webkit.org/show_bug.cgi?id=204397

Reviewed by Antti Koivisto.

This patch refactors the existing code so that a microtask is always queued via EventLoopTaskGroup.
It preserves all other (broken) semantics and behavior like all origins sharing a single microtask queue.

The singleton MicrotaskQueue for the main thread has been moved from MicrotaskQueue::mainThreadQueue
to WindowEventLoop, and an instance of MicrotaskQueue for each worker has been moved from WorkerGlobalScope
to WorkerEventLoop.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents):

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::updateFinishedState):

  • bindings/js/JSDOMGlobalObjectTask.cpp:

(WebCore::JSGlobalObjectTask::JSGlobalObjectTask):

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::queueMicrotaskToEventLoop): Renamed from queueTaskToEventLoop.

  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSExecState.cpp:

(WebCore::JSExecState::didLeaveScriptContext):

  • bindings/js/JSRemoteDOMWindowBase.cpp:
  • bindings/js/JSWorkerGlobalScopeBase.cpp:

(WebCore::JSWorkerGlobalScopeBase::queueMicrotaskToEventLoop): Renamed from queueTaskToEventLoop.

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

(WebCore::BackupElementQueueMicrotask): Deleted.
(WebCore::CustomElementReactionQueue::enqueueElementOnAppropriateElementQueue):
(WebCore::CustomElementReactionQueue::ensureBackupQueue):

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

(WebCore::Document::finishedParsing):

  • dom/DocumentStorageAccess.cpp:

(WebCore::DocumentStorageAccess::requestStorageAccess):

  • dom/EventLoop.cpp:

(WebCore::EventLoop::queueMicrotask): Added.
(WebCore::EventLoop::performMicrotaskCheckpoint): Added.
(WebCore::EventLoopTaskGroup::queueMicrotaskCallback): Added.
(WebCore::EventLoopTaskGroup::queueMicrotask): Added.
(WebCore::EventLoopTaskGroup::performMicrotaskCheckpoint): Added.

  • dom/EventLoop.h:

(WebCore::EventLoopTaskGroup::microtaskQueue):

  • dom/Microtasks.cpp:

(WebCore::MicrotaskQueue::mainThreadQueue): Deleted.
(WebCore::MicrotaskQueue::contextQueue): Deleted.

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

(WebCore::MutationObserverMicrotask): Deleted.
(WebCore::MutationObserver::queueMutationObserverCompoundMicrotask): Made this a member function
so that it can call notifyMutationObservers in its lambda.
(WebCore::MutationObserver::enqueueMutationRecord):
(WebCore::MutationObserver::enqueueSlotChangeEvent):
(WebCore::MutationObserver::setHasTransientRegistration):

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

(WebCore::MutationObserverRegistration::observedSubtreeNodeWillDetach):

  • dom/WindowEventLoop.cpp:

(WebCore::WindowEventLoop::microtaskQueue):

  • dom/WindowEventLoop.h:
  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder):

  • html/parser/HTMLScriptRunner.cpp:

(WebCore::HTMLScriptRunner::executePendingScriptAndDispatchEvent):
(WebCore::HTMLScriptRunner::runScript):

  • inspector/agents/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::recordCanvasAction):

  • testing/Internals.cpp:

(WebCore::Internals::queueMicroTask):

  • workers/WorkerEventLoop.cpp:

(WebCore::WorkerEventLoop::~WorkerEventLoop):
(WebCore::WorkerEventLoop::microtaskQueue):
(WebCore::WorkerEventLoop::clearMicrotaskQueue):

  • workers/WorkerEventLoop.h:
  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::prepareForTermination):

  • workers/WorkerGlobalScope.h:

(WebCore::WorkerGlobalScope::microtaskQueue const): Deleted.

5:25 PM Changeset in webkit [252722] by Jonathan Bedard
  • 2 edits in trunk/Tools

run-webkit-tests: Do not create global SystemHost objects
https://bugs.webkit.org/show_bug.cgi?id=204426

Reviewed by Aakash Jain.

If created, SystemHost objects should be created on-demand, not globally
shared between all instances of a function.

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDeviceManager.populate_available_devices):
(SimulatedDeviceManager.available_devices):
(SimulatedDeviceManager.device_by_filter):
(SimulatedDeviceManager._create_or_find_device_for_request):
(SimulatedDeviceManager._boot_device):
(SimulatedDeviceManager.device_count_for_type):
(SimulatedDeviceManager.initialize_devices):
(SimulatedDeviceManager.max_supported_simulators):
(SimulatedDeviceManager.swap):
(SimulatedDeviceManager.tear_down):

5:16 PM Changeset in webkit [252721] by Ross Kirsling
  • 6 edits in trunk

Unreviewed, address Darin's feedback on r252683.

JSTests:

  • stress/string-replaceall.js:

Source/JavaScriptCore:

  • runtime/StringPrototype.cpp:

(JSC::replaceUsingStringSearch):
(JSC::replace):
(JSC::stringProtoFuncReplaceUsingStringSearch):
(JSC::stringProtoFuncReplaceAllUsingStringSearch):

Source/WTF:

  • wtf/text/StringCommon.h:

(WTF::findCommon):

5:09 PM Changeset in webkit [252720] by Kate Cheney
  • 3 edits in trunk/LayoutTests

[ Jazz ] http/tests/resourceLoadStatistics/cookie-deletion.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=203813
<rdar://problem/54316765>

Reviewed by John Wilander.

Added random dummy value to the end of the cookie-redirect query to ensure
the third party url isn't failing to set the cookie and redirect back
to the correct file because the url is already in the cache from previous runs.

  • http/tests/resourceLoadStatistics/cookie-deletion-expected.txt:
  • http/tests/resourceLoadStatistics/cookie-deletion.html:
5:08 PM Changeset in webkit [252719] by Wenson Hsieh
  • 8 edits in trunk/Tools

Correct argument types in UIScriptController::activateDataListSuggestion after r252062
https://bugs.webkit.org/show_bug.cgi?id=203116

Reviewed by Tim Horton.

Use unsigned to represent unsigned long arguments declared in the IDL.

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

(WTR::UIScriptControllerMac::activateDataListSuggestion):

  • TestRunnerShared/UIScriptContext/UIScriptController.h:

(WTR::UIScriptController::activateDataListSuggestion):

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

(WTR::UIScriptControllerIOS::activateDataListSuggestion):

  • WebKitTestRunner/mac/UIScriptControllerMac.h:
  • WebKitTestRunner/mac/UIScriptControllerMac.mm:

(WTR::UIScriptControllerMac::activateDataListSuggestion):

4:28 PM Changeset in webkit [252718] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Unreviewed, remove an unnecessary null check after r252561
https://bugs.webkit.org/show_bug.cgi?id=204287

Address post-review feedback.

  • Modules/async-clipboard/Clipboard.cpp:

(WebCore::Clipboard::writeText):

3:59 PM Changeset in webkit [252717] by ChangSeok Oh
  • 33 edits
    1 copy
    1 add in trunk

[GTK] Add ANGLE backend to GTK port
https://bugs.webkit.org/show_bug.cgi?id=199060

Reviewed by Žan Doberšek.

.:

This change brings ANGLE support for WebGL to GTK port. USE_ANGLE_WEBGL
is newly defined in OptionGTK.cmake, and turns on the USE_ANGLE_EGL flag.

  • Source/cmake/OptionsGTK.cmake: USE_ANGLE_WEBGL added.

Source/ThirdParty/ANGLE:

  • CMakeLists.txt: When USE_ANGLE_WEBGL is enabled, necessary glesv2 entry points headers are installed in the derived source directory. And then adjust-angle-include-path.sh is applied to change include paths in the entry points header files.
  • GLESv2.cmake: libglesv2_entry_points_headers is newly defined, which is a gathering of entry point headers of libGLESv2.
  • PlatformGTK.cmake: In this file, we append gl and glx related angle code as a build target. Since we want gl context and gles context simultaneously, we remove gl prototype calls from the generated libGLESv2 library. Instead, we invoke egl and gl calls of ANGLE via their non-prototype function names.
  • adjust-angle-include-paths.sh: sed is slightly different in unix and linux systems. In particular, its inplace option needs to be changed for better compatibility on linux.
  • include/CMakeLists.txt: ANGLE_WEBGL_HEADERS is newly defined. It gathers header files of ANGLE for WebGL support.

Source/WebCore:

This change aims to bring ANGLE support for WebGL to GTK port. The port
wants to have a gl context for texture mapper and a gles/egl context for webgl
simultaneously, we adopt the readPixel-copyToTexture approach for now because
sharing textures between the two different contextes is not a feasible direction.
Also, to avoid conflicts between gl and gles calls, we use non-prototype functions
of ANGLE for WebGL context (i.e., GraphicsContext3D). Although many combinations
of graphic configurations exist, only default configuration (Nicosia layers
running on ANGLE + GLX is supported. Other combinations like ANGLE + GLES or WPE
will be covered by following patches.

No new tests since no functionality changed.

  • Headers.cmake:
  • PlatformGTK.cmake:
  • SourcesGTK.txt:
  • platform/TextureMapper.cmake:
  • platform/graphics/ANGLEWebKitBridge.h:
  • platform/graphics/GLContext.cpp:
  • platform/graphics/GLContext.h:
  • platform/graphics/GraphicsContext3D.h:
  • platform/graphics/OpenGLShims.cpp:

(WebCore::initializeOpenGLShims):

  • platform/graphics/OpenGLShims.h:
  • platform/graphics/PlatformDisplay.cpp:
  • platform/graphics/angle/GraphicsContext3DANGLE.cpp:

(WebCore::GraphicsContext3D::reshapeFBOs):
(WebCore::GraphicsContext3D::prepareTexture):

  • platform/graphics/nicosia/texmap/NicosiaGC3DANGLELayer.cpp: Added.

(Nicosia::GC3DANGLELayer::ANGLEContext::errorString):
(Nicosia::GC3DANGLELayer::ANGLEContext::lastErrorString):
(Nicosia::GC3DANGLELayer::ANGLEContext::createContext):
(Nicosia::GC3DANGLELayer::ANGLEContext::ANGLEContext):
(Nicosia::GC3DANGLELayer::ANGLEContext::~ANGLEContext):
(Nicosia::GC3DANGLELayer::ANGLEContext::makeContextCurrent):
(Nicosia::GC3DANGLELayer::ANGLEContext::platformContext):
(Nicosia::GC3DANGLELayer::GC3DANGLELayer):
(Nicosia::GC3DANGLELayer::~GC3DANGLELayer):
(Nicosia::GC3DANGLELayer::makeContextCurrent):
(Nicosia::GC3DANGLELayer::platformContext):

  • platform/graphics/nicosia/texmap/NicosiaGC3DANGLELayer.h: Copied from Source/WebCore/platform/graphics/nicosia/texmap/NicosiaGC3DLayer.h.
  • platform/graphics/nicosia/texmap/NicosiaGC3DLayer.cpp:

(Nicosia::GC3DLayer::GC3DLayer):
(Nicosia::GC3DLayer::swapBuffersIfNeeded):

  • platform/graphics/nicosia/texmap/NicosiaGC3DLayer.h:
  • platform/graphics/texmap/BitmapTextureGL.cpp:

(WebCore::BitmapTextureGL::setPendingContents):
(WebCore::BitmapTextureGL::updatePendingContents):

  • platform/graphics/texmap/BitmapTextureGL.h:
  • platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp:

(WebCore::GraphicsContext3D::create):
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::~GraphicsContext3D):

  • platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:

(WebCore::TextureMapperPlatformLayerBuffer::paintToTextureMapper):

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:

(WebCore::TextureMapperPlatformLayerProxy::pushNextBuffer):

Source/WebKit:

  • UIProcess/API/glib/WebKitProtocolHandler.cpp: Extention3DANGLE is used instead where ANGLE for WebGL is enabled.
  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: Append gl extensions for ANGLE.

(WebKit::AcceleratedBackingStoreWayland::checkRequirements):

Source/WTF:

The GTK port uses TEXTURE_MAPPER that has a gl context for accelerated rendering,
and ANGLE has an egl context for WebGL. We want to make both live together
so an exception is made where TEXTURE_MAPPER is enabled.

  • wtf/Platform.h:
3:52 PM Changeset in webkit [252716] by Alan Bujtas
  • 15 edits in trunk

Flexbox sizing logic triggers full repaint on the flex items.
https://bugs.webkit.org/show_bug.cgi?id=204380
<rdar://problem/57236404>

Reviewed by Simon Fraser.

Source/WebCore:

RenderFlexibleBox::applyStretchAlignmentToChild explicitly sets the child renderer's height to 0 before issuing layout on it.
This confuses the child's repaint logic and could trigger unnecessary repaints on complete subtrees.

Many ::layout functions plant a LayoutRepainter stack object to track and report paint invalidations.
It works as long as the renderer's geometry change happens within the scope of this LayoutRepainter.
When the parent (RenderFlexibleBox) mutates the renderer's geometry, the LayoutRepainter object sees
this already mutated state as the initial state and will happily issue repaints even when the final
geometry remains the same.

This patch addresses the redundant repaint by pushing the height reset from the parent down to the child, inside the LayoutRepainter scope.

  • rendering/RenderBlock.h: Restrict it to RenderBlock level for now. It might need to go all the way up to RenderBox.

(WebCore::RenderBlock::shouldResetChildLogicalHeightBeforeLayout const):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlock):

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

(WebCore::RenderBox::resetLogicalHeightBeforeLayoutIfNeeded):

  • rendering/RenderBox.h:

(WebCore::RenderBox::shouldResetLogicalHeightBeforeLayout const):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutBlock):

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::layoutBlock):
(WebCore::RenderFlexibleBox::applyStretchAlignmentToChild):

  • rendering/RenderFlexibleBox.h:
  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::layoutBlock):

  • rendering/RenderGrid.h:
  • rendering/RenderTable.cpp:

(WebCore::RenderTable::layout):

  • rendering/RenderTable.h:

LayoutTests:

  • fast/repaint/align-items-change-expected.txt: progression.
3:31 PM Changeset in webkit [252715] by Justin Fan
  • 2 edits in trunk/LayoutTests

webgl/1.0.3/conformance/context/context-release-upon-reload.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=203984

Unreviewed test gardening. Skip the 2.0.0 version of this test as well.

  • platform/mac-highsierra-wk1/TestExpectations:
3:21 PM Changeset in webkit [252714] by Fujii Hironori
  • 3 edits in trunk/Tools

run-api-tests reports AssertionError os.pathsep not in value in _append_value_colon_separated in Cygwin Python
https://bugs.webkit.org/show_bug.cgi?id=204400

Reviewed by Jonathan Bedard.

r249500 changed Port.environment_for_api_tests to use
Port._append_value_colon_separated to append a build path to some
enviroment variables. _append_value_colon_separated has a
assertion to ensure the given value doesn't iclude ':'. However,
Port._build_path contains ':' on Cygwin Python.

Those enviroment variables are only for macOS and iOS. Move the code to darwin.py.

  • Scripts/webkitpy/port/base.py:

(Port.environment_for_api_tests):

  • Scripts/webkitpy/port/darwin.py:

(DarwinPort.environment_for_api_tests):

3:12 PM Changeset in webkit [252713] by Caio Lima
  • 18 edits in trunk

[JSC] OSR exit to LLInt is broken on MIPS
https://bugs.webkit.org/show_bug.cgi?id=203737

Reviewed by Yusuke Suzuki.

JSTests:

Unskipping broken tests due to OSR to LLInt bug.

  • microbenchmarks/call-spread-call.js:
  • microbenchmarks/throw.js:
  • stress/allocation-sinking-hints-are-valid-ssa-2.js:
  • stress/allocation-sinking-hints-are-valid-ssa.js:
  • stress/arith-profile-for-negate-can-see-non-number-due-to-dfg-osr-exit-profiling.js:
  • stress/arrowfunction-lexical-bind-supercall-4.js:
  • stress/arrowfunction-tdz-3.js:
  • stress/function-constructor-semantics.js:
  • stress/global-import-function-should-return-a-promise-when-clearing-exceptions.js:
  • stress/stress-cleared-calllinkinfo.js:
  • stress/typedarray-configure-index.js:
  • stress/v8-deltablue-strict.js:

PerformanceTests/SunSpider:

  • tests/v8-v6/v8-deltablue.js:

Source/JavaScriptCore:

This patch is adjusting the OSR to LLInt mechanism to MIPS. When we
use PIC on this architecture, we need to properly configure $gp
at some places to be able to access global variables. This is required
on LLInt to access Global Offset Table (got). According to MIPS ABI,
the $gp can be recalculated during function prologue using caller
register $t9. We also emit such instructions (we can see this as
OFFLINE_ASM_CPLOAD macro) immediately after a non-local label on
LLInt. With the introduction of OSR to LLInt mechanism, we now have
return location labels that are reached from ret LLInt instructions.
Such return locations are used to properly return to LLInt execution
whenever an OSR exits from inlined call on DFG or FTL to LLInt. When
OSR is materializing LLInt stack frames for inlined functions (or
accessors), it sets return address to its return location label.
This means that for such labels, we need to adjust $gp
using $ra instead of $t9, given that LLInt ret operation uses
jr $ra to jump the execution to there.
To implement this, we changed mipsAddPICCode to emit code
using the correct register required to recalculate $gp.
We also changed callTargetFunction to use the stubs as return
location points, since the declaration of global labels will emmit
OFFLINE_ASM_CPLOAD($ra) and we don't want to execute it during
normal LLInt execution.

  • llint/LowLevelInterpreter.asm:
  • offlineasm/mips.rb:
3:01 PM Changeset in webkit [252712] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

[iOS] Make sure WebContent process does not get suspended while it is holding a process assertion for the UIProcess
https://bugs.webkit.org/show_bug.cgi?id=204418

Reviewed by Jer Noble.

Make sure WebContent process does not get suspended while it is holding a process assertion for the UIProcess. We
see this happening in sysdiagnoses, and it means the system ends up killing the WebContent process because it leaked
a process assertion.

  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::processTaskStateDidChange):
(WebKit::WebProcess::releaseProcessWasResumedAssertions):

2:45 PM Changeset in webkit [252711] by Jonathan Bedard
  • 3 edits
    1 add in trunk

[WebGL] Add --webgl-test-suite flag for run-webkit-tests
https://bugs.webkit.org/show_bug.cgi?id=204327

Rubber-stamped by Aakash Jain.

Tools:

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(parse_args): Add the --webgl macro command, which is the equivalent of:
'Run-webkit-tests --additional-expectations=LayoutTests/webgl/TestExpectations webgl'

LayoutTests:

  • webgl/TestExpectations: Added.
2:29 PM Changeset in webkit [252710] by mmaxfield@apple.com
  • 4 edits
    2 adds in trunk

[Cocoa] Add ui-sans-serif as a sibling to ui-serif, ui-monospace, and ui-rounded
https://bugs.webkit.org/show_bug.cgi?id=204188

Reviewed by Simon Fraser.

Source/WebCore:

As per https://github.com/w3c/csswg-drafts/commit/cd0059a32a74c5a48630ce7c77292642dac70fd9#diff-dd2d54c50c872e1e303daebd4794d642

Test: fast/text/design-system-ui-sans-serif.html

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::fontWithFamilySpecialCase):

  • platform/graphics/cocoa/FontDescriptionCocoa.cpp:

(WebCore::matchSystemFontUse):

LayoutTests:

  • fast/text/design-system-ui-sans-serif-expected.html: Added.
  • fast/text/design-system-ui-sans-serif.html: Added.
2:25 PM Changeset in webkit [252709] by Alan Coon
  • 1 copy in tags/Safari-608.4.9.1.4

Tag Safari-608.4.9.1.4.

2:19 PM Changeset in webkit [252708] by Alan Coon
  • 7 edits in branches/safari-608.4.9.1-branch/Source

Versioning.

2:18 PM Changeset in webkit [252707] by ChangSeok Oh
  • 2 edits in trunk/Tools

Reactivate my committer status.

Unreviewed.

  • Scripts/webkitpy/common/config/contributors.json:
2:13 PM Changeset in webkit [252706] by Truitt Savell
  • 1 edit
    3 adds in trunk/LayoutTests

Add platform specific expectations for High Sierra and Mojave for svg/custom/glyph-selection-arabic-forms.svg
https://bugs.webkit.org/show_bug.cgi?id=204249

Unreviewed test gardening.

  • platform/mac-highsierra/svg/custom/glyph-selection-arabic-forms-expected.txt: Added.
  • platform/mac-mojave/svg/custom/glyph-selection-arabic-forms-expected.txt: Added.
2:12 PM Changeset in webkit [252705] by Matt Lewis
  • 2 edits in trunk/Tools

Add trigger for WebGL bot to config.

RS config fix by Jonathan Bedard.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
1:23 PM Changeset in webkit [252704] by yurys@chromium.org
  • 8 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r250618): main resource view is empty when pausing on inline 'debugger' statement
https://bugs.webkit.org/show_bug.cgi?id=204086

Reviewed by Devin Rousso.

SourceCodeRevision.currentRevision doesn't create new revisions under the hood anymore.
This allows to avoid undesirable side effects when e.g. text editor tries to read current
content of the SourceCode which results in a new revision (with empty content).
New method editableRevision is introduced for applying changes to the resource while
keeping original content revision intact.

  • UserInterface/Controllers/CSSManager.js:

(WI.CSSManager.prototype._resourceContentDidChange.applyStyleSheetChanges.styleSheetFound):
(WI.CSSManager.prototype._resourceContentDidChange.applyStyleSheetChanges):
(WI.CSSManager.prototype._resourceContentDidChange):
(WI.CSSManager.prototype._updateResourceContent.fetchedStyleSheetContent):

  • UserInterface/Models/SourceCode.js:

(WI.SourceCode.prototype.get currentRevision):
(WI.SourceCode.prototype.get editableRevision):
(WI.SourceCode.prototype.get content):
(WI.SourceCode.prototype.revisionContentDidChange):

  • UserInterface/Views/FontResourceContentView.js:

(WI.FontResourceContentView.prototype.dropZoneHandleDrop):

  • UserInterface/Views/ImageResourceContentView.js:

(WI.ImageResourceContentView.prototype.dropZoneHandleDrop):

  • UserInterface/Views/ResourceContentView.js:

(WI.ResourceContentView.prototype._contentAvailable):
(WI.ResourceContentView.prototype._handleImportLocalResourceOverride):

  • UserInterface/Views/ScriptContentView.js:

(WI.ScriptContentView.prototype._handleTextEditorContentDidChange):

  • UserInterface/Views/TextResourceContentView.js:

(WI.TextResourceContentView.prototype._textEditorContentDidChange):

1:04 PM Changeset in webkit [252703] by Matt Lewis
  • 3 edits in trunk/Tools

Bring up WebGL Test Queue.
https://bugs.webkit.org/show_bug.cgi?id=204374

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
  • BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:
12:35 PM Changeset in webkit [252702] by BJ Burg
  • 14 edits
    1 add in trunk/Source

[Cocoa] Add _WKRemoteWebInspectorViewController SPI to set diagnostic logging delegate
https://bugs.webkit.org/show_bug.cgi?id=204371

Reviewed by Devin Rousso.

Source/WebCore:

Expose whether a diagnostic logging delegate has been configured for the frontend's WKWebView.
In a later patch, WI.DiagnosticController will start and stop recording as availability changes.

  • inspector/InspectorFrontendClient.h:

(WebCore::InspectorFrontendClient::diagnosticLoggingAvailable):

  • inspector/InspectorFrontendHost.cpp:

(WebCore::InspectorFrontendHost::diagnosticLoggingAvailable):

  • inspector/InspectorFrontendHost.h:

Source/WebKit:

  • UIProcess/WebInspectorProxy.h:
  • UIProcess/RemoteWebInspectorProxy.h:
  • UIProcess/RemoteWebInspectorProxy.cpp:

(WebKit::RemoteWebInspectorProxy::setDiagnosticLoggingAvailable):
Hook up the plumbing to forward this state change to the frontend.

  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewControllerPrivate.h: Added.
  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:

(-[_WKRemoteWebInspectorViewController _setDiagnosticLoggingDelegate:]):
Add new SPI to set the diagnostic logging delegate. This is preferable to directly
setting the delegate on the inspector WKWebView (via .webView._diagnosticLoggingDelegate),
because the controller can notify the frontend that diagnostic logging is now available.

  • WebKit.xcodeproj/project.pbxproj: Add new header file and make it private.
  • WebProcess/WebPage/WebInspectorUI.h:
  • WebProcess/WebPage/WebInspectorUI.cpp:

(WebKit::WebInspectorUI::setDiagnosticLoggingAvailable):
Cache this value and use it for InspectorFrontendClient::diagnosticLoggingAvailable().

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

(WebKit::RemoteWebInspectorUI::setDiagnosticLoggingAvailable):
Duplicate what is done for the local case.

12:33 PM Changeset in webkit [252701] by Simon Fraser
  • 7 edits in trunk

Turn off antialiasing when rendering with Ahem, for testing
https://bugs.webkit.org/show_bug.cgi?id=204197
Source/WebCore:

<rdar://problem/57190712>

Reviewed by Myles C. Maxfield.

If the font family name matches "Ahem", turn off antialiasing when rendering text,
because many CSS tests assume that Ahem glyphs can be compared with positioned elements
in ref tests.

Since Ahem is a font only used for testing, I don't think this behavior needs to be
controlled by a setting.

  • platform/graphics/Font.cpp:

(WebCore::Font::Font):

  • platform/graphics/Font.h:

(WebCore::Font::allowsAntialiasing const):

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::FontCascade::drawGlyphs):

  • platform/graphics/cocoa/FontCocoa.mm:

(WebCore::isAhemFont):
(WebCore::Font::platformInit):

LayoutTests:

Reviewed by Myles C. Maxfield.

12:14 PM Changeset in webkit [252700] by Jonathan Bedard
  • 2 edits in trunk/Tools

[EWS] iOS layout-tests fails with 30+ failures on re-run and on clean-tree
https://bugs.webkit.org/show_bug.cgi?id=204409

Reviewed by Aakash Jain.

  • BuildSlaveSupport/ews-build/steps.py:

(RunWebKitPerlTests.evaluateCommand): Add killOldProcesses before running test suite.
(RunJavaScriptCoreTests.evaluateCommand): Ditto.
(ReRunJavaScriptCoreTests.evaluateCommand): Ditto.
(RunWebKitTests.evaluateCommand): Ditto.
(ReRunWebKitTests.evaluateCommand): Ditto.
(RunAPITests.evaluateCommand): Ditto.
(ReRunAPITests.evaluateCommand): Ditto.

12:06 PM Changeset in webkit [252699] by rmorisset@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix load<16> on ARM64
https://bugs.webkit.org/show_bug.cgi?id=204326

Reviewed by Mark Lam.

On ARM64 I used load<16> in https://bugs.webkit.org/show_bug.cgi?id=202832.
Unfortunately it turns out to call ldr<16>, and ldr<n> asserts that n is either 32 or 64.
This fix simply calls ldrh/strh directly.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load16):
(JSC::MacroAssemblerARM64::store16):

11:52 AM Changeset in webkit [252698] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Layout Test fast/text/font-antialiasing-save-restore.html is failing
https://bugs.webkit.org/show_bug.cgi?id=204413

Unreviewed test gardening.

  • platform/win/TestExpectations:
11:28 AM Changeset in webkit [252697] by Alan Coon
  • 2 edits in tags/Safari-609.1.10.2/Source/WebKit

Cherry-pick r252333. rdar://problem/57079557

[iOS] Unable to view .pages files
https://bugs.webkit.org/show_bug.cgi?id=204076
<rdar://problem/57079557>

Reviewed by Brent Fulgham.

This is caused by a syscall being blocked by the sandbox. The syscall was previously unused in the
WebContent process.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

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

10:57 AM Changeset in webkit [252696] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Cache InlinteTextItem width when possible
https://bugs.webkit.org/show_bug.cgi?id=204412
<rdar://problem/57359366>

Reviewed by Antti Koivisto.

This helps when subsequent inline layouts use the same set of InlineTextItems and they would
keep re-measuring them on each layout frame (e.g. view resize).

  • layout/inlineformatting/InlineLineLayout.cpp:

(WebCore::Layout::inlineItemWidth):

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::createAndAppendTextItems):
(WebCore::Layout::InlineTextItem::createWhitespaceItem):
(WebCore::Layout::InlineTextItem::createNonWhitespaceItem):
(WebCore::Layout::InlineTextItem::createSegmentBreakItem):
(WebCore::Layout::InlineTextItem::InlineTextItem):
(WebCore::Layout::InlineTextItem::left const):
(WebCore::Layout::InlineTextItem::right const):

  • layout/inlineformatting/InlineTextItem.h:

(WebCore::Layout::InlineTextItem::width const):

  • layout/inlineformatting/text/TextUtil.h:

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

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

Regression (r252660): Layout Test platform/ios/mediastream/audio-muted-in-background-tab.html is failing
https://bugs.webkit.org/show_bug.cgi?id=204408

Unreviewed test gardening.

  • platform/ios/TestExpectations:
10:50 AM Changeset in webkit [252694] by mark.lam@apple.com
  • 4 edits in trunk

Flaky JSC test: stress/stack-overflow-in-yarr-byteCompile.js.dfg-eager.
https://bugs.webkit.org/show_bug.cgi?id=204405

Reviewed by Alexey Proskuryakov.

JSTests:

The test was timing out because it's slow. We don't really need to run this test
on all configurations. So, we'll change it to on run with the default
configuration. Also declare the test as "@ slow!".

  • stress/stack-overflow-in-yarr-byteCompile.js:

Source/JavaScriptCore:

$vm.allWithStackSize() manipulates the stack in ways that will freak out ASan.
So, add SUPPRESS_ASAN to functionCallWithStackSize() to tell ASan to ignore it.

  • tools/JSDollarVM.cpp:
10:39 AM Changeset in webkit [252693] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Rebase svg/custom/glyph-selection-arabic-forms.svg
https://bugs.webkit.org/show_bug.cgi?id=204249

Unreviewed test gardening.

  • svg/custom/glyph-selection-arabic-forms-expected.txt:
10:32 AM Changeset in webkit [252692] by jer.noble@apple.com
  • 7 edits
    2 adds in trunk

HTML5 audio .ended event not fired when app in background or phone screen is off
https://bugs.webkit.org/show_bug.cgi?id=173332
<rdar://problem/32757402>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/audio-background-playback-playlist.html

In addition to the necessary WebKit part of this patch, there are behaviors which prevent
websites from enqueuing new playback while in the background. Namely, the platform will
prevent background playback from any application which is not currently the "Now Playing"
application, so in order to allow pages to switch sources, we must ensure we do not give
up "Now Playing" status. To do so, we will change the implementation of canProduceAudio()
to include any media element which previously could produce audio but currently has no
source.

Also, MediaElementSession::canShowControlsManager() will be modified to only check for
a RequireUserGestureToControlControlsManager restriction if the purpose passed in is
is "ControlsManager" and not "NowPlaying".

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::canProduceAudio const):

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::canShowControlsManager const):

Source/WebKit:

When a WebPage goes from audible to inaudible, allow a short grace period before removing
the activity token, to give the page a chance to (e.g.) move to the next item in a playlist
before the process is suspended when in the background.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::close):
(WebKit::WebPageProxy::updateThrottleState):
(WebKit::WebPageProxy::clearAudibleActivity):

  • UIProcess/WebPageProxy.h:

LayoutTests:

  • media/audio-background-playback-playlist-expected.txt: Added.
  • media/audio-background-playback-playlist.html: Added.
10:25 AM Changeset in webkit [252691] by Jonathan Bedard
  • 2 edits in trunk/Tools

kill-old-processes: Log currently running processes
https://bugs.webkit.org/show_bug.cgi?id=204415

Unreviewed infrastructure management.

  • BuildSlaveSupport/kill-old-processes:

(main): Log 'ps aux' for Mac and Linux.

9:48 AM Changeset in webkit [252690] by Caio Lima
  • 6 edits in trunk/Source/JavaScriptCore

Regression (r252680): JSCOnly build broken: no matching function for call to JSC::DFG::SpeculativeJIT::jsValueResult
https://bugs.webkit.org/show_bug.cgi?id=204404

Reviewed by Saam Barati.

Adjusting build after changes from r252684 and r252680.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateWithGuard):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileIncOrDec):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_to_numeric):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emitSlow_op_get_by_val):

9:12 AM Changeset in webkit [252689] by Simon Fraser
  • 3 edits
    2 adds in trunk

REGRESSION (r252161): box-shadow with inset and rounded borders is clipped
https://bugs.webkit.org/show_bug.cgi?id=204348

Reviewed by Zalan Bujtas.

Source/WebCore:

r252161 introduced a bug for inset shadows where we passed the wrong rect to areaCastingShadowInHole().
Clean the code up a little, and make the xOffset stuff more similar to the outset shadow path.
We could still do a better job of pixel snapping here.

Test: fast/box-shadow/inset-box-shadow.html

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintBoxShadow):

LayoutTests:

  • fast/box-shadow/inset-box-shadow-expected.html: Added.
  • fast/box-shadow/inset-box-shadow.html: Added.
8:53 AM Changeset in webkit [252688] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Layout Test fast/text/font-antialiasing-save-restore.html is failing
https://bugs.webkit.org/show_bug.cgi?id=204413

Unreviewed test gardening.

  • platform/win/TestExpectations:
8:04 AM Changeset in webkit [252687] by Fujii Hironori
  • 5 edits
    1 delete in trunk/Source/WTF

[Win] Implement WTF::ThreadSpecific in WTF::Thread
https://bugs.webkit.org/show_bug.cgi?id=204341

Reviewed by Brent Fulgham and Yusuke Suzuki.

Thread::destructTLS had a tricky code to defer destroying
WTF::Thread in TLS in order to ensure WTF::Thread is destructed
after other ThreadSpecific are destructed, which is a part of
cause of nasty hanging issue in the process termination (Bug 204192).

This change implements WTF::ThreadSpecific in WTF::Thread by
adding a new class Thread::SpecificStorage to manage TLS. Simplify
Thread::destructTLS. Remove threadMapMutex in ThreadingWin.cpp

  • wtf/PlatformWin.cmake:
  • wtf/ThreadSpecific.h:

(WTF::canBeGCThread>::ThreadSpecific):
(WTF::canBeGCThread>::get):
(WTF::canBeGCThread>::setInTLS):
(WTF::canBeGCThread>::destroy):
(WTF::canBeGCThread>::~ThreadSpecific): Deleted.

  • wtf/Threading.h:

(WTF::Thread::specificStorage):
(WTF::Thread::current):

  • wtf/win/ThreadSpecificWin.cpp: Removed.
  • wtf/win/ThreadingWin.cpp:

(WTF::Thread::initializeTLSKey):
(WTF::Thread::initializeTLS):
(WTF::Thread::destructTLS):
(WTF::Thread::SpecificStorage::allocateKey):
(WTF::Thread::SpecificStorage::get):
(WTF::Thread::SpecificStorage::set):
(WTF::Thread::SpecificStorage::destroySlots):
(): Deleted.
(WTF::Thread::currentDying): Deleted.
(WTF::Thread::get): Deleted.

7:18 AM Changeset in webkit [252686] by Alan Bujtas
  • 9 edits
    1 copy in trunk/Source/WebCore

[LFC][IFC] TextUtil::width should use FontCascade::widthForSimpleText when applicable
https://bugs.webkit.org/show_bug.cgi?id=204393
<rdar://problem/57347144>

Reviewed by Antti Koivisto.

This is one of reasons why simple line layout performs better than complex line layout.

  • WebCore.xcodeproj/project.pbxproj:
  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::Run::expand):
(WebCore::Layout::Line::appendTextContent):

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::moveToNextNonWhitespacePosition):
(WebCore::Layout::InlineTextItem::createAndAppendTextItems):

  • layout/inlineformatting/text/TextUtil.cpp:

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

  • layout/inlineformatting/text/TextUtil.h:
  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::Box):
(WebCore::Layout::Box::setTextContext):
(WebCore::Layout::Box::hasTextContent const):
(WebCore::Layout::Box::textContext const):
(WebCore::Layout::Box::setTextContent): Deleted.
(WebCore::Layout::Box::textContent const): Deleted.

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

(WebCore::Layout::canUseSimplifiedTextMeasuring):
(WebCore::Layout::TreeBuilder::createLayoutBox):
(WebCore::Layout::outputLayoutBox):

Note: See TracTimeline for information about the timeline view.