Timeline



Mar 29, 2020:

8:22 PM Changeset in webkit [259186] by Lauro Moura
  • 3 edits in trunk/LayoutTests

[GTK][WPE] Gardening some tests related to vertical text baselines

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
7:50 PM Changeset in webkit [259185] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[WPE] Mark WebGL tests as failures while we can't create a context

Unreviewed test gardening.

  • platform/wpe/TestExpectations:
6:06 PM Changeset in webkit [259184] by Darin Adler
  • 65 edits
    1 add
    1 delete in trunk

Move TextIterator::rangeFromLocationAndLength off of live ranges
https://bugs.webkit.org/show_bug.cgi?id=209408

Source/WebCore:

Reviewed by Antti Koivisto.

  • Put CharacterRange into a header, CharacterRange.h.
  • Replaced CharacterOffset with direct uses of uint64_t. Because this can be a single offset into an entire document, use a 64-bit integer so we don't limit an entire document to 232 characters; in theory this makes it so we can support a document with tons of text nodes that add up to more than 232.
  • Because CharacterRange uses 64-bit integers we can now convert more easily to and from NSRange and CFRange on Cocoa platforms.
  • Headers.cmake: Added CharacterRange.h.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper _convertToDOMRange:]):
Use CharacterRange, resolveCharacterLocation/Range.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(AXAttributeStringSetSpelling): Ditto.
(-[WebAccessibilityObjectWrapper _textMarkerForIndex:]): Ditto.

  • dom/DocumentMarkerController.cpp:

(WebCore::DocumentMarkerController::collectTextRanges): Take SimpleRange.
(WebCore::DocumentMarkerController::addMarker): Ditto.
(WebCore::DocumentMarkerController::addDictationResultMarker): Ditto.
(WebCore::DocumentMarkerController::addPlatformTextCheckingMarker): Ditto.

  • dom/DocumentMarkerController.h: Updated for above changes.
  • dom/Position.h: Export createLegacyEditingPosition so it can be used

outside of WebCore.

  • dom/SimpleRange.cpp:

(WebCore::fastIsCharacterData): Added. Could be moved to the Node class.
(WebCore::length): Added. Could be moved to the Node class.
(WebCore::makeRangeSelectingNodeContents): Added. Analogous to the
Range::selectNodeContents function.

  • dom/SimpleRange.h: Updated for the above.
  • editing/AlternativeTextController.cpp:

(WebCore::AlternativeTextController::applyAlternativeTextToRange):
Use CharacterRange, resolveCharacterLocation/Range.

  • editing/ApplyStyleCommand.cpp:

(WebCore::ApplyStyleCommand::applyBlockStyle): Ditto.

  • editing/CharacterRange.h: Added.
  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::moveParagraphs):
Use CharacterRange, resolveCharacterLocation/Range.

  • editing/Editing.cpp:

(WebCore::visiblePositionForIndex): Ditto.

  • editing/Editor.cpp:

(WebCore::Editor::advanceToNextMisspelling): Ditto.
(WebCore::correctSpellcheckingPreservingTextCheckingParagraph): Ditto.
(WebCore::Editor::markAndReplaceFor): Ditto.
(WebCore::Editor::changeBackToReplacedString): Ditto.
(WebCore::Editor::scanRangeForTelephoneNumbers): Ditto.
(WebCore::Editor::rangeForTextCheckingResult const): Ditto.

  • editing/TextCheckingHelper.cpp:

(WebCore::findGrammaticalErrors): Ditto.
(WebCore::findMisspellings): Ditto.
(WebCore::TextCheckingParagraph::invalidateParagraphRangeValues): Ditto.
(WebCore::TextCheckingParagraph::rangeLength const): Ditto.
(WebCore::TextCheckingParagraph::subrange const): Ditto.
(WebCore::TextCheckingParagraph::offsetTo const): Ditto.
(WebCore::TextCheckingParagraph::text const): Ditto. Also use StringView.
(WebCore::TextCheckingParagraph::checkingStart const): Ditto.
(WebCore::TextCheckingParagraph::checkingEnd const): Ditto. Also compute
this by adding start and length, and don't cache it.
(WebCore::TextCheckingParagraph::checkingLength const): Ditto.
(WebCore::TextCheckingParagraph::automaticReplacementStart const): Ditto.
(WebCore::TextCheckingParagraph::automaticReplacementLength const): Ditto.
(WebCore::TextCheckingHelper::findFirstMisspelling): Ditto.
(WebCore::TextCheckingHelper::findFirstMisspellingOrBadGrammar): Ditto.
(WebCore::TextCheckingHelper::findFirstGrammarDetail const): Ditto.
(WebCore::TextCheckingHelper::findFirstBadGrammar const): Ditto.
(WebCore::TextCheckingHelper::isUngrammatical const): Ditto.
(WebCore::TextCheckingHelper::guessesForMisspelledOrUngrammaticalRange const): Ditto.
(WebCore::TextCheckingHelper::markAllMisspellings): Ditto.
(WebCore::TextCheckingHelper::markAllBadGrammar): Ditto.
(WebCore::checkTextOfParagraph): Ditto.

  • editing/TextCheckingHelper.h: Updated for the above. Also got rid of

m_checkingEnd since it's sufficient to cache the start and the length.
Should come back later and use CharacterRange instead of 2x CharacterCount.

  • editing/TextIterator.cpp:

(WebCore::characterCount): Use uint64_t.
(WebCore::TextIterator::subrange): Deleted.
(WebCore::TextIterator::rangeFromLocationAndLength): Deleted.
(WebCore::clampedAdd): Added. Helps implement resolveCharacterRange in a way
that can work with any character count without concern about overflow.
(WebCore::resolveCharacterRange): Added. Replaces both subrange and
rangeFromLocationAndLength, using an algorithm close to the one from
the latter function, including workarounds it had. Replaced the boolean
"forSelectionPreservation" with the TextIteratorBehavior options, which seems
to make good sense at all the call sites.
(WebCore::resolveCharacterLocation): Added. Like resolveCharacterRange, but
instead of resolving CharacterRange to SimpleRange, resolves a character location
to a BoundaryPoint. Made a separate function for this in case we later refactor
for efficiency, but for now this simply calls resolveCharacterRange with a zero
length range.

  • editing/TextIterator.h: Moved CharacterCount and CharagerRange into a

separate header. Replaced TextIterator::rangeFromLocationAndLength and
TextIterator::subrange with resolveCharacterLocation and resolveCharacterRange.

  • editing/cocoa/DataDetection.mm:

(WebCore::detectItemAtPositionWithRange): Use CharacterRange,
resolveCharacterLocation/Range.
(WebCore::DataDetection::detectContentInRange): Ditto.

  • editing/cocoa/DictionaryLookup.mm:

(WebCore::DictionaryLookup::rangeForSelection): Ditto.
(WebCore::DictionaryLookup::rangeAtHitTestResult): Ditto.

  • editing/ios/DictationCommandIOS.cpp:

(WebCore::DictationCommandIOS::doApply): Ditto.

  • editing/mac/DictionaryLookupLegacy.mm:

(WebCore::DictionaryLookup::rangeAtHitTestResult): Ditto.

  • page/EventHandler.cpp:

(WebCore::textDistance): Ditto.

  • page/Page.cpp:

(WebCore::replaceRanges): Ditto.
(WebCore::Page::replaceRangesWithText): Ditto.

  • platform/text/TextChecking.h: Ditto.
  • testing/Internals.cpp:

(WebCore::Internals::rangeFromLocationAndLength): Ditto.
(WebCore::Internals::subrange): Ditto.
(WebCore::Internals::handleAcceptedCandidate): Ditto.

  • testing/Internals.h: Made location and length unsigned rather than signed.
  • testing/Internals.idl: Ditto.

Source/WebKit:

Reviewed by Antti Koivisto.

  • Shared/EditingRange.cpp:

(WebKit::EditingRange::toRange): Use CharacterRange,
resolveCharacterLocation/Range.

  • Shared/EditingRange.h: Added a FIXME about replacing with CharacterRange.
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<CharacterRange>::encode): Added.
(IPC::ArgumentCoder<CharacterRange>::decode): Added.
(IPC::ArgumentCoder<GrammarDetail>::encode): Updated to use CharacterRange.
(IPC::ArgumentCoder<GrammarDetail>::decode): Ditto.
(IPC::ArgumentCoder<TextCheckingResult>::encode): Ditto.
(IPC::ArgumentCoder<TextCheckingResult>::decode): Ditto.

  • Shared/WebCoreArgumentCoders.h: Added CharacterRange.
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::textCheckingResultFromNSTextCheckingResult): Use CharacterRange,
resolveCharacterLocation/Range.

  • UIProcess/WebGrammarDetail.cpp:

(WebKit::WebGrammarDetail::WebGrammarDetail): Ditto.

  • UIProcess/WebGrammarDetail.h:

(WebKit::WebGrammarDetail::location const): Ditto.
(WebKit::WebGrammarDetail::length const): Ditto.

  • UIProcess/gtk/TextCheckerGtk.cpp:

(WebKit::TextChecker::checkTextOfParagraph): Ditto.

  • UIProcess/ios/TextCheckerIOS.mm:

(WebKit::TextChecker::checkTextOfParagraph): Ditto.

  • UIProcess/mac/TextCheckerMac.mm:

(WebKit::TextChecker::checkTextOfParagraph): Ditto.
(WebKit::TextChecker::updateSpellingUIWithGrammarString): Ditto.

  • WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm:

(WebKit::TextCheckingControllerProxy::rangeAndOffsetRelativeToSelection): Ditto.
(WebKit::TextCheckingControllerProxy::replaceRelativeToSelection): Ditto.
(WebKit::TextCheckingControllerProxy::annotatedSubstringBetweenPositions): Ditto.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::deleteSurrounding): Ditto.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getPlatformEditorState const): Small tweak.
(WebKit::WebPage::updateSelectionWithDelta): Ditto.
(WebKit::WebPage::requestDocumentEditingContext): Ditto.

Source/WebKitLegacy/mac:

Reviewed by Antti Koivisto.

  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::checkTextOfParagraph): Use CharacterRange,
resolveCharacterLocation/Range.
(WebEditorClient::checkGrammarOfString): Ditto.
(core): Ditto.
(WebEditorClient::updateSpellingUIWithGrammarString): Ditto.
(WebEditorClient::handleAcceptedCandidateWithSoftSpaces): Ditto.

  • WebView/WebFrame.mm:

(-[WebFrame _convertToDOMRange:rangeIsRelativeTo:]): Ditto.

  • WebView/WebView.mm:

(textCheckingResultFromNSTextCheckingResult): Ditto.

Source/WebKitLegacy/win:

Reviewed by Antti Koivisto.

  • WebCoreSupport/WebEditorClient.cpp:

(WebEditorClient::checkGrammarOfString): Use CharacterRange,
resolveCharacterLocation/Range.
(WebEditorClient::updateSpellingUIWithGrammarString): Ditto.

  • WebView.cpp:

(WebView::firstRectForCharacterRangeForTesting): Ditto.

LayoutTests:

Fix Mac-specific firstrectforcharacterrange-styled.html test
https://bugs.webkit.org/show_bug.cgi?id=205314
<rdar://problem/57990717>

Reviewed by Antti Koivisto.

  • accessibility/mac/textmarker-for-index-out-of-bounds-crash-expected.txt:
  • accessibility/mac/textmarker-for-index-out-of-bounds-crash.html:

Updated to expect textMarkerForIndex to clamp rather than returning something invalid.

  • editing/mac/input/firstrectforcharacterrange-plain-expected.txt:
  • editing/mac/input/firstrectforcharacterrange-plain.html:

Updated test output to include what is being tested, not just the test result.
Updated test results to expect clamping rather than an empty rectangle, for values
that are out of bounds. Also got rid of dumping of eidting callbacks since there is
no reason to include them in this test.

  • editing/mac/input/firstrectforcharacterrange-styled-expected.txt:
  • editing/mac/input/firstrectforcharacterrange-styled.html:

Ditto.

  • platform/mac-wk1/TestExpectations: Since our oldest supported release is Mojave, deleted

all rules with Sierra or HighSierra conditionals since those conditions are always false,
and removed any conditionals that said Sierra+, HighSierra+, or Mojave+ because those
conditions are always true. One test, firstrectforcharacterrange-styled.html, had results
checked in that were correct for Mojave but incorrect for Catalina. For that test, the
results are now correct for Catalina, so updated expectations for that.

  • platform/mac-wk2/TestExpectations: Ditto. Also some tests that claimed ImageOnlyFailure

are flaky and sometimes passing, so marked them for either Pass or ImageOnlyFailure.

  • platform/mac/TestExpectations: Ditto. Also some tests marked Failure were flaky and

sometimes passing, so marked them for either Pass or Failure.

  • platform/mac/editing/mac/input/firstrectforcharacterrange-styled-expected.txt: Removed.

This is already a Mac-specific test; it doesn't make sense to have an additional
Mac-specific overridden result since the base result is already Mac-specific.

  • platform/mac/fast/text/attributed-substring-from-range-001-expected.txt:
  • platform/mac/fast/text/attributed-substring-from-range-001.html:

Updated this test to expect the empty string, not "undefined" for an out of range,
since we now clamp instead of failing in such cases.

  • platform/mac/fast/text/attributed-substring-from-range-expected.txt:
  • platform/mac/fast/text/attributed-substring-from-range.html:

Ditto.

5:48 PM Changeset in webkit [259183] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit

Attempt to fix the Mac Catalyst build after r258989
<https://bugs.webkit.org/show_bug.cgi?id=199960>

Remove code that has since been moved to WebPage::platformNeedsLayoutForEditorState().

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getPlatformEditorState const):

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

Remove addHTTPOriginIfNeeded calls
https://bugs.webkit.org/show_bug.cgi?id=209127

Patch by Rob Buis <rbuis@igalia.com> on 2020-03-29
Reviewed by Darin Adler.

Remove unused code.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadURL):

10:29 AM Changeset in webkit [259181] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC] Replace parent() calls with containingBlock() where applicable.
https://bugs.webkit.org/show_bug.cgi?id=209717

Reviewed by Antti Koivisto.

While they both return the same layout box (parent), it's more correct to call continingBlock().

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginAfter const):

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isOverflowVisible const):

  • layout/tableformatting/TableGrid.cpp:

(WebCore::Layout::TableGrid::appendCell):

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

[LFC] Layout::Box::parent() should return const ContainerBox&
https://bugs.webkit.org/show_bug.cgi?id=209400
<rdar://problem/60742432>

Reviewed by Antti Koivisto.

Layout tree is immutable during layout, so every box should be able to return a valid parent (except the ICB, but
class InitialContainingBlock deletes parent() function anyway).

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::staticHorizontalPositionForOutOfFlowPositioned const):

  • layout/blockformatting/BlockFormattingContextQuirks.cpp:

(WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginAfter const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBeforeCollapsesWithParentMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginBefore const):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginAfterCollapsesWithParentMarginAfter const):

  • layout/inlineformatting/InlineFormattingContext.cpp:

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

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::containingBlock const):
(WebCore::Layout::Box::formattingContextRoot const):
(WebCore::Layout::Box::initialContainingBlock const):
(WebCore::Layout::Box::isOverflowVisible const):

  • layout/layouttree/LayoutBox.h:

(WebCore::Layout::Box::parent const):

  • layout/layouttree/LayoutIterator.h:

(WebCore::Layout::LayoutBoxTraversal::nextAncestorSibling):
(WebCore::Layout::LayoutBoxTraversal::next):
(WebCore::Layout::Traversal::firstWithin):
(WebCore::Layout::Traversal::next):
(WebCore::Layout::LayoutIterator<T>::traverseNext):

  • layout/tableformatting/TableGrid.cpp:

(WebCore::Layout::TableGrid::appendCell):

2:58 AM Changeset in webkit [259179] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

Windows build fix: Web Inspector: support editing cookie key/values from inspector
https://bugs.webkit.org/show_bug.cgi?id=31157#c15
<rdar://problem/19281523>

  • platform/network/cf/NetworkStorageSessionCFNetWin.cpp:

(WebCore::NetworkStorageSession::setCookie):

  • Add placeholder to fix build after r259173.
2:08 AM Changeset in webkit [259178] by ddkilzer@apple.com
  • 1 edit in trunk/Source/WebKit/ChangeLog

Add missing ChangeLog entry for r259177.

2:06 AM Changeset in webkit [259177] by ddkilzer@apple.com
  • 1 edit in trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm

Build fix for: [iOS] Delay process suspension for a while after loading an app link
https://bugs.webkit.org/show_bug.cgi?id=209686#c12
<rdar://problem/60888891>

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::tryInterceptNavigation):

  • Restrict call to WebPageProxy::willOpenAppLink() to PLATFORM(IOS_FAMILY) to fix the build.
1:52 AM Changeset in webkit [259176] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebKit

REGRESSION (r257867): [GPUP] Use-after-move in RemoteCDMInstance::createSession()
<https://webkit.org/b/209712>
<rdar://problem/61018795>

Reviewed by Darin Adler.

  • WebProcess/GPU/media/RemoteCDMInstance.cpp:

(WebKit::RemoteCDMInstance::createSession): Fix use-after-move
by using RemoteCDMInstanceSession::identifier().

  • WebProcess/GPU/media/RemoteCDMInstanceSession.h:

(RemoteCDMInstanceSession::identifier): Add getter.

Mar 28, 2020:

11:13 PM Changeset in webkit [259175] by ysuzuki@apple.com
  • 32 edits in trunk/Source/JavaScriptCore

[JSC] Use CacheableIdentifier for all ById case
https://bugs.webkit.org/show_bug.cgi?id=209698

Reviewed by Saam Barati.

StructureStubInfo & AccessCase holds CacheableIdentifier to keep cell identifiers alive.
We are assuming that operationGetById...'s identifier is always owned by CodeBlock, and
we call CacheableIdentifier::createFromIdentifierOwnedByCodeBlock for UniquedStringImpl*.

This is wrong since GetById IC can be generated with identifier which is not owned by CodeBlock.
Let's consider the following case,

  1. op_get_by_val gets GetById IC. CacheableIdentifier is kept by StructureStubInfo/AccessCase correctly.
  2. This CodeBlock gets DFG.
  3. DFG understand op_get_by_val and emit GetById DFG node since it only has one identifier.
  4. Then, DFG can generate GetById DFG code which generates GetById IC
  5. (4)'s GetById IC gets executed. But this IC considers that identifier is owned by CodeBlock since this is ById IC.
  6. New DFG CodeBlock starts compilation. And it gets feedback from (2)'s get_by_val's StructureStubInfo, so it emits GetById with non-cell CacheableIdentifier! So it does not retain the cell. It just registers desired identifier.
  7. While compiling (6) (after parsing bytecode), (2)'s CodeBlock's DFG code & IC gets jettisoned. And then, identifier used in (6) gets destroyed too.
  8. (6)'s CodeBlock finalizes its compilation, registering desired identifiers to the actual CodeBlock. And it found the identifier gets destroyed.

In this patch,

  1. CacheableIdentifier::createFromIdentifierOwnedByCodeBlock is called only when the creator knowns that this is owned by the CodeBlock. Typically, this is when the code generator generates IC.
  2. operationGetById... functions get CacheableIdentifier instead of UniquedStringImpl*. So it propagates whether the given CacheableIdentifier is created from CodeBlock's identifier or cells.
  3. AccessCase holds this propagated CacheableIdentifiers. If CacheableIdentifiers is created from a cell in some tier's IC, then it continues to be represented as a cell-origin CacheableIdentifiers regardless of whether the current IC is GetById / GetByVal. Then GC marks it correctly.
  4. This patch does the same thing to all the ICs.
  5. This patch extends StructureStubInfo / AccessCase to pave the way to use them in PutByVal / InByVal by introducing CacheableIdentifier for Put and In.
  • bytecode/AccessCase.cpp:

(JSC::AccessCase::fromStructureStubInfo):

  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::initGetByIdSelf):
(JSC::StructureStubInfo::initPutByIdReplace):
(JSC::StructureStubInfo::initInByIdSelf):
(JSC::StructureStubInfo::visitAggregate):
(JSC::StructureStubInfo::setCacheType):

  • bytecode/StructureStubInfo.h:

(JSC::StructureStubInfo::identifier):
(JSC::StructureStubInfo::considerCachingBy):
(JSC::StructureStubInfo::getByIdSelfIdentifier): Deleted.
(JSC::StructureStubInfo::considerCachingById): Deleted.
(JSC::StructureStubInfo::considerCachingByVal): Deleted.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGArrayMode.cpp:

(JSC::DFG::canBecomeGetArrayLength):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::emitPutById):
(JSC::DFG::ByteCodeParser::handlePutById):
(JSC::DFG::ByteCodeParser::parseGetById):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::handlePutByVal):

  • dfg/DFGConstantFoldingPhase.cpp:

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

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dump):

  • dfg/DFGNode.h:

(JSC::DFG::Node::convertToInById):
(JSC::DFG::Node::hasCacheableIdentifier):
(JSC::DFG::Node::cacheableIdentifier):
(JSC::DFG::Node::hasIdentifier):
(JSC::DFG::Node::OpInfoWrapper::OpInfoWrapper):
(JSC::DFG::Node::OpInfoWrapper::operator=):

  • dfg/DFGOpInfo.h:

(JSC::DFG::OpInfo::OpInfo):

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

(JSC::DFG::SpeculativeJIT::compileGetById):
(JSC::DFG::SpeculativeJIT::compileGetByIdFlush):
(JSC::DFG::SpeculativeJIT::compileInById):
(JSC::DFG::SpeculativeJIT::compilePutByIdFlush):
(JSC::DFG::SpeculativeJIT::compilePutById):
(JSC::DFG::SpeculativeJIT::compilePutByIdDirect):
(JSC::DFG::SpeculativeJIT::compilePutByIdWithThis):
(JSC::DFG::SpeculativeJIT::cachedPutById):

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

(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileDeleteById):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileDeleteById):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileGetById):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByIdWithThis):
(JSC::FTL::DFG::LowerDFGToB3::compilePutByIdWithThis):
(JSC::FTL::DFG::LowerDFGToB3::compilePutById):
(JSC::FTL::DFG::LowerDFGToB3::compileDelBy):
(JSC::FTL::DFG::LowerDFGToB3::compileDeleteById):
(JSC::FTL::DFG::LowerDFGToB3::compileInById):
(JSC::FTL::DFG::LowerDFGToB3::getById):
(JSC::FTL::DFG::LowerDFGToB3::getByIdWithThis):

  • jit/JIT.h:
  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITGetByIdGenerator::JITGetByIdGenerator):
(JSC::JITGetByIdWithThisGenerator::JITGetByIdWithThisGenerator):
(JSC::JITPutByIdGenerator::JITPutByIdGenerator):
(JSC::JITPutByIdGenerator::slowPathFunction):
(JSC::JITDelByIdGenerator::JITDelByIdGenerator):
(JSC::JITInByIdGenerator::JITInByIdGenerator):

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

(JSC::JIT::emitPutByValWithCachedId):
(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emitSlow_op_del_by_id):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitSlow_op_put_by_id):
(JSC::JIT::emit_op_in_by_id):
(JSC::JIT::emitSlow_op_in_by_id):
(JSC::JIT::emitByValIdentifierCheck):
(JSC::JIT::privateCompilePutByValWithCachedId):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emitPutByValWithCachedId):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitSlow_op_put_by_id):
(JSC::JIT::emit_op_in_by_id):
(JSC::JIT::emitSlow_op_in_by_id):

  • jit/Repatch.cpp:

(JSC::appropriateGenericPutByIdFunction):
(JSC::appropriateOptimizingPutByIdFunction):
(JSC::tryCachePutByID):
(JSC::repatchPutByID):
(JSC::tryCacheInByID):
(JSC::repatchInByID):
(JSC::resetPutByID):

  • jit/Repatch.h:
  • runtime/CacheableIdentifier.cpp:

(JSC::CacheableIdentifier::dump const):

  • runtime/CacheableIdentifier.h:

(JSC::CacheableIdentifier::createFromRawBits):
(JSC::CacheableIdentifier::rawBits const):
(JSC::CacheableIdentifier::CacheableIdentifier):

  • runtime/CacheableIdentifierInlines.h:

(JSC::CacheableIdentifier::createFromIdentifierOwnedByCodeBlock):
(JSC::CacheableIdentifier::createFromImmortalIdentifier):
(JSC::CacheableIdentifier::CacheableIdentifier):

9:43 PM Changeset in webkit [259174] by commit-queue@webkit.org
  • 6 edits in trunk/LayoutTests

Regression: fast/hidpi/image-srcset-svg-canvas-2x.html is failing consistently on iOS EWS
https://bugs.webkit.org/show_bug.cgi?id=207038

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-03-28
Reviewed by Darin Adler.

Disable the canvas scaling anti-aliasing by applying the CSS property
"image-rendering: pixelated;" to the <img> and the <canvas> elements.

Avoid the SVG drawing anti-aliasing entirely by replacing the <cricle>
element by a <rect> element.

  • fast/hidpi/resources/relativesrcset.svg:
  • fast/hidpi/resources/srcset.svg:
  • fast/hidpi/resources/srcset_100px.svg:
  • fast/hidpi/resources/svg_tests.css:

(.test img, .test canvas):

  • platform/mac/TestExpectations:
8:07 PM Changeset in webkit [259173] by Devin Rousso
  • 22 edits
    4 adds in trunk

Web Inspector: support editing cookie key/values from inspector
https://bugs.webkit.org/show_bug.cgi?id=31157
<rdar://problem/19281523>

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • inspector/protocol/Page.json:

Add a session parameter to Page.Cookie type and a new Page.setCookie command.
Remove the size parameter from Page.Cookie as this can be calculated in the frontend.

Source/WebCore:

Test: http/tests/inspector/page/setCookie.html

  • inspector/agents/InspectorPageAgent.h:
  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::buildObjectForCookie):
(WebCore::parseCookieObject): Added.
(WebCore::InspectorPageAgent::setCookie): Added.

  • loader/CookieJar.h:
  • loader/CookieJar.cpp:

(WebCore::CookieJar::setRawCookie): Added.

Source/WebInspectorUI:

  • UserInterface/Models/Cookie.js:

(WI.Cookie):
(WI.Cookie.fromPayload):
(WI.Cookie.parseSetCookieResponseHeader):
(WI.Cookie.prototype.get session): Added.
(WI.Cookie.prototype.expirationDate):
(WI.Cookie.prototype.equals): Added.
(WI.Cookie.prototype.toProtocol): Added.
Add session value in addition to the existing expires value. Create helper methods for
comparing WI.Cookie objects and for using the WI.Cookie as a Page.Cookie type when
invoking protocol commands (right now just Page.setCookie).

  • UserInterface/Views/CookieStorageContentView.js:

(WI.CookieStorageContentView):
(WI.CookieStorageContentView.prototype.get navigationItems):
(WI.CookieStorageContentView.prototype.tableCellContextMenuClicked):
(WI.CookieStorageContentView.prototype.willDismissPopover): Added.
(WI.CookieStorageContentView.prototype.async _willDismissCookiePopover): Added.
(WI.CookieStorageContentView.prototype._handleSetCookieButtonClick): Added.
(WI.CookieStorageContentView.prototype._reloadCookies):
(WI.CookieStorageContentView.prototype._formatCookiePropertyForColumn):
Add a + navigation item that shows a popover for creating a new cookie. When contextmenu
clicking on a table row, add an "Edit" item that shows a popover for creating a new cookie
with the values from the existing cookie, which will "replace" (delete and set) the existing
cookie upon being dismissed.

  • UserInterface/Views/ResourceCookiesContentView.js:

(WI.ResourceCookiesContentView.prototype.tablePopulateCell):
If only use the expires value if session is not set.

  • UserInterface/Views/CookiePopover.js: Added.

(WI.CookiePopover):
(WI.CookiePopover.prototype.get serializedData):
(WI.CookiePopover.prototype.show.createRow):
(WI.CookiePopover.prototype.show.createInputRow):
(WI.CookiePopover.prototype.show):
(WI.CookiePopover.prototype._presentOverTargetElement):
(WI.CookiePopover.prototype._defaultExpires):
(WI.CookiePopover.prototype._parseExpires):
(WI.CookiePopover.prototype._handleInputKeyDown):

  • UserInterface/Views/CookiePopover.css: Added.

(.popover .cookie-popover-content):
(.popover .cookie-popover-content > table):
(.popover .cookie-popover-content > table > tr > th):
(.popover .cookie-popover-content > table > tr > td):
(.popover .cookie-popover-content > table > tr > td > input:matches([type="text"], [type="datetime-local"])):
(.popover .cookie-popover-content > table > tr > td > input:matches([type="text"], [type="datetime-local"]).invalid):
(@media (prefers-color-scheme: dark) .popover .cookie-popover-content > table > tr > th):
Show an <input> (or <select>) for each configuration option when creating a cookie.
Hide the <input> for expires if the <input type="checkbox"> for session is checked.
Indicate when the value in the <input> for expires is not a valid date.

  • UserInterface/Main.html:
  • Localizations/en.lproj/localizedStrings.js:

Source/WebKit:

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

(WebKit::WebCookieJar::setRawCookie):

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

(WebKit::NetworkConnectionToWebProcess::setRawCookie): Added.

LayoutTests:

  • http/tests/inspector/page/setCookie.html: Added.
  • http/tests/inspector/page/setCookie-expected.txt: Added.
  • inspector/unit-tests/number-utilities.html:
  • inspector/unit-tests/number-utilities-expected.txt:

Drive-by: add tests for Number.prototype.maxDecimals.

8:02 PM Changeset in webkit [259172] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r258201): Use-after-move in UserMediaCaptureManager::Source::didFail()
<https://webkit.org/b/209711>
<rdar://problem/61018569>

Reviewed by Darin Adler.

  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::Source::didFail):

  • Use m_errorMessage to fix the use-after-move.
7:58 PM Changeset in webkit [259171] by commit-queue@webkit.org
  • 9 edits in trunk

REGRESSION(r257963) UI process crashes when setting navigation delegate inside navigation delegate callbacks
https://bugs.webkit.org/show_bug.cgi?id=209705
<rdar://problem/60814765>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-03-28
Reviewed by Darin Adler.

Source/WebKit:

I introduced a pattern of making multiple delegate calls sequentially. This is bad because the delegate can change.
We need to go back to the WebPageProxy and get the navigation client again between calls.
I manually verified this fixes the crash in the radar.
Covered by modifying an existing API test to modify the navigation delegate in a callback.

  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::didStartProvisionalNavigation):
(API::NavigationClient::didStartProvisionalLoadForFrame):
(API::NavigationClient::didFailProvisionalNavigationWithError):
(API::NavigationClient::didFailProvisionalLoadWithErrorForFrame):
(API::NavigationClient::didCommitNavigation):
(API::NavigationClient::didCommitLoadForFrame):
(API::NavigationClient::didFinishNavigation):
(API::NavigationClient::didFinishLoadForFrame):
(API::NavigationClient::didFailNavigationWithError):
(API::NavigationClient::didFailLoadWithErrorForFrame):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageNavigationClient):

  • UIProcess/API/glib/WebKitNavigationClient.cpp:
  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::~NavigationState):
(WebKit::NavigationState::NavigationClient::didStartProvisionalNavigation):
(WebKit::NavigationState::NavigationClient::didStartProvisionalLoadForFrame):
(WebKit::NavigationState::NavigationClient::didFailProvisionalNavigationWithError):
(WebKit::NavigationState::NavigationClient::didFailProvisionalLoadWithErrorForFrame):
(WebKit::NavigationState::NavigationClient::didCommitNavigation):
(WebKit::NavigationState::NavigationClient::didCommitLoadForFrame):
(WebKit::NavigationState::NavigationClient::didFinishNavigation):
(WebKit::NavigationState::NavigationClient::didFinishLoadForFrame):
(WebKit::NavigationState::NavigationClient::didFailNavigationWithError):
(WebKit::NavigationState::NavigationClient::didFailLoadWithErrorForFrame):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didFinishLoadForFrame):
(WebKit::WebPageProxy::didFailLoadForFrame):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/AsyncPolicyForNavigationResponse.mm:

(-[TestAsyncNavigationDelegate webView:didFailNavigation:withError:]):
(-[TestAsyncNavigationDelegate webView:didFailProvisionalNavigation:withError:]):

7:56 PM Changeset in webkit [259170] by Devin Rousso
  • 11 edits
    6 adds in trunk

Web Inspector: CSS: create visual editor for box-shadow
https://bugs.webkit.org/show_bug.cgi?id=208380

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

Recognize box-shadow CSS properties in the Styles sidebar, parse the comma-separated list
value for individual box shadows, and create a WI.InlineSwatch for each. When clicked,
show a WI.Popover with a WI.BoxShadowEditor, which contains a table of editors:

Offset X | <input type="text"> | [ 2D (X & Y) ]
Offset Y | <input type="text"> | [ Slider ]

Inset | <input type="checkbox"> |

Blur | <input type="text"> | <input type="range">

Spread | <input type="text"> | <input type="range">

[ ]
[ ]
[ full color picker ]
[ ]
[ ]

  • UserInterface/Models/BoxShadow.js: Added.

(WI.BoxShadow):
(WI.BoxShadow.fromString):
(WI.BoxShadow.parseNumberComponent):
(WI.BoxShadow.prototype.get offsetX):
(WI.BoxShadow.prototype.get offsetY):
(WI.BoxShadow.prototype.get blurRadius):
(WI.BoxShadow.prototype.get spreadRadius):
(WI.BoxShadow.prototype.get inset):
(WI.BoxShadow.prototype.get color):
(WI.BoxShadow.prototype.copy):
(WI.BoxShadow.prototype.toString):
(WI.BoxShadow.prototype.toString.stringifyNumberComponent):

  • UserInterface/Models/CSSCompletions.js:

Add a Set of allowed CSS length units.

  • UserInterface/Views/BoxShadowEditor.js: Added.

(WI.BoxShadowEditor):
(WI.BoxShadowEditor.createInputRow):
(WI.BoxShadowEditor.createSlider):
(WI.BoxShadowEditor.prototype.get element):
(WI.BoxShadowEditor.prototype.get boxShadow):
(WI.BoxShadowEditor.prototype.set boxShadow):
(WI.BoxShadowEditor.prototype.handleEvent):
(WI.BoxShadowEditor.prototype._updateBoxShadow):
(WI.BoxShadowEditor.prototype._updateBoxShadowOffsetFromSliderMouseEvent):
(WI.BoxShadowEditor.prototype._determineShiftForEvent):
(WI.BoxShadowEditor.prototype._handleOffsetSliderSVGKeyDown):
(WI.BoxShadowEditor.prototype._handleOffsetSliderSVGMouseDown):
(WI.BoxShadowEditor.prototype._handleWindowMouseMove):
(WI.BoxShadowEditor.prototype._handleWindowMouseUp):
(WI.BoxShadowEditor.prototype._handleOffsetXInputInput):
(WI.BoxShadowEditor.prototype._handleOffsetXInputKeyDown):
(WI.BoxShadowEditor.prototype._handleOffsetYInputInput):
(WI.BoxShadowEditor.prototype._handleOffsetYInputKeyDown):
(WI.BoxShadowEditor.prototype._handleBlurRadiusInputInput):
(WI.BoxShadowEditor.prototype._handleBlurRadiusInputKeyDown):
(WI.BoxShadowEditor.prototype._handleBlurRadiusSliderInput):
(WI.BoxShadowEditor.prototype._handleSpreadRadiusInputInput):
(WI.BoxShadowEditor.prototype._handleSpreadRadiusInputKeyDown):
(WI.BoxShadowEditor.prototype._handleSpreadRadiusSliderInput):
(WI.BoxShadowEditor.prototype._handleInsetCheckboxChange):
(WI.BoxShadowEditor.prototype._handleColorChanged):

  • UserInterface/Views/BoxShadowEditor.css: Added.

(.box-shadow-editor):
(.box-shadow-editor > table):
(.box-shadow-editor > table > tr > th):
(.box-shadow-editor > table > tr > td):
(.box-shadow-editor > table > tr > td > input[type="text"]):
(.box-shadow-editor > table > tr > td > input[type="range"]):
(.box-shadow-editor > table > tr > td > svg):
(.box-shadow-editor > table > tr > td > svg line.axis):
(.box-shadow-editor > table > tr > td > svg line:not(.axis)):
(.box-shadow-editor > table > tr > td > svg circle):
(@media (prefers-color-scheme: dark) .box-shadow-editor > table > tr > th):

  • UserInterface/Views/InlineSwatch.js:

(WI.InlineSwatch):
(WI.InlineSwatch.prototype._fallbackValue):
(WI.InlineSwatch.prototype._valueEditorValueDidChange):

  • UserInterface/Views/InlineSwatch.css:

(.inline-swatch):
(.inline-swatch:not(.box-shadow), .inline-swatch.box-shadow:matches(:hover, :active)): Added.
(.inline-swatch:matches(.bezier, .box-shadow, .spring, .variable)): Added.
(.inline-swatch:not(.read-only):matches(.bezier, .box-shadow, .spring, .variable):hover): Added.
(.inline-swatch:not(.read-only):matches(.bezier, .box-shadow, .spring, .variable):active): Added.
(.inline-swatch:matches(.bezier, .box-shadow, .spring, .variable) > span): Added.
(@media (prefers-color-scheme: dark) .inline-swatch.box-shadow > svg): Added.
(.inline-swatch:not(.read-only):matches(.bezier, .spring, .variable):hover): Deleted.
(.inline-swatch:not(.read-only):matches(.bezier, .spring, .variable):active): Deleted.
(.inline-swatch:matches(.bezier, .spring, .variable) > span): Deleted.

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype._replaceSpecialTokens):
(WI.SpreadsheetStyleProperty.prototype._addGradientTokens):
(WI.SpreadsheetStyleProperty.prototype._addColorTokens):
(WI.SpreadsheetStyleProperty.prototype._addTimingFunctionTokens):
(WI.SpreadsheetStyleProperty.prototype._addBoxShadowTokens):
(WI.SpreadsheetStyleProperty.prototype._resolveVariables):

  • UserInterface/Views/Variables.css:

(:root):

  • UserInterface/Views/ColorPicker.css:

(.color-picker):
Move --color-picker-width to :root so that WI.BoxShadowEditor can use it.

  • UserInterface/Main.html:
  • UserInterface/Test.html:
  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Images/BoxShadow.svg: Added.

LayoutTests:

  • inspector/model/boxShadow.html: Added.
  • inspector/model/boxShadow-expected.txt: Added.
7:54 PM Changeset in webkit [259169] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r257759): Network: graph in Timing pane of selected resource is missing bars
https://bugs.webkit.org/show_bug.cgi?id=209525

Reviewed by Timothy Hatcher.

WI.ResourceTimingBreakdownView uses the same CSS classes and DOM structure as the parent
WI.NetworkTableContentView, relying on the styles defined there for it's own styles.

  • UserInterface/Views/NetworkTableContentView.css:

(.network-table > .table li:not(.filler, .selected) .cell:not(.current-session)): Added.
(.network-table .error): Added.
(.network-table .waterfall .block): Added.
(body[dir=ltr] .network-table .waterfall .block): Added.
(body[dir=rtl] .network-table .waterfall .block): Added.
(.network-table .waterfall .block.request,): Added.
(.network-table .waterfall .block.mouse-tracking): Added.
(.network-table .waterfall .block.filler): Added.
(.network-table .waterfall .block.redirect): Added.
(.network-table .waterfall .block.queue): Added.
(.network-table .waterfall .block.dns): Added.
(.network-table .waterfall .block.connect): Added.
(.network-table .waterfall .block.secure): Added.
(.network-table .waterfall .block.request): Added.
(.network-table .waterfall .block.response): Added.
(.network-table > .table li:not(.selected) .cell:not(.current-session)): Deleted.
(.network-table > .table .error): Deleted.
(.network-table > .table .waterfall .block): Deleted.
(body[dir=ltr] .network-table > .table .waterfall .block): Deleted.
(body[dir=rtl] .network-table > .table .waterfall .block): Deleted.
(.network-table > .table .waterfall .block.request,): Deleted.
(.network-table > .table .waterfall .block.mouse-tracking): Deleted.
(.network-table > .table .waterfall .block.filler): Deleted.
(.network-table > .table .waterfall .block.redirect): Deleted.
(.network-table > .table .waterfall .block.queue): Deleted.
(.network-table > .table .waterfall .block.dns): Deleted.
(.network-table > .table .waterfall .block.connect): Deleted.
(.network-table > .table .waterfall .block.secure): Deleted.
(.network-table > .table .waterfall .block.request): Deleted.
(.network-table > .table .waterfall .block.response): Deleted.
Drive-by: the WI.Table filler row should not be dimmed.

  • UserInterface/Views/ResourceTimingBreakdownView.css:

(.resource-timing-breakdown .waterfall .block):

7:52 PM Changeset in webkit [259168] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Network: pressing RightArrow or LeftArrow unexpectedly changes panels
https://bugs.webkit.org/show_bug.cgi?id=209625
<rdar://problem/60940609>

Reviewed by Timothy Hatcher.

  • UserInterface/Views/NavigationBar.js:

(WI.NavigationBar.prototype._keyDown):

7:50 PM Changeset in webkit [259167] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

Use-after-move in NetworkProcess::addServiceWorkerSession()
<https://webkit.org/b/209710>
<rdar://problem/61017857>

Reviewed by Darin Adler.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::addServiceWorkerSession):

  • Use addResult.iterator->value.databasePath instead of the serviceWorkerRegistrationDirectory parameter to fix the use-after-move.
7:05 PM Changeset in webkit [259166] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[iOS] Delay process suspension for a while after loading an app link
https://bugs.webkit.org/show_bug.cgi?id=209686
<rdar://problem/60888891>

Reviewed by Darin Adler.

Client apps that rely on WebKit to open app links cannot call the [WKWebView _willOpenAppLink] SPI
that was added in r259146. Instead, we need to call WebPageProxy::willOpenAppLink() in
tryInterceptNavigation() when WebKit opens the AppLink itself.

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::tryInterceptNavigation):

5:59 PM Changeset in webkit [259165] by Simon Fraser
  • 13 edits in trunk/Source

Add a ScrollLatching log channel and improve some logging functionality
https://bugs.webkit.org/show_bug.cgi?id=209706

Reviewed by Darin Adler, David Kilzer.

Source/WebCore:

Add a "ScrollLatching" log channel. Make ScrollLatchingState and Node loggable.
Make a convenience template class ValueOrNull<> which makes logging a pointer type convenient.

Also change Page::pushNewLatchingState() to take the new latching state.

  • dom/Node.cpp:

(WebCore::operator<<):

  • dom/Node.h:
  • page/EventHandler.cpp:

(WebCore::EventHandler::clearLatchedState):

  • page/Page.cpp:

(WebCore::Page::pushNewLatchingState):
(WebCore::Page::popLatchingState):
(WebCore::Page::removeLatchingStateForTarget):

  • page/Page.h:

(WebCore::Page::latchingStateStack const):

  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::clearOrScheduleClearingLatchedStateIfNeeded):
(WebCore::EventHandler::platformPrepareForWheelEvents):
(WebCore::frameViewForLatchingState):
(WebCore::EventHandler::platformCompleteWheelEvent):
(WebCore::EventHandler::platformCompletePlatformWidgetWheelEvent):

  • page/scrolling/ScrollLatchingState.cpp:

(WebCore::operator<<):

  • page/scrolling/ScrollLatchingState.h:

(WebCore::ScrollLatchingState::wheelEventElement const):
(WebCore::ScrollLatchingState::frame const):
(WebCore::ScrollLatchingState::previousWheelScrolledElement const):
(WebCore::ScrollLatchingState::scrollableContainer const):

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::setOrClearLatchedNode):
(WebCore::ScrollingTree::handleWheelEvent):

  • platform/Logging.h:

Source/WTF:

  • wtf/text/TextStream.h:

(WTF::ValueOrNull::ValueOrNull):
(WTF::operator<<):

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

[WinCairo] Unreviewed build fix for WinCairo Debug builds
https://bugs.webkit.org/show_bug.cgi?id=209098

It's broken since r259139 (Bug 209098).

..\..\Source\WebCore\platform\graphics\texmap\TextureMapperGC3DPlatformLayer.cpp(101): error C2065: 'm_state': undeclared identifier

  • platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp:

(WebCore::TextureMapperGC3DPlatformLayer::paintToTextureMapper): Replaced 'm_state' with 'm_context.m_state'.

11:31 AM Changeset in webkit [259163] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix the watchOS build after r259151

The declaration of Pasteboard(const String&) in Pasteboard.h is present for all PLATFORM(IOS_FAMILY), but the
implementation is guarded by ENABLE(DRAG_SUPPORT). r259151 added a codepath that calls this constructor in
IOS_FAMILY code, causing a linker error. Fix this by moving the implementation out of the ENABLE(DRAG_SUPPORT)
guard, to match the declaration in the header.

  • platform/ios/PasteboardIOS.mm:
10:22 AM Changeset in webkit [259162] by Simon Fraser
  • 3 edits
    2 adds in trunk

Sideways jiggles when scrolling the shelves on beta.music.apple.com
https://bugs.webkit.org/show_bug.cgi?id=209696
<rdar://problem/55092050>

Reviewed by Anders Carlsson.
Source/WebCore:

If a scroll snapping animation was running, EventHandler::platformNotifyIfEndGesture() would
reset the latching state. This was added in r190423, but not longer seems necessary
according to manual testing, and the passing layout test.

platformNotifyIfEndGesture() would be called at the end of the fingers-down scroll but
before momentum, and resetting latching here would cause the momentum events to go to
a new target, triggering incorrect scrolls.

Test: tiled-drawing/scrolling/scroll-snap/scroll-snap-phase-change-relatching.html

  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::platformNotifyIfEndGesture):

LayoutTests:

Test that sends scroll and momentum events to a vertically-scrolling overflow with snap-points,
which checked that the document didn't scroll.

  • tiled-drawing/scrolling/scroll-snap/scroll-snap-phase-change-relatching-expected.txt: Added.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-phase-change-relatching.html: Added.
10:22 AM Changeset in webkit [259161] by Simon Fraser
  • 1 edit in trunk/Source/WebCore/ChangeLog

Define ENABLE_WHEEL_EVENT_LATCHING and use it to wrap wheel event latching code
https://bugs.webkit.org/show_bug.cgi?id=209693

Reviewed by Zalan Bujtas.

Source/WebCore:

Replace some #if PLATFORM(MAC) with #if ENABLE(WHEEL_EVENT_LATCHING).

ENABLE_WHEEL_EVENT_LATCHING is currently only enabled on macOS, but it's possible
that it should be defined everywhere that ENABLE_KINETIC_SCROLLING is defined.
This requires testing on WPE, GTK etc.

  • page/EventHandler.cpp:

(WebCore::handleWheelEventInAppropriateEnclosingBox):
(WebCore::EventHandler::handleWheelEvent):
(WebCore::EventHandler::clearLatchedState):
(WebCore::EventHandler::defaultWheelEventHandler):

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

Source/WTF:

Define ENABLE_WHEEL_EVENT_LATCHING for macOS.

  • wtf/PlatformEnable.h:
10:21 AM Changeset in webkit [259160] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[RenderTreeBuilder] Destroy the child first in RenderTreeBuilder::destroyAndCleanUpAnonymousWrappers
https://bugs.webkit.org/show_bug.cgi?id=209695

Reviewed by Antti Koivisto.

The render tree tear down direction is usually leaf first (there are some non-trivial cases where we end up going container first).
Being able to access the ancestor chain helps with some final cleanup activities (e.g repaints).
This patch makes the renderer-inside-an-anonymous-wrapper case similar to the normal case as we destroy the leaf renderer first.
However the anonymous ancestor chain tear down is still container first (see r228606).

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::destroyAndCleanUpAnonymousWrappers):
(WebCore::isAnonymousAndSafeToDelete): Deleted.
(WebCore::findDestroyRootIncludingAnonymous): Deleted.

9:45 AM Changeset in webkit [259159] by commit-queue@webkit.org
  • 20 edits in trunk

Deprecate injected bundle page group SPI
https://bugs.webkit.org/show_bug.cgi?id=209687

Patch by Alex Christensen <achristensen@webkit.org> on 2020-03-28
Reviewed by Timothy Hatcher.

Source/WebKit:

This old code is problematic, and the use of it is being removed in rdar://problem/60987265

  • Shared/WebPageGroupData.cpp:

(WebKit::WebPageGroupData::encode const):
(WebKit::WebPageGroupData::decode):

  • Shared/WebPageGroupData.h:
  • UIProcess/WebPageGroup.cpp:

(WebKit::WebPageGroup::WebPageGroup):

  • WebProcess/InjectedBundle/API/c/WKBundle.cpp:

(WKBundleAddUserScript):
(WKBundleAddUserStyleSheet):
(WKBundleRemoveUserScript):
(WKBundleRemoveUserStyleSheet):
(WKBundleRemoveUserScripts):
(WKBundleRemoveUserStyleSheets):
(WKBundleRemoveAllUserContent):

  • WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::addUserScript): Deleted.
(WebKit::InjectedBundle::addUserStyleSheet): Deleted.
(WebKit::InjectedBundle::removeUserScript): Deleted.
(WebKit::InjectedBundle::removeUserStyleSheet): Deleted.
(WebKit::InjectedBundle::removeUserScripts): Deleted.
(WebKit::InjectedBundle::removeUserStyleSheets): Deleted.
(WebKit::InjectedBundle::removeAllUserContent): Deleted.

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

(WebKit::WebPageGroupProxy::WebPageGroupProxy):
(WebKit::WebPageGroupProxy::userContentController): Deleted.

  • WebProcess/WebPage/WebPageGroupProxy.h:

Tools:

  • TestWebKitAPI/Tests/WebKit/DOMWindowExtensionBasic_Bundle.cpp:

(TestWebKitAPI::DOMWindowExtensionBasic::didCreatePage):
(TestWebKitAPI::DOMWindowExtensionBasic::initialize): Deleted.

  • TestWebKitAPI/Tests/WebKit/DOMWindowExtensionNoCache_Bundle.cpp:

(TestWebKitAPI::DOMWindowExtensionNoCache::didCreatePage):
(TestWebKitAPI::DOMWindowExtensionNoCache::initialize): Deleted.

  • TestWebKitAPI/Tests/WebKit/DocumentStartUserScriptAlertCrash_Bundle.cpp:

(TestWebKitAPI::DocumentStartUserScriptAlertCrashTest::didCreatePage):
(TestWebKitAPI::DocumentStartUserScriptAlertCrashTest::initialize): Deleted.

  • TestWebKitAPI/Tests/WebKit/InjectedBundleDisableOverrideBuiltinsBehavior_Bundle.cpp:

(TestWebKitAPI::InjectedBundleNoDisableOverrideBuiltinsBehaviorTest::initialize): Deleted.
(TestWebKitAPI::InjectedBundleDisableOverrideBuiltinsBehaviorTest::initialize): Deleted.

  • TestWebKitAPI/Tests/WebKit/InjectedBundleMakeAllShadowRootsOpen_Bundle.cpp:

(TestWebKitAPI::InjectedBundleMakeAllShadowRootOpenTest::didCreatePage):
(TestWebKitAPI::InjectedBundleMakeAllShadowRootOpenTest::initialize): Deleted.

8:35 AM Changeset in webkit [259158] by Antti Koivisto
  • 8 edits
    2 adds in trunk

Nullptr crash in InlineTextBox::emphasisMarkExistsAndIsAbove
https://bugs.webkit.org/show_bug.cgi?id=207034

Reviewed by Zalan Bujtas.

Source/WebCore:

Reduced test case by Zalan.

Test: editing/selection/selection-update-during-anonymous-inline-teardown.html

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::setNeedsSelectionUpdateForRenderTreeChange):

Don't clear the selection immediately, do it in updateAppearanceAfterLayoutOrStyleChange after render tree update/layout is done instead.
This is safe as selection uses WeakPtrs to reference renderers.

Renamed to emphasize the use case.

(WebCore::FrameSelection::updateAppearanceAfterLayoutOrStyleChange):
(WebCore::FrameSelection::setNeedsSelectionUpdate): Deleted.

  • editing/FrameSelection.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::willBeDestroyed):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::willBeDestroyed):

  • rendering/RenderTextControlSingleLine.cpp:

(WebCore::RenderTextControlSingleLine::layout):

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::detachFromRenderElement):

LayoutTests:

  • editing/selection/selection-update-during-anonymous-inline-teardown-expected.txt: Added.
  • editing/selection/selection-update-during-anonymous-inline-teardown.html: Added.
8:19 AM Changeset in webkit [259157] by Caio Lima
  • 2 edits in trunk/JSTests

stress/test-out-of-memory.js test gaderning
https://bugs.webkit.org/show_bug.cgi?id=209701

Unreviewed test gardening.

  • stress/test-out-of-memory.js:
6:07 AM Changeset in webkit [259156] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Unreviewed, reverting r259034.
https://bugs.webkit.org/show_bug.cgi?id=209700

Break StressGC bot (Requested by yusukesuzuki on #webkit).

Reverted changeset:

"IndexedDB: destroy UniqueIDBDatabase when it's not used"
https://bugs.webkit.org/show_bug.cgi?id=209532
https://trac.webkit.org/changeset/259034

3:50 AM Changeset in webkit [259155] by ChangSeok Oh
  • 3 edits in trunk/Tools

[GTK] No libsystemd-devel for DNF
https://bugs.webkit.org/show_bug.cgi?id=209697

Reviewed by Philippe Normand.

Replace libsystemd-devel to systemd-devel for DNF.

  • gtk/install-dependencies:
  • wpe/install-dependencies:

Mar 27, 2020:

9:21 PM Changeset in webkit [259154] by Simon Fraser
  • 6 edits in trunk/Source

Define ENABLE_WHEEL_EVENT_LATCHING and use it to wrap wheel event latching code
https://bugs.webkit.org/show_bug.cgi?id=209693

Reviewed by Zalan Bujtas.

Source/WebCore:

Replace some #if PLATFORM(MAC) with #if ENABLE(WHEEL_EVENT_LATCHING).

ENABLE_WHEEL_EVENT_LATCHING is currently only enabled on macOS, but it's possible
that it should be defined everywhere that ENABLE_KINETIC_SCROLLING is defined.
This requires testing on WPE, GTK etc.

  • page/EventHandler.cpp:

(WebCore::handleWheelEventInAppropriateEnclosingBox):
(WebCore::EventHandler::handleWheelEvent):
(WebCore::EventHandler::clearLatchedState):
(WebCore::EventHandler::defaultWheelEventHandler):

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

Source/WTF:

Define ENABLE_WHEEL_EVENT_LATCHING for macOS.

  • wtf/PlatformEnable.h:
9:17 PM Changeset in webkit [259153] by Jack Lee
  • 3 edits
    2 adds in trunk

Nullptr crash in CompositeEditCommand::moveParagraphs when inserting OL into uneditable parent.
https://bugs.webkit.org/show_bug.cgi?id=209641
<rdar://problem/60915598>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Inserting BR in unlistifyParagraph() or OL/UL in listifyParagraph() would fail
because their insertion position is uneditable. In this case BR/OL/UL becomes
parentless and the code crashes later when their parent is dereferenced in
moveParagraphs().
In unlistifyParagraph(), only insertNodeBefore() and insertNodeAfter() are used
and both check parent of listNode for editability, so in order to avoid assertion
in the above functions, we check the editability of listNode before insertion.
In listifyParagraph() it is hard to predict where the final insertion position would be,
so we check the editability of the insertion position after it is finalized.

Test: editing/inserting/insert-ol-uneditable-parent.html

  • editing/InsertListCommand.cpp:

(WebCore::InsertListCommand::unlistifyParagraph):
(WebCore::InsertListCommand::listifyParagraph):

LayoutTests:

Added a regression test for the crash.

  • editing/inserting/insert-ol-uneditable-parent-expected.txt: Added.
  • editing/inserting/insert-ol-uneditable-parent.html: Added.
9:00 PM Changeset in webkit [259152] by commit-queue@webkit.org
  • 3 edits
    4 adds in trunk

Source/WebCore:
Fix null pointer crash in RenderBox::styleDidChange
https://bugs.webkit.org/show_bug.cgi?id=208311

Patch by Eugene But <eugenebut@chromium.org> on 2020-03-27
Reviewed by Ryosuke Niwa.

RenderBox::styleDidChange crashes when changing style for HTMLBodyElement element.
Crash happens on dereferencing null document().documentElement()->renderer() pointer:

if (....
!documentElementRenderer->style().hasExplicitlySetWritingMode())) {

That HTMLBodyElement was added as the second child of document, which is not allowed per spec:

If parent is a document, and any of the statements below, switched on node,
are true, then throw a "HierarchyRequestError" DOMException:

.......
element

parent has an element child that is not child or a doctype is following child.

......

https://dom.spec.whatwg.org/#concept-node-replace

This patch prevents adding HTMLBodyElement as the second child by running more strict checks
inside WebCore::Document::canAcceptChild(). Previously canAcceptChild() would allow all
Replace operations if new child had the same type as old child, even if old child has changed the parent.

If old child has changed the parent (parent is not document), it means that child was removed from document
and it is possible that mutation event handler has already added a new child to document. This is normal
situation, but it means that canAcceptChild() can not short circuit only on comparing the types of old and
new child, and has to run all checks listed in https://dom.spec.whatwg.org/#concept-node-replace

Tests: fast/dom/add-document-child-during-document-child-replacement.html

fast/dom/add-document-child-and-reparent-old-child-during-document-child-replacement.html

  • Source/WebCore/dom/Document.cpp:

(WebCore::Document::canAcceptChild):

LayoutTests:
Test for RenderBox::styleDidChange crash fix
https://bugs.webkit.org/show_bug.cgi?id=208311

Patch by Eugene But <eugenebut@chromium.org> on 2020-03-27
Reviewed by Ryosuke Niwa

add-document-child-during-document-child-replacement.html test adds svg child to a document
from mutation event observer while existing document child is being replaced.
After adding svg child, the document should reject the replacement of existing child, per spec:

If parent is a document, and any of the statements below, switched on node,
are true, then throw a "HierarchyRequestError" DOMException:

.......
element

parent has an element child that is not child or a doctype is following child.

......

https://dom.spec.whatwg.org/#concept-node-replace

add-document-child-and-reparent-old-child-during-document-child-replacement.html reparents the old child
to create slightly different state where old child still has a parent but that parent is not document.

  • add-document-child-during-document-child-replacement.html:
  • add-document-child-and-reparent-old-child-during-document-child-replacement.html:
8:05 PM Changeset in webkit [259151] by Wenson Hsieh
  • 18 edits in trunk/Source

Web content processes should not be able to arbitrarily request pasteboard data from the UI process
https://bugs.webkit.org/show_bug.cgi?id=209657
<rdar://problem/59611585>

Reviewed by Geoff Garen.

Source/WebCore:

Match macOS behavior in the iOS implementation of Pasteboard::createForCopyAndPaste by using the name of the
general pasteboard by default, when initializing a Pasteboard for copying and pasting. In WebKit2, this allows
us to grant permission to the web process when reading from the general pasteboard.

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::createForCopyAndPaste):

Source/WebCore/PAL:

Soft-link the string constant UIPasteboardNameGeneral. See WebKit/ChangeLog for more details.

  • pal/ios/UIKitSoftLink.h:
  • pal/ios/UIKitSoftLink.mm:

Source/WebKit:

This patch adds a mechanism to prevent the UI process from sending pasteboard data to the web process in
response to WebPasteboardProxy IPC messages, unless the user (or the WebKit client, on behalf of the user) has
explicitly made the contents of the pasteboard available to a page in that web process. We determine the latter
by maintaining information about the changeCounts of each pasteboard we allow each web process to read. This
mapping is updated when either the user interacts with trusted UI (context menus, DOM paste menu) for pasting,
or an API client calls into -[WKWebView paste:], as is the case when pasting via the callout bar on iOS or
pasting via keyboard shortcuts (i.e. cmd + V) on macOS and iOS.

See per-change comments below for more details. Under normal circumstances, there should be no change in
behavior; refer to the radar for more context.

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::grantAccessToCurrentPasteboardData):

Add a helper method to grant access to the data currently on the pasteboard with the given name; for now, this
grants access to all related pages that reside in the same web process, but this may be refactored in a future
change to make the mapping granular to each WebPageProxy rather than WebProcessProxy.

(Note: it is _critical_ that this method is never invoked as a result of IPC from the web process.)

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::grantAccessToCurrentData):

Helper method to grant access to the current contents on the named pasteboard. Calling this method updates
m_pasteboardNameToChangeCountAndProcessesMap, such that the given web process is able to read from the
pasteboard with the given name, as long as the changeCount is still the same. To implement this behavior,
we either (1) add the process to an existing WeakHashSet of process proxies in the case where the
changeCount is the same as it was when we added the existing WeakHashSet, or in all other cases, (2) add a
replace the current (changeCount, processes) pair with the new change count and a weak set containing only the
given WebProcessProxy.

(WebKit::WebPasteboardProxy::revokeAccessToAllData):

Helper method to revoke all pasteboard access for the given WebProcessProxy. Called when resetting state, e.g.
after web process termination.

(WebKit::WebPasteboardProxy::canAccessPasteboardData const):

Private helper method to check whether an IPC message can access pasteboard data, based on the IPC::Connection
used to receive the message. This helper method returns true if either the WebKit client has used SPI
(both DOMPasteAllowed and JavaScriptCanAccessClipboard) to grant unmitigated access to the clipboard from the
web process, or access has been previously granted due to user interaction in the UI process or API calls made
directly by the WebKit client.

(WebKit::WebPasteboardProxy::didModifyContentsOfPasteboard):

Private helper method to update the pasteboard changeCount that has been granted to a given web process, in the
case where that web process was also responsible for writing data to the pasteboard and the pasteboard
changeCount prior to modifying the pasteboard was still valid. In other words, we should always allow a web
process to read contents it has just written. This allows us to maintain the use case where a WKWebView client
copies and pastes using back-to-back API calls:

`
[webView copy:nil];
[webView paste:nil];
`

(WebKit::WebPasteboardProxy::getPasteboardPathnamesForType):

Add a FIXME to add the canAccessPasteboardData check here as well. We can't do this yet because the web
process currently relies on being able to read the full list of pasteboard path names when dragging over the
page, but this will be fixed in a followup patch in the near future (see https://webkit.org/b/209671).

(WebKit::WebPasteboardProxy::getPasteboardStringForType):
(WebKit::WebPasteboardProxy::getPasteboardStringsForType):
(WebKit::WebPasteboardProxy::getPasteboardBufferForType):
(WebKit::WebPasteboardProxy::getPasteboardColor):
(WebKit::WebPasteboardProxy::getPasteboardURL):

In all the call sites where we ask for pasteboard data (with the exception of getPasteboardPathnamesForType, for
the time being), check whether we're allowed to read pasteboard data by consulting canAccessPasteboardData. If
not, return early with no data.

(WebKit::WebPasteboardProxy::addPasteboardTypes):
(WebKit::WebPasteboardProxy::setPasteboardTypes):
(WebKit::WebPasteboardProxy::setPasteboardURL):
(WebKit::WebPasteboardProxy::setPasteboardColor):
(WebKit::WebPasteboardProxy::setPasteboardStringForType):

In all the call sites where we knowingly mutate the pasteboard (and bump the changeCount as a result),
additionally update the changeCount to which we've granted access on behalf of the web process that is modifying
the pasteboard.

(WebKit::WebPasteboardProxy::urlStringSuitableForLoading):
(WebKit::WebPasteboardProxy::setPasteboardBufferForType):
(WebKit::WebPasteboardProxy::writeCustomData):
(WebKit::WebPasteboardProxy::readStringFromPasteboard):
(WebKit::WebPasteboardProxy::readURLFromPasteboard):
(WebKit::WebPasteboardProxy::readBufferFromPasteboard):
(WebKit::WebPasteboardProxy::writeURLToPasteboard):
(WebKit::WebPasteboardProxy::writeWebContentToPasteboard):
(WebKit::WebPasteboardProxy::writeImageToPasteboard):
(WebKit::WebPasteboardProxy::writeStringToPasteboard):

(See comments above).

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::performDragOperation):

When performing a drop on macOS, grant temporary access to the drag pasteboard.

(WebKit::WebViewImpl::requestDOMPasteAccess):
(WebKit::WebViewImpl::handleDOMPasteRequestWithResult):

If the user has granted DOM paste access, additionally grant access to the general pasteboard.

  • UIProcess/WebPageProxy.cpp:

(WebKit::isPasteCommandName):
(WebKit::WebPageProxy::executeEditCommand):

When executing an edit command on behalf of a WebKit client, check to see if it is a paste command (one of
the four that are defined in EditorCommand.cpp). If so, we grant access to the current contents of the general
pasteboard.

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

(WebKit::WebPasteboardProxy::webProcessProxyForConnection const):

Add a helper method to map a given IPC::Connection to a WebProcessProxy. While we have a list of WebProcessProxy
objects, we know a priori that at most one of them will have the given connection, so returning a single
WebProcessProxy* here is sufficient (rather than a list of WebProcessProxy*s).

(WebKit::WebPasteboardProxy::allPasteboardItemInfo):
(WebKit::WebPasteboardProxy::informationForItemAtIndex):
(WebKit::WebPasteboardProxy::getPasteboardItemsCount):
(WebKit::WebPasteboardProxy::readURLFromPasteboard):
(WebKit::WebPasteboardProxy::readBufferFromPasteboard):
(WebKit::WebPasteboardProxy::readStringFromPasteboard):
(WebKit::WebPasteboardProxy::urlStringSuitableForLoading):

Update interface stubs for non-Cocoa platforms.

  • UIProcess/WebPasteboardProxy.h:
  • UIProcess/WebPasteboardProxy.messages.in:

Decorate more IPC endpoints with WantsConnection, so that we can reason about the IPC::Connections used to
receive pasteboard messages.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _handleDOMPasteRequestWithResult:]):

If the user has granted DOM paste access, additionally grant access to the general pasteboard.

(-[WKContentView dropInteraction:performDrop:]):

When performing a drop on iOS, grant temporary access to the drag pasteboard.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::willPerformPasteCommand):

  • UIProcess/libwpe/WebPasteboardProxyLibWPE.cpp:

(WebKit::WebPasteboardProxy::readStringFromPasteboard):

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::platformDidSelectItemFromActiveContextMenu):

Grant pasteboard access when using the context menu to paste on macOS.

(WebKit::WebPageProxy::willPerformPasteCommand):

Grant pasteboard access when triggering the "Paste" edit command using WebKit SPI.

7:47 PM Changeset in webkit [259150] by Ross Kirsling
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] Make Operator an enum class to avoid Op* identifiers
https://bugs.webkit.org/show_bug.cgi?id=209637

Reviewed by Darin Adler.

Currently, (e.g.) OpLShift is a value of enum Operator while OpLshift is an opcode.
Capitalization aside, it's confusing to be using Op* for disparate purposes like this.
Let's modernize the enum so that this confusion can go away as a side effect.

  • bytecompiler/NodesCodegen.cpp:

(JSC::emitIncOrDec):
(JSC::PostfixNode::emitBytecode):
(JSC::PrefixNode::emitBytecode):
(JSC::LogicalOpNode::emitBytecode):
(JSC::LogicalOpNode::emitBytecodeInConditionContext):
(JSC::emitReadModifyAssignment):
(JSC::ReadModifyDotNode::emitBytecode):
(JSC::ReadModifyBracketNode::emitBytecode):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::makeBinaryNode):
(JSC::ASTBuilder::makeAssignNode):

  • parser/Nodes.h:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::Parser<LexerType>::parseUnaryExpression):

5:56 PM Changeset in webkit [259149] by mark.lam@apple.com
  • 2 edits in trunk/JSTests

Skip stress/test-out-of-memory.js on memory limited devices.
https://bugs.webkit.org/show_bug.cgi?id=209690
<rdar://problem/60659198>

Reviewed by Keith Miller.

  • stress/test-out-of-memory.js:
5:45 PM Changeset in webkit [259148] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

REGRESSION (r256577): Previous page continues to display after navigating to media document
https://bugs.webkit.org/show_bug.cgi?id=209630
<rdar://problem/60609318>

Reviewed by Simon Fraser.

Add a way for non-HTML documents to signal visually non-empty state (for example when media document constructs the controls for the media content.)

  • html/FTPDirectoryDocument.cpp:

(WebCore::FTPDirectoryDocumentParser::appendEntry):

  • html/MediaDocument.cpp:

(WebCore::MediaDocumentParser::createDocumentStructure):

  • html/PluginDocument.cpp:

(WebCore::PluginDocumentParser::createDocumentStructure):

  • page/FrameView.cpp:

(WebCore::FrameView::resetLayoutMilestones):
(WebCore::FrameView::checkAndDispatchDidReachVisuallyNonEmptyState):

  • page/FrameView.h:
4:51 PM Changeset in webkit [259147] by Simon Fraser
  • 7 edits in trunk/Source/WebCore

Change SVGRenderingContext::renderSubtreeToImageBuffer() to SVGRenderingContext::renderSubtreeToContext()
https://bugs.webkit.org/show_bug.cgi?id=209679

Reviewed by Said Abou-Hallawa.

renderSubtreeToImageBuffer() just gets the context from the buffer, so change the name and signature
and just pass a GraphicsContext.

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage):

  • rendering/svg/RenderSVGResourceMasker.cpp:

(WebCore::RenderSVGResourceMasker::drawContentIntoMaskImage):

  • rendering/svg/RenderSVGResourcePattern.cpp:

(WebCore::RenderSVGResourcePattern::createTileImage const):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::renderSubtreeToContext):
(WebCore::SVGRenderingContext::renderSubtreeToImageBuffer): Deleted.

  • rendering/svg/SVGRenderingContext.h:
  • svg/graphics/filters/SVGFEImage.cpp:

(WebCore::FEImage::platformApplySoftware):

4:44 PM Changeset in webkit [259146] by Chris Dumez
  • 6 edits in trunk/Source/WebKit

[iOS] Delay process suspension for a while after loading an app link
https://bugs.webkit.org/show_bug.cgi?id=209686
<rdar://problem/60888891>

Reviewed by Darin Adler.

Delay process suspension for a while after loading an app link. This will allow the page's script to pass
information more reliably to the native app handling the navigation.

This patch adds a [WKWebView _willOpenAppLink] SPI that the client needs to call before opening the
app link.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _willOpenAppLink]):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::close):

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::willOpenAppLink):

4:25 PM Changeset in webkit [259145] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] MediaPlayerPrivateInterface crash in WebKit::VideoFullscreenManager
https://bugs.webkit.org/show_bug.cgi?id=209688

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:13 PM Changeset in webkit [259144] by Russell Epstein
  • 1 copy in tags/Safari-609.2.1.2.10

Tag Safari-609.2.1.2.10.

3:26 PM Changeset in webkit [259143] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac Debug ] imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=209684

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:00 PM Changeset in webkit [259142] by Alan Coon
  • 1 copy in tags/Safari-609.2.2

Tag Safari-609.2.2.

2:32 PM Changeset in webkit [259141] by Devin Rousso
  • 5 edits in trunk

Web Inspector: should also escape the method when Copy as cURL
https://bugs.webkit.org/show_bug.cgi?id=209665
<rdar://problem/58432154>

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

  • UserInterface/Models/Resource.js:

(WI.Resource.prototype.generateCURLCommand):
(WI.Resource.prototype.generateCURLCommand.escapeStringPosix):
The method could be maliciously crafted, so we should also escape it (if needed).

LayoutTests:

  • http/tests/inspector/network/copy-as-curl.html:
2:25 PM Changeset in webkit [259140] by ysuzuki@apple.com
  • 4 edits in trunk/Source/WebCore

Use EnsureStillAliveScope to keep JSValues alive
https://bugs.webkit.org/show_bug.cgi?id=209577

Reviewed by Geoffrey Garen.

Some of WebCore code is using JSC::Strong<> to ensure JSC value alive while doing some operations.
But JSC::EnsureStillAliveScope is sufficient for this use case. This patch replaces these Strong<> use
with JSC::EnsureStillAliveScope.

  • bindings/js/JSEventListener.h:

(WebCore::JSEventListener::ensureJSFunction const):

  • bindings/js/JSWindowProxy.cpp:

(WebCore::JSWindowProxy::setWindow):

  • bindings/js/WorkerScriptController.cpp:

(WebCore::WorkerScriptController::initScript):

2:08 PM Changeset in webkit [259139] by commit-queue@webkit.org
  • 52 edits
    2 copies
    1 add
    3 deletes in trunk

Use ANGLE_robust_client_memory to replace framebuffer/texture validation
https://bugs.webkit.org/show_bug.cgi?id=209098

Patch by Kenneth Russell <kbr@chromium.org> on 2020-03-27
Reviewed by Dean Jackson.

Source/ThirdParty/ANGLE:

Incorporated fix from anglebug.com/4504 to make
fast/canvas/webgl/uninitialized-test.html pass.

Incorporated fix from anglebug.com/4518 to make:

webgl/2.0.0/conformance2/renderbuffers/invalidate-framebuffer.html
webgl/2.0.0/conformance2/rendering/blitframebuffer-test.html
webgl/2.0.0/conformance2/rendering/rgb-format-support.html
webgl/2.0.0/conformance2/state/gl-object-get-calls.html
webgl/2.0.0/conformance2/textures/misc/tex-new-formats.html

pass.

  • src/libANGLE/Texture.cpp:

(gl::Texture::copySubImage):
(gl::Texture::ensureSubImageInitialized):

  • src/libANGLE/renderer/gl/renderergl_utils.cpp:

(rx::nativegl_gl::InitializeFeatures):

Source/WebCore:

Original patch by James Darpinian.

Delegate most framebuffer, compressed texture, renderbuffer, draw call,
clear, and ReadPixels validation to the ANGLE_robust_client_memory
extension. Delegate much, but not all, texture validation as well.
Remove tracking of textures' levels and immutability state, framebuffer
size and format, and unrenderable texture units from WebCore; these are
now handled by ANGLE. Hook up WebGL 2.0 draw/read framebuffer support
and BlitFramebuffer.

Disable WebGL 2.0 for non-ANGLE backends. It is infeasible to maintain
correctness of GraphicsContextGLOpenGL and GraphicsContextGLOpenGLES
under relaxed OpenGL ES 3.0 constraints.

Covered by existing WebGL layout tests. Several more webgl/2.0.0 tests
pass completely with this change.

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::blitFramebuffer):
(WebCore::WebGL2RenderingContext::getInternalformatParameter):
(WebCore::WebGL2RenderingContext::readBuffer):
(WebCore::WebGL2RenderingContext::renderbufferStorageMultisample):
(WebCore::WebGL2RenderingContext::texStorage2D):
(WebCore::WebGL2RenderingContext::clear):
(WebCore::WebGL2RenderingContext::renderbufferStorage):
(WebCore::WebGL2RenderingContext::baseInternalFormatFromInternalFormat):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGLFramebuffer.cpp:
  • html/canvas/WebGLFramebuffer.h:
  • html/canvas/WebGLRenderingContext.cpp:

(WebCore::WebGLRenderingContext::clear):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::create):
(WebCore::WebGLRenderingContextBase::initializeNewContext):
(WebCore::WebGLRenderingContextBase::clearIfComposited):
(WebCore::WebGLRenderingContextBase::reshape):
(WebCore::WebGLRenderingContextBase::bindFramebuffer):
(WebCore::WebGLRenderingContextBase::bindTexture):
(WebCore::WebGLRenderingContextBase::checkFramebufferStatus):
(WebCore::WebGLRenderingContextBase::compressedTexImage2D):
(WebCore::WebGLRenderingContextBase::compressedTexSubImage2D):
(WebCore::WebGLRenderingContextBase::copyTexSubImage2D):
(WebCore::WebGLRenderingContextBase::deleteTexture):
(WebCore::WebGLRenderingContextBase::validateVertexAttributes):
(WebCore::WebGLRenderingContextBase::drawArrays):
(WebCore::WebGLRenderingContextBase::drawElements):
(WebCore::WebGLRenderingContextBase::generateMipmap):
(WebCore::WebGLRenderingContextBase::readPixels):
(WebCore::WebGLRenderingContextBase::texImageSource2D):
(WebCore::WebGLRenderingContextBase::texImage2DBase):
(WebCore::WebGLRenderingContextBase::texImage2DImpl):
(WebCore::WebGLRenderingContextBase::validateTexFunc):
(WebCore::WebGLRenderingContextBase::texImage2D):
(WebCore::WebGLRenderingContextBase::texSubImage2DImpl):
(WebCore::WebGLRenderingContextBase::texSubImage2D):
(WebCore::WebGLRenderingContextBase::validateTexFuncFormatAndType):
(WebCore::WebGLRenderingContextBase::texSubImage2DBase):
(WebCore::WebGLRenderingContextBase::copyTexImage2D):
(WebCore::WebGLRenderingContextBase::texParameter):
(WebCore::WebGLRenderingContextBase::getBoundReadFramebufferColorFormat):
(WebCore::WebGLRenderingContextBase::getBoundReadFramebufferWidth):
(WebCore::WebGLRenderingContextBase::getBoundReadFramebufferHeight):
(WebCore::WebGLRenderingContextBase::validateTextureBinding):
(WebCore::WebGLRenderingContextBase::validateTexFuncLevel):
(WebCore::WebGLRenderingContextBase::restoreCurrentFramebuffer):
(WebCore::WebGLRenderingContextBase::restoreCurrentTexture2D):
(WebCore::WebGLRenderingContextBase::drawArraysInstanced):
(WebCore::WebGLRenderingContextBase::drawElementsInstanced):
(WebCore::WebGLRenderingContextBase::getBoundFramebufferColorFormat): Deleted.
(WebCore::WebGLRenderingContextBase::getBoundFramebufferWidth): Deleted.
(WebCore::WebGLRenderingContextBase::getBoundFramebufferHeight): Deleted.

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

(WebCore::WebGLTexture::WebGLTexture):
(WebCore::WebGLTexture::setTarget):
(WebCore::WebGLTexture::deleteObjectImpl):
(WebCore::WebGLTexture::computeLevelCount):
(WebCore::WebGLTexture::canGenerateMipmaps):

  • html/canvas/WebGLTexture.h:
  • platform/graphics/ExtensionsGL.h:
  • platform/graphics/angle/ExtensionsGLANGLE.cpp:

(WebCore::ExtensionsGLANGLE::getBooleanvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getBufferParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getFloatvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getFramebufferAttachmentParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getIntegervRobustANGLE):
(WebCore::ExtensionsGLANGLE::getProgramivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getRenderbufferParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getShaderivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexParameterfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getUniformfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getUniformivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getVertexAttribfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getVertexAttribivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getVertexAttribPointervRobustANGLE):
(WebCore::ExtensionsGLANGLE::readPixelsRobustANGLE):
(WebCore::ExtensionsGLANGLE::texImage2DRobustANGLE):
(WebCore::ExtensionsGLANGLE::texParameterfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::texParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::texSubImage2DRobustANGLE):
(WebCore::ExtensionsGLANGLE::compressedTexImage2DRobustANGLE):
(WebCore::ExtensionsGLANGLE::compressedTexSubImage2DRobustANGLE):
(WebCore::ExtensionsGLANGLE::compressedTexImage3DRobustANGLE):
(WebCore::ExtensionsGLANGLE::compressedTexSubImage3DRobustANGLE):
(WebCore::ExtensionsGLANGLE::texImage3DRobustANGLE):
(WebCore::ExtensionsGLANGLE::texSubImage3DRobustANGLE):
(WebCore::ExtensionsGLANGLE::getQueryivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getQueryObjectuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getBufferPointervRobustANGLE):
(WebCore::ExtensionsGLANGLE::getIntegeri_vRobustANGLE):
(WebCore::ExtensionsGLANGLE::getInternalformativRobustANGLE):
(WebCore::ExtensionsGLANGLE::getVertexAttribIivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getVertexAttribIuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getUniformuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getActiveUniformBlockivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getInteger64vRobustANGLE):
(WebCore::ExtensionsGLANGLE::getInteger64i_vRobustANGLE):
(WebCore::ExtensionsGLANGLE::getBufferParameteri64vRobustANGLE):
(WebCore::ExtensionsGLANGLE::samplerParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::samplerParameterfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getSamplerParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getSamplerParameterfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getFramebufferParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getProgramInterfaceivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getBooleani_vRobustANGLE):
(WebCore::ExtensionsGLANGLE::getMultisamplefvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexLevelParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexLevelParameterfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getPointervRobustANGLERobustANGLE):
(WebCore::wipeAlphaChannelFromPixels):
(WebCore::ExtensionsGLANGLE::readnPixelsRobustANGLE):
(WebCore::ExtensionsGLANGLE::getnUniformfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getnUniformivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getnUniformuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::texParameterIivRobustANGLE):
(WebCore::ExtensionsGLANGLE::texParameterIuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexParameterIivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexParameterIuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::samplerParameterIivRobustANGLE):
(WebCore::ExtensionsGLANGLE::samplerParameterIuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getSamplerParameterIivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getSamplerParameterIuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getQueryObjectivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getQueryObjecti64vRobustANGLE):
(WebCore::ExtensionsGLANGLE::getQueryObjectui64vRobustANGLE):

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

(WebCore::GraphicsContextGLOpenGL::reshapeFBOs):
(WebCore::GraphicsContextGLOpenGL::readPixels):
(WebCore::GraphicsContextGLOpenGL::readRenderingResults):
(WebCore::GraphicsContextGLOpenGL::reshape):
(WebCore::GraphicsContextGLOpenGL::bindFramebuffer):
(WebCore::GraphicsContextGLOpenGL::copyTexImage2D):
(WebCore::GraphicsContextGLOpenGL::copyTexSubImage2D):
(WebCore::GraphicsContextGLOpenGL::deleteFramebuffer):
(WebCore::GraphicsContextGLOpenGL::blitFramebuffer):
(WebCore::GraphicsContextGLOpenGL::readBuffer):

  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):

  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp:

(WebCore::ExtensionsGLOpenGLCommon::getTranslatedShaderSourceANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getBooleanvRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getBufferParameterivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getFloatvRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getFramebufferAttachmentParameterivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getIntegervRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getProgramivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getRenderbufferParameterivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getShaderivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getTexParameterfvRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getTexParameterivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getUniformfvRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getUniformivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getVertexAttribfvRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getVertexAttribivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getVertexAttribPointervRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::readPixelsRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::texImage2DRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::texParameterfvRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::texParameterivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::texSubImage2DRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::compressedTexImage2DRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::compressedTexSubImage2DRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::compressedTexImage3DRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::compressedTexSubImage3DRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::texImage3DRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::texSubImage3DRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getQueryivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getQueryObjectuivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getBufferPointervRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getIntegeri_vRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getInternalformativRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getVertexAttribIivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getVertexAttribIuivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getUniformuivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getActiveUniformBlockivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getInteger64vRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getInteger64i_vRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getBufferParameteri64vRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::samplerParameterivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::samplerParameterfvRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getSamplerParameterivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getSamplerParameterfvRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getFramebufferParameterivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getProgramInterfaceivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getBooleani_vRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getMultisamplefvRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getTexLevelParameterivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getTexLevelParameterfvRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getPointervRobustANGLERobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::readnPixelsRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getnUniformfvRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getnUniformivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getnUniformuivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::texParameterIivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::texParameterIuivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getTexParameterIivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getTexParameterIuivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::samplerParameterIivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::samplerParameterIuivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getSamplerParameterIivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getSamplerParameterIuivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getQueryObjectivRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getQueryObjecti64vRobustANGLE):
(WebCore::ExtensionsGLOpenGLCommon::getQueryObjectui64vRobustANGLE):

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

(WebCore::GraphicsContextGLOpenGL::reshapeFBOs):
(WebCore::GraphicsContextGLOpenGL::readPixels):

  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(WebCore::GraphicsContextGLOpenGL::prepareTexture):
(WebCore::GraphicsContextGLOpenGL::readRenderingResults):
(WebCore::GraphicsContextGLOpenGL::reshape):
(WebCore::GraphicsContextGLOpenGL::bindFramebuffer):
(WebCore::GraphicsContextGLOpenGL::copyTexImage2D):
(WebCore::GraphicsContextGLOpenGL::copyTexSubImage2D):
(WebCore::GraphicsContextGLOpenGL::deleteFramebuffer):

  • platform/graphics/opengl/GraphicsContextGLOpenGLES.cpp:

(WebCore::GraphicsContextGLOpenGL::readPixels):
(WebCore::GraphicsContextGLOpenGL::reshapeFBOs):
(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):

  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:

(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):

LayoutTests:

Several more webgl/2.0.0 tests pass completely with these changes.
Rebaseline all WebGL-related layout tests. Nearly all diffs are forward
progressions. All will eventually be passed as more of WebGL 2.0 is
implemented.

Removed fast/canvas/webgl/webgl-specific.html test, which was
duplicated in webgl/1.0.3 and webgl/2.0.0 and which was testing
behavior from an old version of the WebGL specification.

Revised uninitialized-test.html to test current WebGL
specification; copyTexSubImage2D now leaves out-of-range
pixels untouched, rather than zeroing them.

  • fast/canvas/webgl/uninitialized-test.html:
  • fast/canvas/webgl/webgl-specific-expected.txt: Removed.
  • fast/canvas/webgl/webgl-specific.html: Removed.
  • fast/canvas/webgl/webgl2-texStorage-expected.txt:
  • platform/gtk/webgl/1.0.3/conformance/extensions/webgl-compressed-texture-size-limit-expected.txt: Copied from LayoutTests/webgl/1.0.3/conformance/extensions/webgl-compressed-texture-size-limit-expected.txt.
  • platform/ios/webgl/1.0.3/conformance/extensions/webgl-compressed-texture-size-limit-expected.txt: Removed.
  • platform/mac/TestExpectations:
  • platform/wpe/TestExpectations:
  • platform/wpe/webgl/1.0.3/conformance/extensions/webgl-compressed-texture-size-limit-expected.txt: Copied from LayoutTests/webgl/1.0.3/conformance/extensions/webgl-compressed-texture-size-limit-expected.txt.
  • webgl/1.0.3/conformance/extensions/webgl-compressed-texture-size-limit-expected.txt:
  • webgl/2.0.0/conformance/textures/misc/copy-tex-image-and-sub-image-2d-expected.txt:
  • webgl/2.0.0/conformance/textures/misc/tex-sub-image-2d-bad-args-expected.txt:
  • webgl/2.0.0/conformance2/reading/read-pixels-from-fbo-test-expected.txt:
  • webgl/2.0.0/conformance2/renderbuffers/framebuffer-object-attachment-expected.txt:
  • webgl/2.0.0/conformance2/renderbuffers/readbuffer-expected.txt:
  • webgl/2.0.0/conformance2/rendering/blitframebuffer-filter-outofbounds-expected.txt:
  • webgl/2.0.0/conformance2/rendering/blitframebuffer-filter-srgb-expected.txt:
  • webgl/2.0.0/conformance2/rendering/blitframebuffer-multisampled-readbuffer-expected.txt:
  • webgl/2.0.0/conformance2/rendering/blitframebuffer-outside-readbuffer-expected.txt:
  • webgl/2.0.0/conformance2/rendering/blitframebuffer-size-overflow-expected.txt:
  • webgl/2.0.0/conformance2/rendering/blitframebuffer-srgb-and-linear-drawbuffers-expected.txt:
  • webgl/2.0.0/conformance2/rendering/blitframebuffer-stencil-only-expected.txt:
  • webgl/2.0.0/conformance2/rendering/blitframebuffer-test-expected.txt:
  • webgl/2.0.0/conformance2/rendering/clear-func-buffer-type-match-expected.txt:
  • webgl/2.0.0/conformance2/rendering/instanced-arrays-expected.txt:
  • webgl/2.0.0/conformance2/state/gl-object-get-calls-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/copy-texture-image-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-new-formats-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-storage-2d-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/texture-npot-expected.txt:
2:07 PM Changeset in webkit [259138] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

HTMLTrackElement should be pending while it is waiting for LoadableTextTrack request
https://bugs.webkit.org/show_bug.cgi?id=208798
<rdar://problem/60325421>

Reviewed by Geoffrey Garen.

Have HTMLTrackElement and subclass ActiveDOMObject::hasPendingActivity() to keeps its
wrapper alive if its in LOADING state and the page's script has relevant load events
event listeners registered.

No new tests, covered by media/track/track-disabled-addcue.html.

  • html/HTMLTrackElement.cpp:

(WebCore::HTMLTrackElement::HTMLTrackElement):
(WebCore::HTMLTrackElement::create):
(WebCore::HTMLTrackElement::didCompleteLoad):
(WebCore::HTMLTrackElement::readyState const):
(WebCore::HTMLTrackElement::activeDOMObjectName const):
(WebCore::HTMLTrackElement::eventListenersDidChange):
(WebCore::HTMLTrackElement::hasPendingActivity const):
(WebCore::HTMLTrackElement::readyState): Deleted.

  • html/HTMLTrackElement.h:
  • html/HTMLTrackElement.idl:
1:57 PM Changeset in webkit [259137] by Simon Fraser
  • 7 edits
    4 adds in trunk

Hovering over countries at https://covidinc.io/ shows bizarre rendering artifacts
https://bugs.webkit.org/show_bug.cgi?id=209635
<rdar://problem/60935010>

Reviewed by Said Abou-Hallawa.
Source/WebCore:

RenderSVGResourceClipper::applyClippingToContext() cached an ImageBuffer per RenderObject
when using a image buffer mask. However, the function created and rendered into this image buffer
using repaintRect, which can change between invocations. Painting with different repaintRects
is very common when rendering into page tiles.

The buffer can only be re-used if the inputs used to create the buffer (objectBoundingBox, absoluteTransform)
are the same, so store those and compare them when determining when to use the cached buffer, and
don't use repaintRect when setting up the buffer.

This revealed another problem where renderers with visual overflow could be truncated by
the clipping, tested by imported/mozilla/svg/svg-integration/clipPath-html-03.xhtml, which occurred
because RenderLayer::setupClipPath() used the 'svgReferenceBox' for the clipping bounds, which
is the content box of the renderer excluding overflow. Fix this by using the bounds of the layer,
which includes the bounds of descendants.

Tests: svg/clip-path/clip-path-on-overflowing.html

svg/clip-path/resource-clipper-multiple-repaints.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::setupClipPath):

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::removeAllClientsFromCache):
(WebCore::RenderSVGResourceClipper::applyClippingToContext):
(WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage):
(WebCore::RenderSVGResourceClipper::addRendererToClipper):
(WebCore::RenderSVGResourceClipper::resourceBoundingBox):

  • rendering/svg/RenderSVGResourceClipper.h:

LayoutTests:

Ref test that exercises the code path by painting into a tiled compositing
layer.

  • svg/clip-path/clip-path-on-overflowing-expected.html: Added.
  • svg/clip-path/clip-path-on-overflowing.html: Added.
  • svg/clip-path/mask-nested-clip-path-010-expected.svg:
  • svg/clip-path/mask-nested-clip-path-010.svg: Copied from imported/mozilla/svg/svg-integration/clipPath-html-03.xhtml,

and modified to have a non-zero offset for better testing of the clipping bounds computation.

  • svg/clip-path/resource-clipper-multiple-repaints-expected.html: Added.
  • svg/clip-path/resource-clipper-multiple-repaints.html: Added.
1:53 PM Changeset in webkit [259136] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked should validate its parameters
<https://webkit.org/b/209614>
<rdar://problem/60096304>

Reviewed by Alex Christensen.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(NETWORK_PROCESS_MESSAGE_CHECK):

  • Define/undef macro for killing WebContent process when an invalid IPC message is received.

(WebKit::NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked):

  • Use NETWORK_PROCESS_MESSAGE_CHECK to validate its parameters.
1:33 PM Changeset in webkit [259135] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

[StressGC] ASSERTION FAILED: m_wrapper under WebCore::MediaRecorder::dispatchError
https://bugs.webkit.org/show_bug.cgi?id=209674
<rdar://problem/60541201>

Reviewed by Darin Adler.

Keep the MediaRecorder wrapper alive while its state is not inactive (i.e. it is recording
or paused), as it may still dispatch events.

Also drop MediaRecorder::scheduleDeferredTask() and use the utility functions in
ActiveDOMObject instead to achieve the same thing.

No new tests, already covered by http/wpt/mediarecorder/MediaRecorder-onremovetrack.html.

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::suspend):
(WebCore::MediaRecorder::stopRecording):
(WebCore::MediaRecorder::didAddOrRemoveTrack):
(WebCore::MediaRecorder::hasPendingActivity const):
(WebCore::MediaRecorder::scheduleDeferredTask): Deleted.

  • Modules/mediarecorder/MediaRecorder.h:
12:48 PM Changeset in webkit [259134] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

REGRESSION(r258857): Broke aarch64 JSCOnly CI
https://bugs.webkit.org/show_bug.cgi?id=209670

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-03-27
Reviewed by Carlos Alberto Lopez Perez.

Change aarch64 to use 4 KB rather than 64 KB as the ceiling on page size.

This change is definitely incorrect, because it will break our internal aarch64 CI that uses
64 KB pages. But maybe it will fix the public aarch64 CI bot that is using 4 KB pages?
Further investigation is required, because 64 KB should have been a safe value for all
platforms, but first step is to commit this and see what happens.

  • wtf/PageBlock.h:
12:43 PM Changeset in webkit [259133] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Unable to build WebKit with iOS 13.4 SDK
https://bugs.webkit.org/show_bug.cgi?id=209317

Reviewed by Dean Jackson.

  • Platform/spi/ios/UIKitSPI.h:

One more attempt. IPHONE_OS_VERSION_MAX_ALLOWED is inaccurate.

12:12 PM Changeset in webkit [259132] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] ASSERTION FAILED: m_messageEventCount @ WebCore::ServiceWorkerThread::finishedFiringMessageEvent()
https://bugs.webkit.org/show_bug.cgi?id=209672

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:39 AM Changeset in webkit [259131] by Tadeu Zagallo
  • 21 edits in trunk/Source/JavaScriptCore

Fix instances of new.target that should be syntax errors
https://bugs.webkit.org/show_bug.cgi?id=208040
<rdar://problem/59653142>

Reviewed by Michael Saboff.

We were not throwing the appropriate syntax errors for the following usages of new.target:

  • Class field initializers outside ordinary functions: we were missing a check that the closestOrdinaryFunctionScope was not the global scope.
  • Within an eval inside an arrow function: we were only checking that the EvalContextType should be FunctionEvalContext, but that does not tell us whether it's an arrow function or an ordinary function. To fix that we must thread that information from the executables to the parser.
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::link):

  • bytecode/UnlinkedFunctionExecutable.h:
  • debugger/DebuggerCallFrame.cpp:

(JSC::DebuggerCallFrame::evaluateWithScopeExtension):

  • interpreter/Interpreter.cpp:

(JSC::eval):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::Parser):
(JSC::Parser<LexerType>::parseMemberExpression):

  • parser/Parser.h:

(JSC::parse):

  • runtime/CodeCache.cpp:

(JSC::generateUnlinkedCodeBlockImpl):

  • runtime/DirectEvalExecutable.cpp:

(JSC::DirectEvalExecutable::create):
(JSC::DirectEvalExecutable::DirectEvalExecutable):

  • runtime/DirectEvalExecutable.h:
  • runtime/EvalExecutable.cpp:

(JSC::EvalExecutable::EvalExecutable):

  • runtime/EvalExecutable.h:
  • runtime/FunctionExecutable.cpp:

(JSC::FunctionExecutable::FunctionExecutable):

  • runtime/FunctionExecutable.h:
  • runtime/GlobalExecutable.h:

(JSC::GlobalExecutable::GlobalExecutable):

  • runtime/IndirectEvalExecutable.cpp:

(JSC::IndirectEvalExecutable::IndirectEvalExecutable):

  • runtime/ModuleProgramExecutable.cpp:

(JSC::ModuleProgramExecutable::ModuleProgramExecutable):

  • runtime/ProgramExecutable.cpp:

(JSC::ProgramExecutable::ProgramExecutable):

  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::ScriptExecutable):

  • runtime/ScriptExecutable.h:

(JSC::ScriptExecutable::isInsideOrdinaryFunction const):

11:30 AM Changeset in webkit [259130] by Chris Dumez
  • 7 edits in trunk/Source/WebCore

[StressGC] ASSERTION FAILED: m_wrapper under WebCore::WebGLRenderingContextBase::dispatchContextLostEvent
https://bugs.webkit.org/show_bug.cgi?id=209660
<rdar://problem/60541733>

Reviewed by Darin Adler.

Make HTMLCanvasElement an ActiveDOMObject since WebGLRenderingContextBase needs to dispatch events
asynchronously on its canvas element. Update WebGLRenderingContextBase to use the HTML event loop
to dispatch those events asynchronously instead of using suspendible timers.

No new tests, already covered by webgl/max-active-contexts-webglcontextlost-prevent-default.html.

  • dom/TaskSource.h:
  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::HTMLCanvasElement):
(WebCore::HTMLCanvasElement::create):
(WebCore::HTMLCanvasElement::activeDOMObjectName const):

  • html/HTMLCanvasElement.h:
  • html/HTMLCanvasElement.idl:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::loseContextImpl):
(WebCore::WebGLRenderingContextBase::scheduleTaskToDispatchContextLostEvent):
(WebCore::WebGLRenderingContextBase::dispatchContextChangedNotification):
(WebCore::WebGLRenderingContextBase::dispatchContextLostEvent): Deleted.
(WebCore::WebGLRenderingContextBase::dispatchContextChangedEvent): Deleted.

  • html/canvas/WebGLRenderingContextBase.h:
11:21 AM Changeset in webkit [259129] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 Release ] media/modern-media-controls/seek-backward-support/seek-backward-support.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=209668

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:07 AM Changeset in webkit [259128] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Use Optional<> for a lazily-computed bounds rectangle
https://bugs.webkit.org/show_bug.cgi?id=209659

Reviewed by Zalan Bujtas.

Replace LayoutRect& rootRelativeBounds, bool& rootRelativeBoundsComputed with Optional<LayoutRect>.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::setupClipPath):
(WebCore::RenderLayer::setupFilters):
(WebCore::RenderLayer::paintLayerContents):

  • rendering/RenderLayer.h:
11:05 AM Changeset in webkit [259127] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Add missing scope release to DataView's buffer getter
https://bugs.webkit.org/show_bug.cgi?id=209663

Reviewed by Yusuke Suzuki.

  • runtime/JSDataViewPrototype.cpp:

(JSC::dataViewProtoGetterBuffer):

10:58 AM Changeset in webkit [259126] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit

Use -_hasFocusedElement in -_didUpdateInputMode
https://bugs.webkit.org/show_bug.cgi?id=209662

Reviewed by Wenson Hsieh.

Remove duplication by using -_hasFocusedElement.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _didUpdateInputMode:]):

10:54 AM Changeset in webkit [259125] by commit-queue@webkit.org
  • 2 edits in trunk/JSTests

Skip new memory test stress/typed-array-oom-in... in memory limited devices
https://bugs.webkit.org/show_bug.cgi?id=209661

Patch by Paulo Matos <Paulo Matos> on 2020-03-27
Reviewed by Keith Miller.

  • stress/typed-array-oom-in-buffer-accessor.js:
10:00 AM Changeset in webkit [259124] by Wenson Hsieh
  • 17 edits in trunk/Source

DragData::containsURL() should avoid reading URL strings from the pasteboard
https://bugs.webkit.org/show_bug.cgi?id=209642
Work towards <rdar://problem/59611585>

Reviewed by Tim Horton.

Source/WebCore:

Refactor the implementation of DragData::containsURL(), such that in WebKit2, the web process never needs to
reason about the value of any string data in the pasteboard. We move most of the Cocoa-specific logic in
DragData::containsURL into PlatformPasteboard, and add new PasteboardStrategy methods in support of this. See
below for more details. There should be no change in behavior; however, this has the minor benefit of reducing
the number of sync IPC to 1 (2 in the case of macOS) in both containsURL and asURL.

  • platform/PasteboardStrategy.h:

Add new strategy methods containsURLStringSuitableForLoading and urlStringSuitableForLoading, which are used in
DragData::containsURL and DragData::asURL, respectively.

  • platform/PlatformPasteboard.h:
  • platform/cocoa/DragDataCocoa.mm:

(WebCore::DragData::containsURL const):

In Cocoa platforms, the argument to containsURL was effectively unused. Leave only the type behind, now that we
don't need to plumb it through to asURL() anymore.

(WebCore::DragData::asURL const):

In both asURL and containsURL, use the new PasteboardStrategy helpers to get information about loadable URLs in
the drag pasteboard. A bit of macOS-specific code remains here since it relies on DragData::fileNames() --
information which is not present in the platform pasteboard.

  • platform/cocoa/PlatformPasteboardCocoa.mm:

(WebCore::PlatformPasteboard::urlStringSuitableForLoading):

Move the Cocoa-specific implementation of DragData::asURL into PlatformPasteboardCocoa, since the implementation
is mostly the same (with some minor additions for macOS). The only minor changes here (and below, in
containsURLStringSuitableForLoading) is the use of URL::protocolIsInHTTPFamily() instead of checking that
-[NSURL scheme] is equal to either @"http" or @"https".

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::containsURLStringSuitableForLoading):

Move the platform-dependent implementations of DragData::containsURL to PlatformPasteboardIOS and
PlatformPasteboardMac. These implementations were already quite different, so this split into -IOS and -Mac
files is cleaner than using #if and #else in the same method implementation.

  • platform/mac/PlatformPasteboardMac.mm:

(WebCore::PlatformPasteboard::containsURLStringSuitableForLoading):

Source/WebKit:

See WebCore/ChangeLog for more details.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::containsURLStringSuitableForLoading):
(WebKit::WebPasteboardProxy::urlStringSuitableForLoading):

  • UIProcess/WebPasteboardProxy.cpp:

(WebKit::WebPasteboardProxy::containsURLStringSuitableForLoading):
(WebKit::WebPasteboardProxy::urlStringSuitableForLoading):

  • UIProcess/WebPasteboardProxy.h:
  • UIProcess/WebPasteboardProxy.messages.in:

Add IPC plumbing for the new pasteboard strategy methods: containsURLStringSuitableForLoading and
urlStringSuitableForLoading.

  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::containsURLStringSuitableForLoading):
(WebKit::WebPlatformStrategies::urlStringSuitableForLoading):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Source/WebKitLegacy/mac:

See WebCore/ChangeLog for more details.

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPlatformStrategies.mm:

(WebPlatformStrategies::containsURLStringSuitableForLoading):
(WebPlatformStrategies::urlStringSuitableForLoading):

9:54 AM Changeset in webkit [259123] by Alan Coon
  • 8 edits in branches/safari-610.1.7-branch/Source

Versioning.

9:53 AM Changeset in webkit [259122] by Chris Dumez
  • 12 edits in trunk/Source/WebCore

[StressGC] ASSERTION FAILED: m_wrapper under WebCore::MainThreadGenericEventQueue::dispatchOneEvent
https://bugs.webkit.org/show_bug.cgi?id=209655
<rdar://problem/60541442>

Reviewed by Geoffrey Garen.

TrackListBase should subclass ActiveDOMObject and keep its wrapper alive when there are pending
events to be dispatched. TrackListBase has a queue to dispatch events asynchronously.

No new tests, covered by media/track/track-remove-track.html.

  • html/track/AudioTrackList.cpp:

(WebCore::AudioTrackList::activeDOMObjectName const):

  • html/track/AudioTrackList.h:
  • html/track/AudioTrackList.idl:
  • html/track/TextTrackList.cpp:

(WebCore::TextTrackList::activeDOMObjectName const):

  • html/track/TextTrackList.h:
  • html/track/TextTrackList.idl:
  • html/track/TrackListBase.cpp:

(WebCore::TrackListBase::TrackListBase):
(WebCore::TrackListBase::hasPendingActivity const):

  • html/track/TrackListBase.h:
  • html/track/VideoTrackList.cpp:

(WebCore::VideoTrackList::activeDOMObjectName const):

  • html/track/VideoTrackList.h:
  • html/track/VideoTrackList.idl:
9:45 AM Changeset in webkit [259121] by Simon Fraser
  • 34 edits in trunk/LayoutTests

Clean up fast/scrolling/latching tests
https://bugs.webkit.org/show_bug.cgi?id=209629

Reviewed by Zalan Bujtas.

These tests had a bunch of issues:

  • mixture of waitUntilDone/jsTestIsAsync
  • not all used eventSender.monitorWheelEvents
  • script in the body for no reason
  • commented out code, unused variables
  • confusing comments
  • contradictory test content
  • fast/scrolling/latching/iframe_in_iframe-expected.txt:
  • fast/scrolling/latching/iframe_in_iframe.html:
  • fast/scrolling/latching/resources/inner_content.html:
  • fast/scrolling/latching/resources/scroll_nested_iframe_test_inner.html:
  • fast/scrolling/latching/scroll-div-latched-div-expected.txt:
  • fast/scrolling/latching/scroll-div-latched-div.html:
  • fast/scrolling/latching/scroll-div-latched-mainframe-expected.txt:
  • fast/scrolling/latching/scroll-div-latched-mainframe.html:
  • fast/scrolling/latching/scroll-div-no-latching-expected.txt:
  • fast/scrolling/latching/scroll-div-no-latching.html:
  • fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe-expected.txt:
  • fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe.html:
  • fast/scrolling/latching/scroll-iframe-fragment-expected.txt:
  • fast/scrolling/latching/scroll-iframe-fragment.html:
  • fast/scrolling/latching/scroll-iframe-in-overflow-expected.txt:
  • fast/scrolling/latching/scroll-iframe-in-overflow.html:
  • fast/scrolling/latching/scroll-iframe-latched-iframe-expected.txt:
  • fast/scrolling/latching/scroll-iframe-latched-iframe.html:
  • fast/scrolling/latching/scroll-iframe-latched-mainframe-expected.txt:
  • fast/scrolling/latching/scroll-iframe-latched-mainframe.html:
  • fast/scrolling/latching/scroll-iframe-webkit1-latching-bug-expected.txt:
  • fast/scrolling/latching/scroll-iframe-webkit1-latching-bug.html:
  • fast/scrolling/latching/scroll-latched-nested-div-expected.txt:
  • fast/scrolling/latching/scroll-latched-nested-div.html:
  • fast/scrolling/latching/scroll-nested-iframe-expected.txt:
  • fast/scrolling/latching/scroll-nested-iframe.html:
  • fast/scrolling/latching/scroll-select-bottom-test-expected.txt:
  • fast/scrolling/latching/scroll-select-bottom-test.html:
  • fast/scrolling/latching/scroll-select-latched-mainframe-expected.txt:
  • fast/scrolling/latching/scroll-select-latched-mainframe.html:
  • fast/scrolling/latching/scroll-select-latched-select-expected.txt:
  • fast/scrolling/latching/scroll-select-latched-select.html:
  • platform/mac-wk2/TestExpectations:
9:41 AM Changeset in webkit [259120] by Kate Cheney
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] http/tests/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time-database.html is flaky failing on safari-609-branch
<rdar://problem/60940165>

Unreviewed test gardening. Updating expectations for ITP test which
should be skipped due to a short timestampResolution.

  • platform/mac-wk2/TestExpectations:
9:37 AM Changeset in webkit [259119] by Russell Epstein
  • 2 edits in branches/safari-609.2.1.2-branch/Source/WebCore

Cherry-pick r257640. rdar://problem/60919944

updateCSSTransitionsForElementAndProperty should clone RenderStyles
https://bugs.webkit.org/show_bug.cgi?id=208356
rdar://59869560

Reviewed by Antti Koivisto.

Make ownership of the local variable clear by cloning the RenderStyles
used in updateCSSTransitionsForElementAndProperty rather than referencing
different versions.

  • animation/AnimationTimeline.cpp: (WebCore::AnimationTimeline::updateCSSTransitionsForElementAndProperty):

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

9:37 AM Changeset in webkit [259118] by Russell Epstein
  • 15 edits in branches/safari-609.2.1.2-branch

Cherry-pick r256627. rdar://problem/60919944

[Web Animations] Style changes due to Web Animations should not trigger CSS Transitions
https://bugs.webkit.org/show_bug.cgi?id=207760
<rdar://problem/59458111>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Mark Web Platform Tests progressions.

  • web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animation/style-change-events-expected.txt:
  • web-platform-tests/web-animations/interfaces/DocumentTimeline/style-change-events-expected.txt:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events-expected.txt:

Source/WebCore:

While we would consider the unanimated style of CSS Animations specifically when considering what the "start" style values (before-change style in spec terminology)
should be when considering whether to start a CSS Transition during style resolution, we would not consider other types of animations, specifically JS-created Web
Animations. However, Web Platform Tests specifically test whether changes made using the Web Animations API may trigger transitions, and until now they would because
the RenderStyle used to determine the before-change style was the style from the previous resolution, which would include animated values.

To fix this, we make it so that KeyframeEffect objects now keep a copy of the unanimated style used when blending animated values for the very first time. That style
is cleared each time keyframes change, which is rare, but may happen through the Web Animations API. Then in AnimationTimeline::updateCSSTransitionsForElementAndProperty(),
we look for a KeyframeEffect currently affecting the property for which we're considering starting a CSS Transition, and use its unanimated style.

If that unanimated style has not been set yet, this is because the KeyframeEffect has not had a chance to apply itself with a non-null progress. In this case, the before-change
and after-change styles should be the same in order to prevent a transition from being triggered as the unanimated style for this keyframe effect will most likely be this
after-change style, or any future style change that may happen before the keyframe effect starts blending animated values.

Finally, tracking the unanimated style at the KeyframeEffect level means we no longer to track it specifically for CSSAnimation.

  • animation/AnimationTimeline.cpp: (WebCore::keyframeEffectForElementAndProperty): (WebCore::AnimationTimeline::updateCSSTransitionsForElementAndProperty):
  • animation/AnimationTimeline.h:
  • animation/CSSAnimation.cpp: (WebCore::CSSAnimation::create): (WebCore::CSSAnimation::CSSAnimation):
  • animation/CSSAnimation.h:
  • animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::animatesProperty const): Because the backing KeyframeList object may not have been created by the first time we query a KeyframeEffect during CSS Transitions resolution, we provide a method that will check the values provided by the Web Animations API to determine whether it targets a given CSS property. (WebCore::KeyframeEffect::clearBlendingKeyframes): (WebCore::KeyframeEffect::computeDeclarativeAnimationBlendingKeyframes): (WebCore::KeyframeEffect::computeCSSAnimationBlendingKeyframes): (WebCore::KeyframeEffect::apply):
  • animation/KeyframeEffect.h: (WebCore::KeyframeEffect::unanimatedStyle const):
  • style/StyleTreeResolver.cpp: (WebCore::Style::TreeResolver::createAnimatedElementUpdate):

LayoutTests:

Mark that a couple of tests are no longer flaky.

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

9:37 AM Changeset in webkit [259117] by Russell Epstein
  • 1 edit in branches/safari-609.2.1.2-branch/Source/WebCore/ChangeLog

Revert "Cherry-pick r257640. rdar://problem/60260332"

This reverts commit r258426.

9:17 AM WebKitGTK/2.28.x edited by Michael Catanzaro
(diff)
9:12 AM Changeset in webkit [259116] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebCore

Move applyUserAgentIfNeeded calls to a more central place
https://bugs.webkit.org/show_bug.cgi?id=209587

Patch by Rob Buis <rbuis@igalia.com> on 2020-03-27
Reviewed by Darin Adler.

Make main resource loads stop calling applyUserAgentIfNeeded
and instead do it in the CachedResourceLoader.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::addExtraFieldsToRequest):

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::createRequest):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::updateHTTPRequestHeaders):
(WebCore::CachedResourceLoader::requestResource):

  • loader/cache/CachedResourceLoader.h:
  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::updateReferrerAndOriginHeaders):
(WebCore::CachedResourceRequest::updateUserAgentHeader):
(WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders): Deleted.

  • loader/cache/CachedResourceRequest.h:
9:11 AM Changeset in webkit [259115] by youenn@apple.com
  • 19 edits
    1 add in trunk/Source

Filter DOMCache records in network process to reduce the number of records being sent to WebProcess
https://bugs.webkit.org/show_bug.cgi?id=209469
<rdar://problem/55207565>

Reviewed by Alex Christensen.

Source/WebCore:

Instead of retrieving all records and filtering them in WebProcess, WebProcess is now
sending filtering options to NetworkProcess.
In case of keys, ask network process to not send back any response.

Covered by existing tests.

  • Headers.cmake:
  • Modules/cache/CacheStorageConnection.h:
  • Modules/cache/DOMCache.cpp:

(WebCore::DOMCache::doMatch):
(WebCore::DOMCache::matchAll):
(WebCore::DOMCache::keys):
(WebCore::DOMCache::queryCache):
(WebCore::DOMCache::retrieveRecords): Deleted.
(WebCore::DOMCache::queryCacheWithTargetStorage): Deleted.

  • Modules/cache/DOMCache.h:
  • Modules/cache/WorkerCacheStorageConnection.cpp:

(WebCore::WorkerCacheStorageConnection::retrieveRecords):

  • Modules/cache/WorkerCacheStorageConnection.h:
  • WebCore.xcodeproj/project.pbxproj:
  • page/CacheStorageProvider.h:

Source/WebKit:

Receive new retrieve record options and make use of them to filter the records sent back to the WebProcess.
This includes filtering the records for a given requests.
This includes removing responses in case the request is made to gather all requests for Cache.keys().

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::retrieveRecords):

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

(WebKit::CacheStorage::Cache::retrieveRecords):

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

(WebKit::CacheStorageEngineConnection::retrieveRecords):

  • NetworkProcess/cache/CacheStorageEngineConnection.h:
  • NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
  • WebProcess/Cache/WebCacheStorageConnection.cpp:

(WebKit::WebCacheStorageConnection::retrieveRecords):

  • WebProcess/Cache/WebCacheStorageConnection.h:
7:51 AM Changeset in webkit [259114] by commit-queue@webkit.org
  • 2 edits
    1 delete in trunk/JSTests

Pass hardness for test numberingSystemsForLocale-cached-... through test header
https://bugs.webkit.org/show_bug.cgi?id=209476

Patch by Paulo Matos <Paulo Matos> on 2020-03-27
Reviewed by Yusuke Suzuki.

Improvement over change r258190. Instead of creating a new test file
duplicating contents where a hardness parameter is different, pass this
through the test header using the -e flag to jsc.

  • stress/numberingSystemsForLocale-cached-strings-should-be-immortal-and-safe-for-concurrent-access.js:
  • stress/numberingSystemsForLocale-cached-strings-should-be-immortal-and-safe-for-concurrent-access_memory-limited.js: Removed.
6:20 AM WebKitGTK/2.28.x edited by magomez@igalia.com
(diff)
6:14 AM Changeset in webkit [259113] by magomez@igalia.com
  • 3 edits in trunk/Source/WebCore

[WPE] Unnecessary gl synchronization when using an OpenMAX video decoder and GLES2
https://bugs.webkit.org/show_bug.cgi?id=209647

Reviewed by Adrian Perez de Castro.

Don't perform the call to gst_gl_sync_meta_wait_cpu() when using an OpenMAX decoder,
as we don't need synchronization in that case and the internal call to glFinish()
casues an important fps drop.

  • platform/graphics/gstreamer/GStreamerCommon.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::GstVideoFrameHolder::waitForCPUSync):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):

5:54 AM Changeset in webkit [259112] by Chris Lord
  • 22 edits in trunk/Source

Source/WebCore:
[GTK][WPE] Enable kinetic scrolling with async rendering
https://bugs.webkit.org/show_bug.cgi?id=209230

Reviewed by Žan Doberšek.

Refactor ScrollAnimationKinetic so that it no longer depends on
ScrollableArea, uses RunLoop::Timer and is responsible for tracking
the history of scroll events. This allows it to be used in
ScrollingTree*ScrollingNodeNicosia to provide kinetic scrolling when
async scrolling is enabled, on GTK and WPE.

No new tests, this just enables existing functionality in more situations.

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::scrollTo):

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeFrameScrollingNodeNicosia::ScrollingTreeFrameScrollingNodeNicosia):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::handleWheelEvent):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::stopScrollAnimations):

  • page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.h:
  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::ScrollingTreeOverflowScrollingNodeNicosia):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::handleWheelEvent):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::stopScrollAnimations):

  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.h:
  • platform/ScrollAnimationKinetic.cpp:

(WebCore::ScrollAnimationKinetic::ScrollAnimationKinetic):
(WebCore::ScrollAnimationKinetic::appendToScrollHistory):
(WebCore::ScrollAnimationKinetic::clearScrollHistory):
(WebCore::ScrollAnimationKinetic::computeVelocity):
(WebCore::ScrollAnimationKinetic::start):

  • platform/ScrollAnimationKinetic.h:
  • platform/generic/ScrollAnimatorGeneric.cpp:

(WebCore::ScrollAnimatorGeneric::ScrollAnimatorGeneric):
(WebCore::ScrollAnimatorGeneric::scrollToOffsetWithoutAnimation):
(WebCore::ScrollAnimatorGeneric::handleWheelEvent):
(WebCore::ScrollAnimatorGeneric::willEndLiveResize):
(WebCore::ScrollAnimatorGeneric::didAddVerticalScrollbar):
(WebCore::ScrollAnimatorGeneric::didAddHorizontalScrollbar):

  • platform/generic/ScrollAnimatorGeneric.h:

Source/WebKit:
[GTK][WPE] Enable kinetic scrolling with async scrolling
https://bugs.webkit.org/show_bug.cgi?id=209230

Reviewed by Žan Doberšek.

Modify WPE mousewheel event delivery so that it includes the necessary
phases needed to infer press/release times and allow for kinetic
scrolling.

  • Shared/NativeWebWheelEvent.h:
  • Shared/WebEvent.h:
  • Shared/WebWheelEvent.cpp:

(WebKit::WebWheelEvent::encode const):
(WebKit::WebWheelEvent::decode):

  • Shared/libwpe/NativeWebWheelEventLibWPE.cpp:

(WebKit::NativeWebWheelEvent::NativeWebWheelEvent):

  • Shared/libwpe/WebEventFactory.cpp:

(WebKit::WebEventFactory::createWebWheelEvent):

  • Shared/libwpe/WebEventFactory.h:
  • UIProcess/API/wpe/PageClientImpl.cpp:

(WebKit::PageClientImpl::doneWithTouchEvent):

  • UIProcess/API/wpe/ScrollGestureController.cpp:

(WebKit::ScrollGestureController::handleEvent):

  • UIProcess/API/wpe/ScrollGestureController.h:

(WebKit::ScrollGestureController::phase):

  • UIProcess/API/wpe/WPEView.cpp:

(WKWPE::m_backend):

3:36 AM Changeset in webkit [259111] by youenn@apple.com
  • 361 edits
    8 adds
    20 deletes in trunk/Source/ThirdParty/libwebrtc

Bump boringssl version to M82
https://bugs.webkit.org/show_bug.cgi?id=209538

Reviewed by Eric Carlson.

  • CMakeLists.txt:
  • Source/third_party/boringssl: Updated.
  • WebKit/0001-Tweaking-boringssl-include-of-internal.h.patch: Removed.
  • libwebrtc.xcodeproj/project.pbxproj:
2:53 AM Changeset in webkit [259110] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Update Chrome and Firefox versions in user agent quirks
https://bugs.webkit.org/show_bug.cgi?id=209631

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-03-27
Reviewed by Carlos Garcia Campos.

  • platform/UserAgentQuirks.cpp:

(WebCore::UserAgentQuirks::stringForQuirk):

2:53 AM Changeset in webkit [259109] by Philippe Normand
  • 2 edits in trunk/Tools

[Flatpak SDK] Allow passing gst-build Meson options
https://bugs.webkit.org/show_bug.cgi?id=209608

Reviewed by Žan Doberšek.

Add support for the GST_BUILD_ARGS env var storing gst-build Meson options.

  • flatpak/flatpakutils.py:

(WebkitFlatpak.setup_gstbuild):

2:52 AM Changeset in webkit [259108] by Philippe Normand
  • 2 edits in trunk/Tools

[Flatpak SDK] Warn when gst-build support was requested but GST_BUILD_PATH is not set
https://bugs.webkit.org/show_bug.cgi?id=209599

Reviewed by Žan Doberšek.

  • flatpak/flatpakutils.py:

(WebkitFlatpak.setup_gstbuild):
(WebkitFlatpak.setup_dev_env):

Mar 26, 2020:

11:38 PM Changeset in webkit [259107] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Clear the entropy bits in the encodedStructureBits when deallocating a structureID.
https://bugs.webkit.org/show_bug.cgi?id=209632
<rdar://problem/60943876>

Reviewed by Saam Barati.

We currently only use a 32-bit offset in the StructureIDTable's StructureOrOffset.
Though we will never store an offset value that is near 32-bit in size, let alone
64-bit, there's no reason why we can't just use all 64-bits for the offset.
Doing so will also have the benefit of zero'ing out the entropy bits in the old
encodedStructureBits. This guarantees that there's no chance of coalition between
a "freed" structureID's entropy bits and the entropy bits in a dead cell due to
GC bugs.

  • runtime/StructureIDTable.h:
11:03 PM Changeset in webkit [259106] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening for iOS.

  • platform/ios-wk2/TestExpectations:
10:13 PM Changeset in webkit [259105] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

NetworkConnectionToWebProcess::domCookiesForHost should validate its host parameter
<https://webkit.org/b/209612>
<rdar://problem/60097830>

Reviewed by Alex Christensen.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(NETWORK_PROCESS_MESSAGE_CHECK_COMPLETION):

  • Define/undef macro for killing WebContent process when an invalid IPC message is received.

(WebKit::NetworkConnectionToWebProcess::domCookiesForHost):

  • Use NETWORK_PROCESS_MESSAGE_CHECK_COMPLETION) to validate host parameter.
9:31 PM Changeset in webkit [259104] by don.olmstead@sony.com
  • 4 edits in trunk

[MSVC] Remove experimental lambda processor usage
https://bugs.webkit.org/show_bug.cgi?id=209358

Reviewed by Fujii Hironori.

.:

Remove /experimental:newLambdaProcessor since WebKit is no longer able to build
with this setting as of Visual Studio 16.5.0.

  • Source/cmake/OptionsMSVC.cmake:

Source/WebCore:

Fix build for Visual Studio scoping issue for lambdas. The experimental lambada
processor did build this code but is now failing to build WebKit at all.

  • dom/DocumentStorageAccess.cpp:

(WebCore::DocumentStorageAccess::requestStorageAccess):

9:20 PM Changeset in webkit [259103] by Chris Dumez
  • 6 edits in trunk

REGRESSION: Unable to show Web Inspector on empty tabs in Safari
https://bugs.webkit.org/show_bug.cgi?id=209639
<rdar://problem/60937524>

Reviewed by Darin Adler.

Source/WebKit:

Make sure we launch the WebPageProxy's initial process when trying to inspect the
page using Web Inspector (i.e. WebInspectorProxy::connect() is called).

  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::WebInspectorProxy):

  • Take in a reference instead of a raw pointer as it could never be null.
  • Store the inspected page and add the message receiver to its process, even if the process is the dummy one (due to delayed process launch).

(WebKit::WebInspectorProxy::invalidate):
Call reset() to avoid code duplication.

(WebKit::WebInspectorProxy::connect):
Launch the page's initial process if necessary before trying to send IPC to that
process.

(WebKit::WebInspectorProxy::updateForNewPageProcess):
Take in a reference instead of a raw pointer as it could never be null.

  • UIProcess/Inspector/WebInspectorProxy.h:

(WebKit::WebInspectorProxy::create):
Take in a reference instead of a raw pointer as it could never be null.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::launchProcess):
Call WebInspectorProxy::reset() before launching and connecting to the new process.
This is important now that the WebInspectorProxy connect to the dummy process proxy.
We need to make sure the WebInspectorProxy disconnects from the dummy process proxy
because we connect it to the newly launched process.

(WebKit::WebPageProxy::finishAttachingToWebProcess):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
9:13 PM Changeset in webkit [259102] by Fujii Hironori
  • 7 edits in trunk

[Win] lld-link: error: /manifestdependency: is not allowed in .drectve
https://bugs.webkit.org/show_bug.cgi?id=204831

Reviewed by Ross Kirsling.

.:

  • Source/cmake/WebKitMacros.cmake (WEBKIT_EXECUTABLE): Added /manifestdependency linkder option if WIN32.

Source/JavaScriptCore:

  • shell/DLLLauncherMain.cpp: Removed /manifestdependency for Microsoft.VC80.CRT which seems leftover of Bug 116562 (r178530).

Tools:

  • TestWebKitAPI/win/main.cpp:
  • win/DLLLauncher/DLLLauncherMain.cpp:
8:07 PM Changeset in webkit [259101] by Devin Rousso
  • 18 edits in trunk/Source/WebInspectorUI

Web Inspector: add keyboard shortcut to tooltip of pinned tabs
https://bugs.webkit.org/show_bug.cgi?id=209640

Reviewed by Timothy Hatcher.

  • UserInterface/Views/TabBarItem.js:

(WI.TabBarItem):
(WI.TabBarItem.prototype.get displayName): Added.
(WI.TabBarItem.prototype.set displayName): Added.
(WI.TabBarItem.prototype.set title):
(WI.TabBarItem.prototype.titleDidChange): Deleted.

  • UserInterface/Views/GeneralTabBarItem.js:

(WI.GeneralTabBarItem.fromTabContentView):
(WI.GeneralTabBarItem.prototype.get displayName): Added.
(WI.GeneralTabBarItem.prototype.set displayName): Added.
(WI.GeneralTabBarItem.prototype.get title): Deleted.
(WI.GeneralTabBarItem.prototype.set title): Deleted.

  • UserInterface/Views/PinnedTabBarItem.js:

(WI.PinnedTabBarItem):
(WI.PinnedTabBarItem.fromTabContentView):
(WI.PinnedTabBarItem.titleDidChange): Deleted.

  • UserInterface/Views/TabBar.css:

(.tab-bar > .tabs > .item > .name): Added.
(body.window-inactive .tab-bar > .tabs > .item > .name): Added.
(.tab-bar > .tabs > .item > .name > .content): Added.
(.tab-bar > .tabs > .item:not(.selected):hover > .name): Added.
(.tab-bar > .tabs > .item:not(.disabled).selected > .name): Added.
(body.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected > .name): Added.
(.tab-bar > .tabs > .item > .title): Deleted.
(body.window-inactive .tab-bar > .tabs > .item > .title): Deleted.
(.tab-bar > .tabs > .item > .title > .content): Deleted.
(.tab-bar > .tabs > .item:not(.selected):hover > .title): Deleted.
(.tab-bar > .tabs > .item:not(.disabled).selected > .title): Deleted.
(body.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected > .title): Deleted.
Separate the shown name of the tab (displayName) from the tooltip text (title).

  • UserInterface/Views/SearchTabContentView.js:

(WI.SearchTabContentView.tabInfo):

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.tabInfo):
Move the current title value to displayName and add a new title value with the
keyboard shortcut in parenthesis.

  • UserInterface/Views/AuditTabContentView.js:

(WI.AuditTabContentView.tabInfo):

  • UserInterface/Views/ConsoleTabContentView.js:

(WI.ConsoleTabContentView.tabInfo):

  • UserInterface/Views/ElementsTabContentView.js:

(WI.ElementsTabContentView.tabInfo):

  • UserInterface/Views/GraphicsTabContentView.js:

(WI.GraphicsTabContentView.tabInfo):

  • UserInterface/Views/LayersTabContentView.js:

(WI.LayersTabContentView.tabInfo):

  • UserInterface/Views/NetworkTabContentView.js:

(WI.NetworkTabContentView.tabInfo):

  • UserInterface/Views/SourcesTabContentView.js:

(WI.SourcesTabContentView.tabInfo):

  • UserInterface/Views/StorageTabContentView.js:

(WI.StorageTabContentView.tabInfo):

  • UserInterface/Views/TimelineTabContentView.js:

(WI.TimelineTabContentView.tabInfo):
Use displayName instead of title since the name is shown in the UI.

  • UserInterface/Base/Main.js:

(WI.contentLoaded):
Make the Settings Tab shortcut public.

  • Localizations/en.lproj/localizedStrings.js:
7:31 PM Changeset in webkit [259100] by Ryan Haddad
  • 2 edits in trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa

Unreviewed iOS API test gardening for rdar://59611168.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/QuickLook.mm:
7:31 PM Changeset in webkit [259099] by Ryan Haddad
  • 3 edits in trunk/Tools

Unreviewed test gardening for iOS API tests.

  • TestWebKitAPI/Tests/WebKitCocoa/ContextMenus.mm:

(TEST):

  • TestWebKitAPI/Tests/ios/FocusPreservationTests.mm:

(TestWebKitAPI::TEST):

7:05 PM Changeset in webkit [259098] by sbarati@apple.com
  • 2 edits in trunk/PerformanceTests

Make it so RAMification can be run with python 3 and 2 and that it recognizes the new JavaScriptCore.framework directory structure
https://bugs.webkit.org/show_bug.cgi?id=209636

Reviewed by Yusuke Suzuki.

  • JavaScriptCore builds now put the jsc shell under JavaScriptCore.framework/Helpers/jsc, not JavaScriptCore.framework/Resources/jsc
  • It's also helpful to be able to run RAMification with python3.7 and 2.7, since there are some contexts where 3.7 is all we have.
  • JetStream2/RAMification.py:

(frameworkPathFromExecutablePath):
(BaseRunner.processLine):
(LocalRunner.runOneTest):
(main.runTestList):
(main):

6:35 PM Changeset in webkit [259097] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Regression: Unable to trigger context menu on empty tabs in Safari
https://bugs.webkit.org/show_bug.cgi?id=209628

Reviewed by Geoffrey Garen.

Launch the WebPageProxy's initial process if it starts processing mouse events.
As an optimization, the WebPageProxy only launches its initial process when it
really needs to.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::handleMouseEvent):

5:34 PM Changeset in webkit [259096] by Ross Kirsling
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Rename ANDEQUAL to BITANDEQUAL (etc.) throughout frontend
https://bugs.webkit.org/show_bug.cgi?id=209626

Reviewed by Mark Lam.

Our frontend refers to &= |= ^= as ANDEQUAL OREQUAL XOREQUAL, leaving the bitwiseness implied.
It's important to resolve this ambiguity now, as &&= ||= ??= are expected to reach Stage 3 next week.

  • bytecompiler/NodesCodegen.cpp:

(JSC::emitReadModifyAssignment):

  • parser/Lexer.cpp:

(JSC::Lexer<T>::lexWithoutClearingLineTerminator):

  • parser/Nodes.h:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseAssignmentExpression):

  • parser/ParserTokens.h:
5:13 PM Changeset in webkit [259095] by Peng Liu
  • 2 edits in trunk/Source/WebCore

Swipe down gestures cause the video layer to stick for a moment before bouncing back into place
https://bugs.webkit.org/show_bug.cgi?id=209610

Reviewed by Eric Carlson.

Fix an exit fullscreen animation issue by firing the end fullscreen event
to let the page change the video element back to its original position/size
before exiting fullscreen.

Covered by existing tests.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::dispatchEvent):
(WebCore::HTMLMediaElement::exitFullscreen):

5:11 PM Changeset in webkit [259094] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: ArrowLeft and ArrowRight keys select wrong navigation bar items
https://bugs.webkit.org/show_bug.cgi?id=209617

Reviewed by Devin Rousso.

  • UserInterface/Views/NavigationBar.js:

(WI.NavigationBar.prototype._keyDown):
Reverse direction for RTL mode.

4:54 PM Changeset in webkit [259093] by commit-queue@webkit.org
  • 8 edits in trunk/Source

Fix various compiler warnings
https://bugs.webkit.org/show_bug.cgi?id=209438

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-03-26
Reviewed by Darin Adler.

Source/WebCore:

  • dom/Element.cpp: Fix -Wunused-variable warnings.

(WebCore::Element::webAnimations const):
(WebCore::Element::cssAnimations const):
(WebCore::Element::transitions const):
(WebCore::Element::hasCompletedTransitionsForProperty const):
(WebCore::Element::hasRunningTransitionsForProperty const):
(WebCore::Element::hasRunningTransitions const):

  • page/scrolling/ThreadedScrollingTree.cpp: Fix -Wunused-variable warning.

(WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):

  • platform/network/HTTPParsers.h: Fix -Wredundant-move warning.

(WebCore::parseAccessControlAllowList):

Source/WebKit:

  • UIProcess/API/C/WKPage.cpp: Suppress -Wdeprecated-declaration warnings.

(WKPageSetPageLoaderClient):
(WKPageSetPagePolicyClient):

Source/WTF:

Suppress -Wclass-memaccess warning. ConcurrentBuffer is documented to support types that are
bit-copyable but not copy-constructable. This is strange, but who am I to question it?

  • wtf/ConcurrentBuffer.h:
4:27 PM Changeset in webkit [259092] by msaboff@apple.com
  • 14 edits
    1 add
    1 delete in trunk

Refactor YARR Stack Overflow Checks
https://bugs.webkit.org/show_bug.cgi?id=209435
rdar://problem/58988252

Reviewed by Mark Lam.

JSTests:

Added a new test and removed a now obsolete test.

  • stress/regexp-compile-oom.js: Removed because the test is no longer valid.

Previously when therer where different stack check mechanisims we failed different.
This test was based on the different failure modes. With these changes, most of
the contain subtests no longer throw as this test expects.

  • stress/regexp-huge-oom.js: Added.

(shouldBe):
(shouldThrow):

Source/JavaScriptCore:

Refactored stack checks in YARR code including adding a stack check to the YARR JIT'ed code.
The C++ code including the parser, byte code compiler and interpreter now all use StackCheck.
The JIT'ed code needs a stack limit passed via a parameter since the JIT'ed code can be
called from the compiler thread when compiling DFG / FTL code.

Instead of adding a new parameter, consolidated the two pattern context buffer values, buffer
pointer and size, with the new stack limit into a new MatchingContextHolder, an RAII object.
The MatchingContextHolder constructor uses either the VM stack limit or the current thread's
stack limit depending on how it is called.

  • runtime/RegExp.cpp:

(JSC::RegExp::finishCreation):
(JSC::RegExp::byteCodeCompileIfNecessary):
(JSC::RegExp::compile):
(JSC::RegExp::matchConcurrently):
(JSC::RegExp::compileMatchOnly):

  • runtime/RegExp.h:
  • runtime/RegExpInlines.h:

(JSC::RegExp::matchInline):
(JSC::PatternContextBufferHolder::PatternContextBufferHolder): Deleted.
(JSC::PatternContextBufferHolder::~PatternContextBufferHolder): Deleted.
(JSC::PatternContextBufferHolder::buffer): Deleted.
(JSC::PatternContextBufferHolder::size): Deleted.
(): Deleted.

  • yarr/Yarr.h:
  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::Interpreter::matchDisjunction):
(JSC::Yarr::Interpreter::isSafeToRecurse):

  • yarr/YarrJIT.cpp:

(JSC::Yarr::MatchingContextHolder::MatchingContextHolder):
(JSC::Yarr::MatchingContextHolder::~MatchingContextHolder):
(JSC::Yarr::YarrGenerator::initParenContextFreeList):
(JSC::Yarr::YarrGenerator::alignCallFrameSizeInBytes):
(JSC::Yarr::YarrGenerator::compile):
(JSC::Yarr::YarrGenerator::initCallFrame): Deleted.

  • yarr/YarrJIT.h:

(JSC::Yarr::MatchingContextHolder::offsetOfStackLimit):
(JSC::Yarr::MatchingContextHolder::offsetOfPatternContextBuffer):
(JSC::Yarr::MatchingContextHolder::offsetOfPatternContextBufferSize):
(JSC::Yarr::YarrCodeBlock::execute):

  • yarr/YarrPattern.cpp:

(JSC::Yarr::YarrPatternConstructor::YarrPatternConstructor):
(JSC::Yarr::YarrPatternConstructor::isSafeToRecurse):
(JSC::Yarr::YarrPattern::compile):
(JSC::Yarr::YarrPattern::YarrPattern):
(JSC::Yarr::YarrPatternConstructor::isSafeToRecurse const): Deleted.

  • yarr/YarrPattern.h:

LayoutTests:

Updated test for improved stack overflow checking.

  • js/script-tests/stack-overflow-regexp.js:

(shouldThrow.recursiveCall):
(shouldThrow):
(recursiveCall):

  • js/stack-overflow-regexp-expected.txt:
4:10 PM Changeset in webkit [259091] by dbates@webkit.org
  • 3 edits in trunk/Source/WebKit

Rename -_isInteractingWithFocusedElement, add it to the header, and replace calls to hasFocusedElement() with it
https://bugs.webkit.org/show_bug.cgi?id=209623

Reviewed by Simon Fraser.

Rename -_isInteractingWithFocusedElement to -_hasFocusedElement. For now, standardize around
the convention of using -_hasFocusedElement instead of hasFocusedElement(_focusedElementInformation).

I think in the ideal world -_hasFocusedElement would not exist and instead -_elementDidBlur would
reset the state of _focusedElementInformation to what it was when a page is first loaded. I will
look to do this in a subsequent patch because it is risky. Doing so requires a careful audit of all
call sites that use _focusedElementInformation as they may have inadvertently depended on stale state.

While I am here, I added -_hasFocusedElement to WKContentViewInteraction.h so that I can make use
of it in the fix for <rdar://problem/60871807>.

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _didGetTapHighlightForRequest:color:quads:topLeftRadius:topRightRadius:bottomLeftRadius:bottomRightRadius:nodeHasBuiltInClickHandling:]):
(-[WKContentView inputViewForWebView]):
(-[WKContentView _selectionClipRect]):
(-[WKContentView gestureRecognizerShouldBegin:]):
(-[WKContentView canPerformActionForWebView:withSender:]):
(-[WKContentView _hasFocusedElement]):
(-[WKContentView changeSelectionWithGestureAt:withGesture:withState:withFlags:]):
(-[WKContentView selectPositionAtPoint:completionHandler:]):
(-[WKContentView selectPositionAtBoundary:inDirection:fromPoint:completionHandler:]):
(-[WKContentView selectTextWithGranularity:atPoint:completionHandler:]):
(-[WKContentView updateSelectionWithExtentPoint:completionHandler:]):
(-[WKContentView updateSelectionWithExtentPoint:withBoundary:completionHandler:]):
(-[WKContentView setSelectedTextRange:]):
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):
(-[WKContentView _updateInputContextAfterBlurringAndRefocusingElement]):
(-[WKContentView _updateSelectionAssistantSuppressionState]):
(-[WKContentView _autofillContext]):
(hasFocusedElement): Deleted.
(-[WKContentView _isInteractingWithFocusedElement]): Deleted.

4:09 PM Changeset in webkit [259090] by sihui_liu@apple.com
  • 3 edits in trunk/Source/WebCore

REGRESSION(r259034): access to null UniqueIDBDatabase in UniqueIDBDatabaseConnection::~UniqueIDBDatabaseConnection()
https://bugs.webkit.org/show_bug.cgi?id=209618
<rdar://problem/60919105>

Reviewed by Geoffrey Garen.

It's possible UniqueIDBDatabase is destroyed before UniqueIDBDatabaseConnection in
UniqueIDBDatabase::connectionClosedFromClient, so it's better not access
UniqueIDBDatabase in ~UniqueIDBDatabaseConnection() and let UniqueIDBDatabaseConnection have a IDBServer member.

  • Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:

(WebCore::IDBServer::UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::~UniqueIDBDatabaseConnection):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::abortTransactionWithoutCallback):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::connectionClosedFromClient):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::didFireVersionChangeEvent):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::didFinishHandlingVersionChange):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::establishTransaction):

  • Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:

(WebCore::IDBServer::UniqueIDBDatabaseConnection::database):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::server):

4:06 PM Changeset in webkit [259089] by dbates@webkit.org
  • 6 edits in trunk/Source

Remove hitTestOrder from ElementContext as it is no longer need
https://bugs.webkit.org/show_bug.cgi?id=209561
<rdar://problem/60888305>

Reviewed by Wenson Hsieh.

Revert the temporary workaround made in r257749 as <rdar://problem/59602885>
Source/WebCore:

has been fixed.

  • dom/ElementContext.h:

(WebCore::ElementContext::encode const):
(WebCore::ElementContext::decode):

Source/WebKit:

has been fixed: WebKit no longer needs to explicitly annotate the resulting
elements found in textInputContextsInRect() with their hit test order.
Instead client code has been updated to assume these elements are returned
in hit test order.

  • UIProcess/API/Cocoa/_WKTextInputContext.mm:

(-[_WKTextInputContext _hitTestOrder]): Deleted.

  • UIProcess/API/Cocoa/_WKTextInputContextInternal.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::textInputContextsInRect):
(WebKit::WebPage::contextForElement const):

3:57 PM Changeset in webkit [259088] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 Release ] tiled-drawing/scrolling/fixed/four-bars-zoomed.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=209624

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:40 PM Changeset in webkit [259087] by Alan Coon
  • 7 edits in branches/safari-609.2.1.2-branch/Source

Cherry-pick r258267, r258062, r258038, r258381, r255997.

3:39 PM Changeset in webkit [259086] by Alan Coon
  • 8 edits in branches/safari-609.2.1.2-branch/Source

Versioning.

3:37 PM Changeset in webkit [259085] by timothy_horton@apple.com
  • 9 edits in trunk/Source

Pinch to zoom gesture has to be repeated twice if the cursor isn't moved between gestures
https://bugs.webkit.org/show_bug.cgi?id=203132
<rdar://problem/27439348>

Reviewed by Simon Fraser.

  • page/EventHandler.h:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::endMagnificationGesture):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::didEndMagnificationGesture):
Plumb the end of a pinch-zoom gesture to EventHandler.

3:22 PM Changeset in webkit [259084] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] http/tests/eventsource/eventsource-reconnect-during-navigate-crash.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=209622

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:01 PM Changeset in webkit [259083] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Regression(r258949) Safari sometimes crashes when becoming the foreground application
https://bugs.webkit.org/show_bug.cgi?id=209620
<rdar://problem/60930466>

Reviewed by Per Arne Vollan.

Make sure m_activationObserver gets unregistered on all Cocoa platforms, not just on iOS.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::unregisterNotificationObservers):

2:50 PM Changeset in webkit [259082] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk1 ] fast/loader/child-frame-add-after-back-forward.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=209621

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
2:36 PM Changeset in webkit [259081] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

[StressGC] ASSERTION FAILED: m_wrapper under WebCore::HTMLMediaElement::dispatchEvent
https://bugs.webkit.org/show_bug.cgi?id=209616
<rdar://problem/60541294>

Reviewed by Saam Barati.

HTMLMediaElement::hasPendingActivity() should return true if there are pending tasks on
m_playbackTargetIsWirelessQueue since the tasks we enqueue there dispatch events.

No new tests, covered by media/modern-media-controls/placard-support/placard-support-airplay.html.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::hasPendingActivity const):

2:33 PM Changeset in webkit [259080] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

[ Mac wk1] ASSERTION FAILED: m_wrapper under WebCore::XMLHttpRequestUpload::dispatchProgressEvent
https://bugs.webkit.org/show_bug.cgi?id=209560
<rdar://problem/60887773>

Reviewed by Geoffrey Garen.

XMLHttpRequest::hasPendingActivity() was returning false if the XMLHttpRequest object did not
have any relevant event listeners. However, the XMLHttpRequestUpload's wrapper lifetime is tried
to the lifetime of its XMLHttpRequest wrapper. As a result, both the XMLHttpRequest and
XMLHttpRequestUpload wrappers could get garbage collected if the XMLHttpRequest did not have a
relevant listener, even though XMLHttpRequestUpload may have a relevant event listeners. We would
then hit the assertion when trying to fire an event on this XMLHttpRequestUpload object.

To address the issue, we update XMLHttpRequest::hasPendingActivity() to return false if both
XMLHttpRequest AND XMLHttpRequestUpload have no relevant event listeners.

No new tests, covered by imported/w3c/web-platform-tests/xhr/send-response-upload-event-progress.htm

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::hasPendingActivity const):

  • xml/XMLHttpRequestUpload.cpp:

(WebCore::XMLHttpRequestUpload::eventListenersDidChange):

  • xml/XMLHttpRequestUpload.h:
2:25 PM Changeset in webkit [259079] by rniwa@webkit.org
  • 3 edits
    2 adds in trunk

Crash in RadioButtonGroups::requiredStateChanged
https://bugs.webkit.org/show_bug.cgi?id=209585

Reviewed by Zalan Bujtas.

Source/WebCore:

Like r254722, radio group could be null in RadioButtonGroups::requiredStateChanged. Added a null check.

Test: fast/forms/update-required-state-on-radio-before-finalizing-tree-insertion-crash.html

  • dom/RadioButtonGroups.cpp:

(WebCore::RadioButtonGroups::requiredStateChanged):

LayoutTests:

Added a regression test.

  • fast/forms/update-required-state-on-radio-before-finalizing-tree-insertion-crash-expected.txt: Added.
  • fast/forms/update-required-state-on-radio-before-finalizing-tree-insertion-crash.html: Added.
2:10 PM Changeset in webkit [259078] by dbates@webkit.org
  • 4 edits in trunk

WebPage::selectPositionAtPoint() does not focus an element in a non-focused frame
https://bugs.webkit.org/show_bug.cgi?id=209559
<rdar://problem/60887055>

Reviewed by Wenson Hsieh.

Source/WebKit:

Call setFocusedFrameBeforeSelectingTextAtLocation() in WebPage::selectPositionAtPoint() to
update the focused frame before performing the selection. This way the target element will
be focused by the selection, if not already focused.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::selectPositionAtPoint):

Tools:

Add a test.

  • TestWebKitAPI/Tests/ios/UIWKInteractionViewProtocol.mm:

(TEST):

1:59 PM Changeset in webkit [259077] by Alan Coon
  • 1 copy in tags/Safari-610.1.7.6

Tag Safari-610.1.7.6.

1:57 PM Changeset in webkit [259076] by Fujii Hironori
  • 6 edits in trunk

WebKitTestRunner should enable ResourceLoadStatistics also for non-Cocoa ports
https://bugs.webkit.org/show_bug.cgi?id=209410

Reviewed by Youenn Fablet.

Source/WebKit:

NetworkSession's member variables for ResourceLoadStatistics were
initialized only for Cocoa port. They also should be initialized
for non-Cocoa ports.

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession): Added member initializers for ResourceLoadStatistics.

  • NetworkProcess/NetworkSession.h: Have m_resourceLoadStatisticsDirectory only if ENABLE(RESOURCE_LOAD_STATISTICS).
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa): Removed the code to initialize member variables for ResourceLoadStatistics.

Tools:

Cocoa WebKitTestRunner always enables ResourceLoadStatistics.
Other ports should do so.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::platformAdjustContext): Enable ResourceLoadStatistics
by using WKWebsiteDataStoreSetResourceLoadStatisticsEnabled.

1:48 PM Changeset in webkit [259075] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Catalina ] compositing/clipping/border-radius-async-overflow-stacking.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=209619

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:45 PM Changeset in webkit [259074] by Kate Cheney
  • 4 edits in trunk

Guard AppBound domain protections with PLATFORM(iOS_FAMILY)
https://bugs.webkit.org/show_bug.cgi?id=209615
<rdar://problem/60931014>

Reviewed by Darin Adler.

Source/WebKit:

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setIsNavigatingToAppBoundDomain):

Tools:

Tests should only be run on iOS.

  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:
1:43 PM Changeset in webkit [259073] by cturner@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Fix missing NULL-check in setSyncOnClock
https://bugs.webkit.org/show_bug.cgi?id=209609

Unreviewed, simple fix.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::setSyncOnClock): Some systems are configured so that
audio sinks are not available. Make sure not to crash when asking
to sync with a NULL sink.

1:33 PM Changeset in webkit [259072] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

[iOS] Deny mach lookup to 'com.apple.webinspector' in the WebContent process.
https://bugs.webkit.org/show_bug.cgi?id=207170
<rdar://problem/59134038>

Reviewed by Per Arne Vollan.

We now dynamically add access to the 'com.apple.webinspector' service, so we should remove the blanket
allow rule from the sandbox.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
1:29 PM Changeset in webkit [259071] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit

REGRESSION (r258989): ASSERTION FAILED: !isMissingPostLayoutData in WebKit::EditorState::PostLayoutData
https://bugs.webkit.org/show_bug.cgi?id=209570
<rdar://problem/60895050>

Reviewed by Darin Adler.

Send an editor state update before responding to a request for position information
to ensure that the UI process has up-to-date selection state. Otherwise, calling code
that uses this information to determine whether to query for the selection text will
cause an assertion failure.

This fixes the test failure TestWebKitAPI.ActionSheetTests.DataDetectorsLinkIsNotPresentedAsALink
caused by r258989. Following r258989 WebKit now accurately reports whether editor state
has or does not have post-layout details. Prior to this the default EditorState was marked
as having post-layout data even if it did not actually have such data.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getPositionInformation):
(WebKit::WebPage::requestPositionInformation):

1:27 PM Changeset in webkit [259070] by commit-queue@webkit.org
  • 5 edits in trunk/LayoutTests

[ iOS ] http/tests/security/contentSecurityPolicy/block-all-mixed-content/data-url-iframe-in-main-frame.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=206763

Patch by Alex Christensen <achristensen@webkit.org> on 2020-03-26
Reviewed by Youenn Fablet.

  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/data-url-iframe-in-main-frame.html:
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-data-url-iframe.html:
  • platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/data-url-iframe-in-main-frame-expected.txt:
1:27 PM Changeset in webkit [259069] by keith_miller@apple.com
  • 8 edits
    1 add in trunk

TypedArrays should more gracefully handle OOM during slowDownAndWasteMemory
https://bugs.webkit.org/show_bug.cgi?id=209611

Reviewed by Tadeu Zagallo.

JSTests:

  • stress/typed-array-oom-in-buffer-accessor.js: Added.

(try.foo):

Source/JavaScriptCore:

Right now if we cannot allocate an ArrayBuffer for a TypedArray we
crash. However, since we use the primitive gigacage for
ArrayBuffer allocations we can likely still allocate an OOM error
object. In order to do this some changes were needed in
slowDownAndWasteMemory. Namely, we should not allocate the
butterfly until we know we have an ArrayBuffer. I also check that
all the transitive callers of slowDownAndWasteMemory can handle
failure.

Lastly, this patch makes it so failure to allocate an ArrayBuffer
for a TypeArray during DFG watchpoint addition causes the code
block to be thrown away, rather than crash the process.

  • API/JSTypedArray.cpp:

(JSObjectGetTypedArrayBytesPtr):
(JSObjectGetTypedArrayBuffer):

  • bytecode/Watchpoint.h:
  • dfg/DFGDesiredWatchpoints.cpp:

(JSC::DFG::ArrayBufferViewWatchpointAdaptor::add):

  • runtime/GenericTypedArrayViewInlines.h:

(JSC::GenericTypedArrayView<Adaptor>::tryCreate):

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::unsharedBuffer):
(JSC::JSArrayBufferView::unsharedJSBuffer):
(JSC::JSArrayBufferView::possiblySharedJSBuffer):
(JSC::JSArrayBufferView::slowDownAndWasteMemory):
(JSC::JSArrayBufferView::possiblySharedImpl):

  • runtime/JSArrayBufferViewInlines.h:

(JSC::JSArrayBufferView::byteOffsetImpl):

1:25 PM Changeset in webkit [259068] by Chris Dumez
  • 4 edits in trunk

REGRESSION: ASSERTION FAILED: m_wrapper on storage/indexeddb/modern/abort-requests tests
https://bugs.webkit.org/show_bug.cgi?id=209499
<rdar://problem/60842165>

Reviewed by Alex Christensen.

Source/WebCore:

IDBTransaction::hasPendingActivity() was failing to consult ActiveDOMObject::hasPendingActivity()
so the JS wrapper would get garbage collected even though the ActiveDOMObject base class was
aware of some pending activity.

No new tests, unskipped existing tests.

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::hasPendingActivity const):

LayoutTests:

Unskip tests that should no longer be flaky.

  • platform/mac-wk1/TestExpectations:
1:22 PM Changeset in webkit [259067] by Ryan Haddad
  • 2 edits in branches/safari-609-branch/LayoutTests

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
1:12 PM Changeset in webkit [259066] by Russell Epstein
  • 1 copy in tags/Safari-609.2.1.2.2

Tag Safari-609.2.1.2.2.

12:58 PM Changeset in webkit [259065] by rniwa@webkit.org
  • 4 edits
    2 adds in trunk

Sequential focus navigation can't get out of a descendent of a slot element in a document tree
https://bugs.webkit.org/show_bug.cgi?id=199633

Reviewed by Darin Adler.

Source/WebCore:

The bug was caused by slot element outside a shadow tree not being treated as a focus navigation
scope owner as specified in the HTML5 specification:
https://html.spec.whatwg.org/multipage/interaction.html#focus-navigation-scope-owner

Fixed the bug by treating it as such unless custom focusing behavior is used.

Test: fast/shadow-dom/focus-across-slot-outside-shadow-tree.html

  • page/FocusController.cpp:

(WebCore::isFocusScopeOwner):

LayoutTests:

Skip the newly added test in iOS since eventSender isn't supported on iOS.

  • platform/ios/TestExpectations:
  • fast/shadow-dom/focus-across-slot-outside-shadow-tree-expected.txt: Added.
  • fast/shadow-dom/focus-across-slot-outside-shadow-tree.html: Added.
12:26 PM Changeset in webkit [259064] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] status-bubble for tester queues should point to tester queue while waiting in queue (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=209598

Unreviewed follow-up fix.

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

(StatusBubble._build_bubble): Display the tester name in tester's status-bubble hover-over message.

12:05 PM Changeset in webkit [259063] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] status-bubble for tester queues should point to tester queue while waiting in queue
https://bugs.webkit.org/show_bug.cgi?id=209598

Reviewed by Jonathan Bedard.

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

(StatusBubble._build_bubble):

12:00 PM Changeset in webkit [259062] by Kate Cheney
  • 2 edits in trunk/Source/WebCore

ScopeRuleSets::initializeUserStyle() should not add console logging if there are no injected user style sheets
https://bugs.webkit.org/show_bug.cgi?id=209548
<rdar://problem/60851745>

Reviewed by Darin Adler.

Logging when there are no injected user style sheets is unnecessary and confusing.

  • style/StyleScopeRuleSets.cpp:

(WebCore::Style::ScopeRuleSets::initializeUserStyle):

11:58 AM Changeset in webkit [259061] by david_quesada@apple.com
  • 11 edits in trunk/Source/WebKit

Add SPI to specify whether file upload panels are uploading to an enterprise-managed destination
https://bugs.webkit.org/show_bug.cgi?id=209607
rdar://problem/60888386

Reviewed by Darin Adler.

When presenting the file upload panel, set the UIDocumentPickerViewController.isContentManaged
property to a value ultimately provided by the UI delegate. This can be used to prevent the upload
of personal data to enterprise websites on managed devices configured to prevent such a transfer.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/PageClient.h:

(WebKit::PageClient::handleRunOpenPanel):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::runOpenPanel):

  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::handleRunOpenPanel):

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _showRunOpenPanel:frameInfo:resultListener:]):
(-[WKContentView fileUploadPanelDestinationIsManaged:]):
(-[WKContentView _showRunOpenPanel:resultListener:]): Deleted.

  • UIProcess/ios/forms/WKFileUploadPanel.h:
  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(-[WKFileUploadPanel showFilePickerMenu]):

11:44 AM Changeset in webkit [259060] by Chris Fleizach
  • 2 edits in trunk/Tools

AX: WKTR: Don't update isolated tree mode behavior if not required
https://bugs.webkit.org/show_bug.cgi?id=209555
<rdar://problem/60885094>

Reviewed by Darin Adler.

If the isolated tree mode has not changed, then we should not poke at the mechanisms for turning it on/off.
This might have the side effect of turning on accessibility unexpectedly.

  • WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:

(WTR::AccessibilityController::setAccessibilityIsolatedTreeMode):

11:41 AM Changeset in webkit [259059] by Alexey Shvayka
  • 9 edits
    45 adds
    1 delete in trunk/LayoutTests

Sync wpt/domxpath and re-sync wpt/css/cssom-view from upstream
https://bugs.webkit.org/show_bug.cgi?id=209574

Reviewed by Antti Koivisto.

web-platform-tests revision: 1137f4bff2b7

  • resources/import-expectations.json:
  • resources/resource-files.json:
  • web-platform-tests/css/cssom-view/*: Updated.
  • web-platform-tests/domxpath/*: Added.
11:40 AM Changeset in webkit [259058] by Alan Coon
  • 7 edits in branches/safari-609.2.1.2-branch/Source

Revert cherry-picks of r258267, r258062, r258038, r258381, r255997.

11:40 AM Changeset in webkit [259057] by Alan Coon
  • 2 edits in branches/safari-609.2.1.2-branch/Source/WebCore

Revert r258246. rdar://problem/60880507

11:00 AM Changeset in webkit [259056] by dino@apple.com
  • 2 edits in trunk/Source/WebKit

Force Touch preview on file:/// URL works while clicking on the URL is blocked
https://bugs.webkit.org/show_bug.cgi?id=209589
<rdar://57687893>

Reviewed by Antoine Quint.

The immediate action for links should never trigger on file: URLs.

  • UIProcess/mac/WKImmediateActionController.mm:

(-[WKImmediateActionController _defaultAnimationController]):

10:58 AM Changeset in webkit [259055] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[win] animations/many-pseudo-animations.html is failing
https://bugs.webkit.org/show_bug.cgi?id=209601

Unreviewed test gardening.

  • platform/win/TestExpectations: Mark test as failing.
10:51 AM Changeset in webkit [259054] by ap@apple.com
  • 369 edits
    20 copies
    8 deletes in trunk

REGRESSION(r259042): It creates some test failures (Requested by youenn on #webkit).
Roll back the patch.

10:47 AM Changeset in webkit [259053] by aboya@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed GTK debug multimedia gardening
https://bugs.webkit.org/show_bug.cgi?id=209603

I need a clean baseline to check for regressions.

  • platform/gtk/TestExpectations:
10:47 AM Changeset in webkit [259052] by pvollan@apple.com
  • 5 edits in trunk

[iOS] Deny mach lookup access to frontboard services in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=209604

Reviewed by Darin Adler.

Source/WebKit:

Deny mach lookup access to "com.apple.frontboard.systemappservices" in the WebContent process on iOS.

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

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

LayoutTests:

  • fast/sandbox/ios/sandbox-mach-lookup-expected.txt:
  • fast/sandbox/ios/sandbox-mach-lookup.html:
10:44 AM Changeset in webkit [259051] by Antti Koivisto
  • 5 edits
    2 adds in trunk

REGRESSION (r254669): Expand media button doesn't work on first try on photos on reddit.com
https://bugs.webkit.org/show_bug.cgi?id=209590
<rdar://problem/60461809>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio-expected.txt:

Failure here shifts to a different subtest. This one uses fractional pixels and LayoutUnit accuracy is not sufficient to compute the exact ratio.

Source/WebCore:

Image intrinsic size computed from width/height attributes is ignored during preferred width computation
(used for float sizing in this case). This creates a mismatch between layout and preferred width computation,
causing the final image size to be miscomputed.

Test: fast/images/preferred-width-computation-with-attribute-intrinsic-size.html

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::computePreferredLogicalWidths const):

Compute attribute based intrinsic size already during preferred width computation if needed.

LayoutTests:

  • fast/images/preferred-width-computation-with-attribute-intrinsic-size-expected.html: Added.
  • fast/images/preferred-width-computation-with-attribute-intrinsic-size.html: Added.
10:42 AM Changeset in webkit [259050] by Nikos Mouchtaris
  • 2 edits in trunk/Source/WebCore

Remove manual redacting of billing contact after wallet fix for rdar://problem/59075234
https://bugs.webkit.org/show_bug.cgi?id=209557
<rdar://problem/60883506>

Reviewed by Andy Estes.

Removed manual redaction of billing address after wallet fixed
their redaction code.

No new tests. Current tests cover this functionality.

  • Modules/applepay/cocoa/PaymentMethodCocoa.mm:

(WebCore::convert):

10:04 AM Changeset in webkit [259049] by pvollan@apple.com
  • 16 edits
    1 add in trunk/Source

[iOS] Adopt ScreenProperties class.
https://bugs.webkit.org/show_bug.cgi?id=191767

Reviewed by Brent Fulgham.

Source/WebCore:

On macOS, the ScreenProperties class is used to collect screen properties in the UI process
and forward these to the Web process. We should also do this on iOS, in order to be able
to block frontboard services.

No new tests. Covered by existing tests.

  • Sources.txt:
  • platform/PlatformScreen.h:
  • platform/ScreenProperties.h:

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

  • platform/ios/PlatformScreenIOS.mm:

(WebCore::screenIsMonochrome):
(WebCore::screenHasInvertedColors):
(WebCore::screenSupportsExtendedColor):
(WebCore::collectScreenProperties):

  • platform/mac/PlatformScreenMac.mm:

(WebCore::primaryOpenGLDisplayMask):
(WebCore::displayMaskForDisplay):
(WebCore::primaryGPUID):
(WebCore::gpuIDForDisplay):
(WebCore::screenIsMonochrome):
(WebCore::screenHasInvertedColors):
(WebCore::screenDepth):
(WebCore::screenDepthPerComponent):
(WebCore::screenRectForDisplay):
(WebCore::screenRect):
(WebCore::screenAvailableRect):
(WebCore::screenColorSpace):
(WebCore::screenSupportsExtendedColor):
(WebCore::screenProperties): Deleted.
(WebCore::primaryScreenDisplayID): Deleted.
(WebCore::setScreenProperties): Deleted.
(WebCore::screenData): Deleted.
(WebCore::getScreenProperties): Deleted.

Source/WebKit:

Make relevent macOS platform code cross platform.

  • Shared/WebProcessCreationParameters.cpp:

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

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::setScreenProperties):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
9:58 AM WebKitGTK/2.28.x edited by Michael Catanzaro
(diff)
9:51 AM Changeset in webkit [259048] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, make GC a bit less aggressive on test to decrease runtime.

  • http/tests/inspector/network/har/har-page-aggressive-gc.html:
9:26 AM Changeset in webkit [259047] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

MESSAGE_CHECK base macros should use UNLIKELY()
<https://webkit.org/b/209581>
<rdar://problem/60901307>

Reviewed by Youenn Fablet.

  • Platform/IPC/Connection.h:

(MESSAGE_CHECK_COMPLETION_BASE):
(MESSAGE_CHECK_WITH_RETURN_VALUE_BASE):

  • Add UNLIKELY() macro since these code paths should not be taken under normal conditions.
  • Add curly braces to multi-line do-while loops per WebKit style guidelines, and is required after moving the ASSERT().
  • Move the ASSERT() outside the if statement since that's more idomatic.
9:12 AM Changeset in webkit [259046] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[Cocoa] Fix incorrect rebase
https://bugs.webkit.org/show_bug.cgi?id=209600

Reviewed by Brent Fulgham.

A rebase went wrong in <https://bugs.webkit.org/show_bug.cgi?id=203214> and placed the method call to
enableRemoteInspectorIfNeeded() in the wrong method. It should be called in WebProcessProxy::didFinishLaunching.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::mayBecomeUnresponsive):
(WebKit::WebProcessProxy::didFinishLaunching):

8:24 AM Changeset in webkit [259045] by Philippe Normand
  • 2 edits in trunk/Tools

[Flatpak SDK] Pass all the arguments of build-webkit to webkit-flatpak
https://bugs.webkit.org/show_bug.cgi?id=209558

Reviewed by Žan Doberšek.

When using flatpak some of the arguments we pass to build-webkit
are not meant to be used by that script but by webkit-flatpak. However we are
not passing all of them to webkit-flatpak but just the configuration ones
(port, release/debug...). This means that all the arguments that configure the
behaviour of webkit-flatpak are lost.

  • Scripts/webkitdirs.pm:

(runInFlatpak): Filter-out Flatpak SDK-specific arguments to a
separate array, passed to webkit-flatpak.

8:22 AM Changeset in webkit [259044] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK] Crash in WebKit::LayerTreeHost::LayerTreeHost with bubblewrap sandbox enabled
https://bugs.webkit.org/show_bug.cgi?id=209106

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-03-26
Reviewed by Carlos Garcia Campos.

Don't bind the WaylandCompositor socket unless we're running under Wayland and it's actually
started successfully.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::bindWayland):

7:31 AM Changeset in webkit [259043] by commit-queue@webkit.org
  • 7 edits in trunk

Unreviewed, reverting r259035.
https://bugs.webkit.org/show_bug.cgi?id=209597

broke windows layout-tests (Requested by aakashjain on
#webkit).

Reverted changeset:

"[Win] lld-link: error: /manifestdependency: is not allowed in
.drectve"
https://bugs.webkit.org/show_bug.cgi?id=204831
https://trac.webkit.org/changeset/259035

4:43 AM Changeset in webkit [259042] by youenn@apple.com
  • 367 edits
    8 adds
    20 deletes in trunk

Bump boringssl version to M82
https://bugs.webkit.org/show_bug.cgi?id=209538

Reviewed by Eric Carlson.

  • CMakeLists.txt:
  • Source/third_party/boringssl: Updated.
  • WebKit/0001-Tweaking-boringssl-include-of-internal.h.patch: Removed.
  • libwebrtc.xcodeproj/project.pbxproj:
3:39 AM Changeset in webkit [259041] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

VideoFullscreenManagerProxy::setupFullscreenWithID should message check videoLayerID
<https://webkit.org/b/209578>
<rdar://problem/60703503>

Reviewed by Eric Carlson.

  • UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:

(MESSAGE_CHECK): Define (and undef) new macro for assertions.
(WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID):
Change ASSERT() to MESSAGE_CHECK().

3:10 AM Changeset in webkit [259040] by Diego Pino Garcia
  • 1 edit
    20 adds in trunk/LayoutTests

[GTK] Gardening, add missing expectation files
https://bugs.webkit.org/show_bug.cgi?id=209588

Unreviewed gardening.

  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-br-mixed-expected.txt: Added.
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-p-mixed-expected.txt: Added.
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-forward-br-mixed-expected.txt: Added.
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-forward-p-mixed-expected.txt: Added.
  • platform/gtk/fast/css/vertical-text-overflow-ellipsis-text-align-center-mixed-expected.txt: Added.
  • platform/gtk/fast/css/vertical-text-overflow-ellipsis-text-align-justify-mixed-expected.txt: Added.
  • platform/gtk/fast/css/vertical-text-overflow-ellipsis-text-align-left-mixed-expected.txt: Added.
  • platform/gtk/fast/css/vertical-text-overflow-ellipsis-text-align-right-mixed-expected.txt: Added.
  • platform/gtk/fast/html/details-marker-style-mixed-expected.txt: Added.
  • platform/gtk/fast/html/details-writing-mode-mixed-expected.txt: Added.
  • platform/gtk/fast/multicol/tall-image-behavior-lr-mixed-expected.txt: Added.
  • platform/gtk/fast/text/vertical-rl-rtl-linebreak-mixed-expected.txt: Added.
  • platform/gtk/fast/writing-mode/background-vertical-lr-mixed-expected.txt: Added.
  • platform/gtk/fast/writing-mode/background-vertical-rl-mixed-expected.txt: Added.
  • platform/gtk/fast/writing-mode/basic-vertical-line-mixed-expected.txt: Added.
  • platform/gtk/fast/writing-mode/border-styles-vertical-lr-mixed-expected.txt: Added.
  • platform/gtk/fast/writing-mode/border-styles-vertical-rl-mixed-expected.txt: Added.
  • platform/gtk/fast/writing-mode/vertical-baseline-alignment-mixed-expected.txt: Added.
  • platform/gtk/fast/writing-mode/vertical-lr-replaced-selection-mixed-expected.txt: Added.
  • platform/gtk/fast/writing-mode/vertical-rl-replaced-selection-mixed-expected.txt: Added.
3:06 AM Changeset in webkit [259039] by Philippe Normand
  • 2 edits in trunk/Tools

[Flatpak SDK] update-webkitgtk-libs fails
https://bugs.webkit.org/show_bug.cgi?id=209546

Reviewed by Žan Doberšek.

Simplify the code a bit, add a --assumeyes argument to the
flatpak update command to make it non-interactive and improve
error handling/reporting a bit as well.

  • flatpak/flatpakutils.py:

(FlatpakObject.flatpak):
(WebkitFlatpak.main):
(WebkitFlatpak.run):
(WebkitFlatpak.install_all):
(WebkitFlatpak.update_all): Deleted.

3:05 AM Changeset in webkit [259038] by Philippe Normand
  • 2 edits in trunk/Tools

[Flatpak SDK] Crash post-mortem debugging is broken
https://bugs.webkit.org/show_bug.cgi?id=209537

Reviewed by Žan Doberšek.

webkit-flatpak --gdb now properly launches gdb to inspect the last
crash reported to coredumpctl. The -m argument can be used to
select another crash dump.

  • flatpak/flatpakutils.py:

(WebkitFlatpak.clean_args):
(WebkitFlatpak.run_in_sandbox):
(WebkitFlatpak.run_gdb):

2:01 AM Changeset in webkit [259037] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Syscall param sendmsg(msg.msg_iov[0]) points to uninitialised byte(s) in IPC::Connection::sendOutgoingMessage
https://bugs.webkit.org/show_bug.cgi?id=146729

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-03-26
Reviewed by Carlos Garcia Campos.

The entire MessageInfo is passed to write(), so we have to zero the padding bytes to avoid
writing uninitialized memory.

  • Platform/IPC/unix/UnixMessage.h:

(IPC::MessageInfo::MessageInfo):

12:38 AM Changeset in webkit [259036] by commit-queue@webkit.org
  • 10 edits in trunk/Source/WebCore

Take into account referrer-policy in append Origin header algorithm
https://bugs.webkit.org/show_bug.cgi?id=209066

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

Start taking into account referrer-policy in more places when we
append the origin header [1]. To prevent computing SecurityOrigin
needlessly add a helper function doesRequestNeedHTTPOriginHeader.

[1] https://fetch.spec.whatwg.org/#append-a-request-origin-header

  • loader/FormSubmission.cpp:

(WebCore::FormSubmission::populateFrameLoadRequest):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::addExtraFieldsToRequest):
(WebCore::FrameLoader::loadResourceSynchronously):
(WebCore::FrameLoader::loadDifferentDocumentItem):
(WebCore::FrameLoader::addHTTPOriginIfNeeded): Deleted.

  • loader/FrameLoader.h:
  • loader/NavigationScheduler.cpp:
  • loader/PingLoader.cpp:

(WebCore::PingLoader::sendPing):

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl):

  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders):

  • platform/network/ResourceRequestBase.cpp:

(WebCore::doesRequestNeedHTTPOriginHeader):

  • platform/network/ResourceRequestBase.h:

Mar 25, 2020:

11:43 PM Changeset in webkit [259035] by Fujii Hironori
  • 7 edits in trunk

[Win] lld-link: error: /manifestdependency: is not allowed in .drectve
https://bugs.webkit.org/show_bug.cgi?id=204831

Reviewed by Ross Kirsling.

.:

clang-cl doesn't support #pragma comment(linker, "/manifestdependency ..").
Use an linker option instead.

  • Source/cmake/WebKitMacros.cmake (WEBKIT_EXECUTABLE): Added -manifestdependency linkder option if WIN32.

Source/JavaScriptCore:

  • shell/DLLLauncherMain.cpp: Removed /manifestdependency for Microsoft.VC80.CRT which seems leftover of Bug 116562 (r178530).

Tools:

  • TestWebKitAPI/win/main.cpp:
  • win/DLLLauncher/DLLLauncherMain.cpp:
11:26 PM Changeset in webkit [259034] by sihui_liu@apple.com
  • 5 edits in trunk/Source/WebCore

IndexedDB: destroy UniqueIDBDatabase when it's not used
https://bugs.webkit.org/show_bug.cgi?id=209532

Reviewed by Geoffrey Garen.

Reviewed by Geoffrey Garen.

When all connections of a UniqueIDBDatabase object are closed and there are no pending reuqests, the
object may not be used any more. We should delete it for better memory use.

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::removeUniqueIDBDatabase):
(WebCore::IDBServer::IDBServer::closeAndTakeUniqueIDBDatabase): Deleted.

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

(WebCore::IDBServer::UniqueIDBDatabase::handleDelete):
(WebCore::IDBServer::UniqueIDBDatabase::connectionClosedFromClient):
(WebCore::IDBServer::UniqueIDBDatabase::tryCloseAndRemoveFromServer):

  • Modules/indexeddb/server/UniqueIDBDatabase.h:
9:44 PM Changeset in webkit [259033] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening for Win10.

  • platform/win/TestExpectations: Skip two webanimations tests that are consistently timing out.
9:29 PM Changeset in webkit [259032] by Ross Kirsling
  • 8 edits
    3 adds
    2 deletes in trunk/JSTests

Unreviewed, reimport test262 once more to make bot green.

  • test262/expectations.yaml:
  • test262/harness/assert.js:
  • test262/harness/propertyHelper.js:
  • test262/latest-changes-summary.txt:
  • test262/test/built-ins/JSON/stringify/replacer-function-stack-overflow.js: Removed.
  • test262/test/built-ins/JSON/stringify/value-tojson-stack-overflow.js: Removed.
  • test262/test/built-ins/NativeErrors/AggregateError/newtarget-is-undefined.js: Added.
  • test262/test/built-ins/RegExp/prototype/Symbol.replace/poisoned-stdlib.js:
  • test262/test/harness/assert-samevalue-zeros.js:
  • test262/test/language/expressions/class/elements/private-field-after-optional-chain.js: Added.
  • test262/test/language/statements/class/elements/private-field-after-optional-chain.js: Added.
  • test262/test262-Revision.txt:
9:28 PM Changeset in webkit [259031] by commit-queue@webkit.org
  • 6 edits in trunk

[ macOS ] svg/custom/textPath-change-id-pattern.svg is flakey failing
https://bugs.webkit.org/show_bug.cgi?id=208532

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-03-25
Reviewed by Darin Adler.

Source/WebCore:

In this layout test, the id of a <path> element changes. This <path> is
referenced by a <textPath> element which is a child of a <pattern> element.
The <pattern> element is used to fill a <rect> element.

This patch ensures all clients (<rect>) of the resource ancestor (<pattern>)
of any sub-resource (<textPath>) is marked for repaint when the id of a
sub-sub-resource (<path>) changes.

  • rendering/svg/RenderSVGResourceContainer.cpp:

(WebCore::RenderSVGResourceContainer::markAllClientsForRepaint):

  • rendering/svg/RenderSVGResourceContainer.h:
  • svg/SVGElement.cpp:

(WebCore::SVGElement::buildPendingResourcesIfNeeded):
(WebCore::SVGElement::invalidateInstances):
Unrelated change. This is a leftover from r179807 which was converting a
"do { } while();" statement to "while() { }" statement.

LayoutTests:

  • platform/mac-wk1/TestExpectations:
8:26 PM Changeset in webkit [259030] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Unable to build WebKit with iOS 13.4 SDK
https://bugs.webkit.org/show_bug.cgi?id=209317

  • Platform/spi/ios/UIKitSPI.h:

Address post-landing review comment; use SDK conditionals, not deployment
target conditionals, since SPI headers are mimicing SDK content.

7:24 PM Changeset in webkit [259029] by Alexey Shvayka
  • 10 edits in trunk

RegExp.prototype[@@replace] relies on globals and doesn't perform ToLength
https://bugs.webkit.org/show_bug.cgi?id=173867

Reviewed by Ross Kirsling.

JSTests:

  • test262/expectations.yaml: Mark 4 test cases as passing.

Source/JavaScriptCore:

This change:

a) Adds "lastIndex" ToLength coercion [1], which is observable, unlike ToLength coercion

of RegExpExec result [2] that we omit, just like the one in @@split [3].

b) Removes lastPosition checks/updates, as there are none in the spec, and it was

equivalent to checking nextSourcePosition.

c) Removes reliance of @@replace on globals and also replaces @stringSubstrInternal

built-in with @stringSubstringInternal, as the former is Annex B and accepts size
as 2nd paramter, which is not very handy because ECMA-262 usually says "substring
of S consisting of the code units at indices X (inclusive) through Y (exclusive)".

[1]: https://tc39.es/ecma262/#sec-regexp.prototype-@@replace (step 11.c.iii.2.a)
[2]: https://tc39.es/ecma262/#sec-regexp.prototype-@@replace (step 14.a)
[3]: https://tc39.es/ecma262/#sec-regexp.prototype-@@split (step 19.d.iv.6)

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

(getSubstitution):
(Symbol.replace):
(Symbol.split):

  • builtins/StringPrototype.js:

(globalPrivate.repeatCharactersSlowPath):

  • bytecode/LinkTimeConstant.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/StringPrototype.cpp:

(JSC::stringIndexOfImpl):
(JSC::stringProtoFuncIndexOf):
(JSC::builtinStringIndexOfInternal):
(JSC::stringProtoFuncSubstr):
(JSC::stringSubstringImpl):
(JSC::stringProtoFuncSubstring):
(JSC::builtinStringSubstringInternal):
(JSC::stringProtoFuncSubstrImpl): Deleted.
(JSC::builtinStringSubstrInternal): Deleted.

  • runtime/StringPrototype.h:
7:10 PM Changeset in webkit [259028] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebKit

Mini browser immediately hit an assertion in debug build
https://bugs.webkit.org/show_bug.cgi?id=209575

Reviewed by Simon Fraser.

Use 1 instead of 0 as the desination ID to avoid hitting assertions.

  • WebProcess/GPU/media/RemoteAudioSession.cpp:

(WebKit::RemoteAudioSession::RemoteAudioSession):
(WebKit::RemoteAudioSession::~RemoteAudioSession):

6:51 PM Changeset in webkit [259027] by Jack Lee
  • 3 edits
    2 adds in trunk

Nullptr crash in WebCore::Node::isDescendantOf when inserting list
https://bugs.webkit.org/show_bug.cgi?id=209529
<rdar://problem/60693542>

Reviewed by Darin Adler.

Source/WebCore:

The visible positions may be null if the DOM tree is altered before an edit command is applied.
Add null check for visible positions at the beginning of InsertListCommand::doApply.

Test: editing/inserting/insert-list-during-node-removal-crash.html

  • editing/InsertListCommand.cpp:

(WebCore::InsertListCommand::doApply):

LayoutTests:

Added a regression test for the crash.

  • editing/inserting/insert-list-during-node-removal-crash-expected.txt: Added.
  • editing/inserting/insert-list-during-node-removal-crash.html: Added.
6:24 PM Changeset in webkit [259026] by Alexey Shvayka
  • 16 edits in trunk

Invalid numeric and named references should be early syntax errors
https://bugs.webkit.org/show_bug.cgi?id=178175

Reviewed by Ross Kirsling.

JSTests:

  • test262/expectations.yaml: Mark 44 test cases as passing.

Source/JavaScriptCore:

This patch:

  1. Fixes named reference parsing in parseEscape(), making /\k/u throw SyntaxError per spec [1].
  1. Reworks containsIllegalNamedForwardReferences(), making dangling (e.g. /\k<a>(?<b>.)/) and incomplete (e.g. /\k<(?<a>.)/) named references throw SyntaxError if the non-Unicode pattern contains a named group [2].
  1. Moves reparsing logic from YarrPattern to YarrParser, ensuring syntax errors due to illegal references (named & numeric) are thrown at parse time; drops isValidNamedForwardReference() from Delegate, refactors saveUnmatchedNamedForwardReferences(), and overall improves cohesion of illegal references logic.

[1]: https://tc39.es/ecma262/#prod-IdentityEscape
[2]: https://tc39.es/ecma262/#sec-regexpinitialize (step 7.b)

  • yarr/YarrErrorCode.cpp:

(JSC::Yarr::errorMessage):
(JSC::Yarr::errorToThrow):

  • yarr/YarrErrorCode.h:
  • yarr/YarrParser.h:

(JSC::Yarr::Parser::CharacterClassParserDelegate::atomNamedBackReference):
(JSC::Yarr::Parser::Parser):
(JSC::Yarr::Parser::parseEscape):
(JSC::Yarr::Parser::parseParenthesesBegin):
(JSC::Yarr::Parser::parse):
(JSC::Yarr::Parser::handleIllegalReferences):
(JSC::Yarr::Parser::containsIllegalNamedForwardReference):
(JSC::Yarr::Parser::resetForReparsing):
(JSC::Yarr::parse):
(JSC::Yarr::Parser::CharacterClassParserDelegate::isValidNamedForwardReference): Deleted.

  • yarr/YarrPattern.cpp:

(JSC::Yarr::YarrPatternConstructor::atomBackReference):
(JSC::Yarr::YarrPatternConstructor::atomNamedForwardReference):
(JSC::Yarr::YarrPattern::compile):
(JSC::Yarr::YarrPatternConstructor::saveUnmatchedNamedForwardReferences): Deleted.
(JSC::Yarr::YarrPatternConstructor::isValidNamedForwardReference): Deleted.

  • yarr/YarrPattern.h:

(JSC::Yarr::YarrPattern::resetForReparsing):
(JSC::Yarr::YarrPattern::containsIllegalBackReference): Deleted.
(JSC::Yarr::YarrPattern::containsIllegalNamedForwardReferences): Deleted.

  • yarr/YarrSyntaxChecker.cpp:

(JSC::Yarr::SyntaxChecker::atomNamedBackReference):
(JSC::Yarr::SyntaxChecker::resetForReparsing):
(JSC::Yarr::SyntaxChecker::isValidNamedForwardReference): Deleted.

Source/WebCore:

Accounts for changes of YarrParser's Delegate interface, no behavioral changes.
resetForReparsing() is never called because we disable numeric backrefences
and named forward references (see arguments of Yarr::parse() call).

Test: TestWebKitAPI.ContentExtensionTest.ParsingFailures

  • contentextensions/URLFilterParser.cpp:

(WebCore::ContentExtensions::PatternParser::resetForReparsing):
(WebCore::ContentExtensions::URLFilterParser::addPattern):
(WebCore::ContentExtensions::PatternParser::isValidNamedForwardReference): Deleted.

Tools:

Removes FIXME as YarrParser is correct not to throw errors as it is
parsing in non-Unicode mode. Also adds a few named groups tests.

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

LayoutTests:

  • js/regexp-named-capture-groups-expected.txt:
  • js/script-tests/regexp-named-capture-groups.js:
5:32 PM Changeset in webkit [259025] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Unable to build WebKit with iOS 13.4 SDK
https://bugs.webkit.org/show_bug.cgi?id=209317

Reviewed by Megan Gardner.

  • Platform/spi/ios/UIKitSPI.h:

Stop defining some UIKit SPI that is now API (hurray!).

5:28 PM Changeset in webkit [259024] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

CanvasRenderingContext2D.putImageData() should not process neutered ImageData
https://bugs.webkit.org/show_bug.cgi?id=208303

Patch by Pinki Gyanchandani <pgyanchandani@apple.com> on 2020-03-25
Reviewed by Said Abou-Hallawa.

Source/WebCore:

Test: fast/canvas/canvas-putImageData-neutered-ImageData.html

The crash happens when putImageData is called on a neutered ImageData object.
Added a check to exit from CanvasRenderingContext2D.putImageData() function when ImageData object is neutered.

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::putImageData):

LayoutTests:

Added slightly modified version of testcase from bugzilla.
This testcase checks that a neutered ImageData object is not considered to be put onto the canvas.

  • fast/canvas/canvas-putImageData-neutered-ImageData-expected.txt: Added.
  • fast/canvas/canvas-putImageData-neutered-ImageData.html: Added.
4:52 PM Changeset in webkit [259023] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Fix sandbox violations related to media playback
https://bugs.webkit.org/show_bug.cgi?id=209568
<rdar://problem/60262125>

Reviewed by Brent Fulgham.

Fix observed sandbox violations during media playback.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::mediaRelatedMachServices):

4:47 PM Changeset in webkit [259022] by Russell Epstein
  • 1 edit in branches/safari-609-branch/Source/WebKit/Shared/WebPreferencesDefaultValues.cpp

Unreviewed build fix, rdar://problem/60756680

4:41 PM Changeset in webkit [259021] by Chris Dumez
  • 32 edits in trunk/Source

Use JSC::EnsureStillAliveScope RAII object in the generated bindings code
https://bugs.webkit.org/show_bug.cgi?id=209552

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

Add method to EnsureStillAliveScope to retrieve its internal JSValue.

  • runtime/JSCJSValue.h:

(JSC::EnsureStillAliveScope::value const):

Source/WebCore:

Use JSC::EnsureStillAliveScope RAII object in the generated bindings code
instead of explicit ensureStillAlive() calls. This makes the bindings
generator code simpler and results in nicer generated code too.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateParametersCheck):
(GenerateWriteBarriersForArguments):
(GenerateImplementationFunctionCall):
(GenerateEnsureStillAliveCallsForArguments): Deleted.

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

(WebCore::jsMapLikePrototypeFunctionGetBody):
(WebCore::jsMapLikePrototypeFunctionHasBody):
(WebCore::jsMapLikePrototypeFunctionForEachBody):
(WebCore::jsMapLikePrototypeFunctionSetBody):
(WebCore::jsMapLikePrototypeFunctionDeleteBody):

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

(WebCore::jsReadOnlyMapLikePrototypeFunctionGetBody):
(WebCore::jsReadOnlyMapLikePrototypeFunctionHasBody):
(WebCore::jsReadOnlyMapLikePrototypeFunctionForEachBody):

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

(WebCore::jsReadOnlySetLikePrototypeFunctionHasBody):
(WebCore::jsReadOnlySetLikePrototypeFunctionForEachBody):

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

(WebCore::jsSetLikePrototypeFunctionHasBody):
(WebCore::jsSetLikePrototypeFunctionForEachBody):
(WebCore::jsSetLikePrototypeFunctionAddBody):
(WebCore::jsSetLikePrototypeFunctionDeleteBody):

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

(WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunctionBody):
(WebCore::jsTestActiveDOMObjectPrototypeFunctionPostMessageBody):
(WebCore::jsTestActiveDOMObjectPrototypeFunctionOverloadedMethod1Body):
(WebCore::jsTestActiveDOMObjectPrototypeFunctionOverloadedMethod2Body):

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

(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithArgumentsBody):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithNullableArgumentBody):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithVariantArgumentBody):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithNullableVariantArgumentBody):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithOptionalVariantArgumentBody):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithDefaultVariantArgumentBody):

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

(WebCore::jsTestDOMJITPrototypeFunctionGetAttributeBody):
(WebCore::jsTestDOMJITPrototypeFunctionItemBody):
(WebCore::jsTestDOMJITPrototypeFunctionGetElementByIdBody):
(WebCore::jsTestDOMJITPrototypeFunctionGetElementsByNameBody):

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

(WebCore::jsTestEnabledBySettingPrototypeFunctionEnabledBySettingOperationBody):

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

(WebCore::JSTestEventConstructorConstructor::construct):

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

(WebCore::jsTestEventTargetPrototypeFunctionItemBody):

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

(WebCore::jsTestGlobalObjectInstanceFunctionRegularOperationBody):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation1Body):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation2Body):
(WebCore::jsTestGlobalObjectConstructorFunctionEnabledAtRuntimeOperationStaticBody):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldBody):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldWhenRuntimeFeatureEnabledBody):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldWhenRuntimeFeaturesEnabledBody):

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

(WebCore::jsTestIndexedSetterWithIdentifierPrototypeFunctionIndexedSetterBody):

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

(WebCore::JSTestInterfaceConstructor::construct):
(WebCore::jsTestInterfacePrototypeFunctionImplementsMethod2Body):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod2Body):

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

(WebCore::jsTestMediaQueryListListenerPrototypeFunctionMethodBody):

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

(WebCore::jsTestNamedAndIndexedSetterWithIdentifierPrototypeFunctionNamedSetterBody):
(WebCore::jsTestNamedAndIndexedSetterWithIdentifierPrototypeFunctionIndexedSetterBody):

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

(WebCore::JSTestNamedConstructorNamedConstructor::construct):

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

(WebCore::jsTestNamedDeleterWithIdentifierPrototypeFunctionNamedDeleterBody):

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

(WebCore::jsTestNamedGetterWithIdentifierPrototypeFunctionGetterNameBody):

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

(WebCore::jsTestNamedSetterWithIdentifierPrototypeFunctionNamedSetterBody):

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

(WebCore::jsTestNamedSetterWithIndexedGetterPrototypeFunctionNamedSetterBody):
(WebCore::jsTestNamedSetterWithIndexedGetterPrototypeFunctionIndexedSetterBody):

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

(WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionNamedSetterBody):
(WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionIndexedSetter1Body):
(WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionIndexedSetter2Body):

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

(WebCore::JSTestObjConstructor::construct):
(WebCore::callJSTestObj1):
(WebCore::callJSTestObj2):
(WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation1Body):
(WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation2Body):
(WebCore::jsTestObjConstructorFunctionEnabledAtRuntimeOperationStaticBody):
(WebCore::jsTestObjPrototypeFunctionEnabledInSpecificWorldWhenRuntimeFeatureEnabledBody):
(WebCore::jsTestObjPrototypeFunctionWorldSpecificMethodBody):
(WebCore::jsTestObjPrototypeFunctionVoidMethodWithArgsBody):
(WebCore::jsTestObjPrototypeFunctionByteMethodWithArgsBody):
(WebCore::jsTestObjPrototypeFunctionOctetMethodWithArgsBody):
(WebCore::jsTestObjPrototypeFunctionLongMethodWithArgsBody):
(WebCore::jsTestObjPrototypeFunctionObjMethodWithArgsBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithArgTreatingNullAsEmptyStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithXPathNSResolverParameterBody):
(WebCore::jsTestObjPrototypeFunctionNullableStringSpecialMethodBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithEnumArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithStandaloneEnumArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArgAndDefaultValueBody):
(WebCore::jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrowsBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithNullableUSVStringArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArgTreatingNullAsEmptyStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithByteStringArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithNullableByteStringArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithByteStringArgTreatingNullAsEmptyStringBody):
(WebCore::jsTestObjPrototypeFunctionSerializedValueBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithRecordBody):
(WebCore::jsTestObjPrototypeFunctionPrivateMethodBody):
(WebCore::jsTestObjPrototypeFunctionPublicAndPrivateMethodBody):
(WebCore::jsTestObjPrototypeFunctionAddEventListenerBody):
(WebCore::jsTestObjPrototypeFunctionRemoveEventListenerBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArgAndDefaultValueBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgsBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUSVStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringAndDefaultValueBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringAndDefaultValueBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsNullBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsUndefinedBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringIsNullBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsEmptyStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUSVStringIsEmptyStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringIsEmptyStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalDoubleIsNaNBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalFloatIsNaNBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalLongLongBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalLongLongIsZeroBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUnsignedLongLongBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUnsignedLongLongIsZeroBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequenceBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequenceIsEmptyBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalBooleanBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalBooleanIsFalseBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAnyBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalObjectBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapperBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapperIsNullBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalXPathNSResolverBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalRecordBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalPromiseBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackFunctionArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionAndOptionalArgBody):
(WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackAndOptionalArgBody):
(WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackArgBody):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod2Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod3Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod4Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod5Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod6Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod7Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod8Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod9Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod10Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod11Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod12Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter2Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion2Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions2Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion2Body):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnion1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnion2Body):
(WebCore::jsTestObjPrototypeFunctionOverloadWithOptionalUnion1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadWithOptionalUnion2Body):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter2Body):
(WebCore::jsTestObjConstructorFunctionClassMethodWithOptionalBody):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod11Body):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod12Body):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithClampBody):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithClampOnOptionalBody):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRangeBody):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRangeOnOptionalBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithUnsignedLongSequenceBody):
(WebCore::jsTestObjPrototypeFunctionStringArrayFunctionBody):
(WebCore::jsTestObjPrototypeFunctionDomStringListFunctionBody):
(WebCore::jsTestObjPrototypeFunctionOperationWithOptionalUnionParameterBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequenceBody):
(WebCore::jsTestObjPrototypeFunctionGetElementByIdBody):
(WebCore::jsTestObjPrototypeFunctionConvert1Body):
(WebCore::jsTestObjPrototypeFunctionConvert2Body):
(WebCore::jsTestObjPrototypeFunctionConvert3Body):
(WebCore::jsTestObjPrototypeFunctionConvert4Body):
(WebCore::jsTestObjPrototypeFunctionVariadicStringMethodBody):
(WebCore::jsTestObjPrototypeFunctionVariadicDoubleMethodBody):
(WebCore::jsTestObjPrototypeFunctionVariadicNodeMethodBody):
(WebCore::jsTestObjPrototypeFunctionVariadicUnionMethodBody):
(WebCore::jsTestObjPrototypeFunctionAnyBody):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentBody):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentBody):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Body):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Body):
(WebCore::jsTestObjPrototypeFunctionConditionalOverload1Body):
(WebCore::jsTestObjPrototypeFunctionConditionalOverload2Body):
(WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload1Body):
(WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload2Body):
(WebCore::jsTestObjPrototypeFunctionAttachShadowRootBody):
(WebCore::jsTestObjPrototypeFunctionOperationWithExternalDictionaryParameterBody):
(WebCore::jsTestObjPrototypeFunctionBufferSourceParameterBody):
(WebCore::jsTestObjPrototypeFunctionLegacyCallerNamedBody):
(WebCore::jsTestObjPrototypeFunctionTestReturnValueOptimizationBody):
(WebCore::jsTestObjPrototypeFunctionTestReturnValueOptimizationWithExceptionBody):

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

(WebCore::constructJSTestOverloadedConstructors1):
(WebCore::constructJSTestOverloadedConstructors2):
(WebCore::constructJSTestOverloadedConstructors3):
(WebCore::constructJSTestOverloadedConstructors4):

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

(WebCore::constructJSTestOverloadedConstructorsWithSequence1):
(WebCore::constructJSTestOverloadedConstructorsWithSequence2):

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

(WebCore::jsTestOverrideBuiltinsPrototypeFunctionNamedItemBody):

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

(WebCore::JSTestPromiseRejectionEventConstructor::construct):

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

(WebCore::jsTestSerializedScriptValueInterfacePrototypeFunctionFunctionBody):

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

(WebCore::JSTestTypedefsConstructor::construct):
(WebCore::jsTestTypedefsPrototypeFunctionFuncBody):
(WebCore::jsTestTypedefsPrototypeFunctionSetShadowBody):
(WebCore::jsTestTypedefsPrototypeFunctionMethodWithSequenceArgBody):
(WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceArgBody):
(WebCore::jsTestTypedefsPrototypeFunctionSequenceOfNullablesArgBody):
(WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceOfNullablesArgBody):
(WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceOfUnionsArgBody):
(WebCore::jsTestTypedefsPrototypeFunctionUnionArgBody):
(WebCore::jsTestTypedefsPrototypeFunctionFuncWithClampBody):
(WebCore::jsTestTypedefsPrototypeFunctionFuncWithClampInTypedefBody):
(WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunctionBody):
(WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction2Body):
(WebCore::jsTestTypedefsPrototypeFunctionCallWithSequenceThatRequiresIncludeBody):

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

Unreviewed, fix the watchOS build after r259008

Put a call to Pasteboard::nameOfDragPasteboard behind ENABLE(DRAG_SUPPORT); additionally, update an out-of-date
comment to reflect the fact that arbitrary UIPasteboards can be converted to a list of NSItemProviders, whose
data can be traversed in fidelity order.

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::respectsUTIFidelities const):

4:19 PM Changeset in webkit [259019] by zhifei_fang@apple.com
  • 2 edits in trunk/Tools

[Timeline] A better default get label function, which fit the assumpation the label is always a string
https://bugs.webkit.org/show_bug.cgi?id=209567

Reviewed by Jonathan Bedard.

  • resultsdbpy/resultsdbpy/view/static/library/js/components/TimelineComponents.js:
4:19 PM Changeset in webkit [259018] by chris.reid@sony.com
  • 2 edits in trunk/Source/WTF

[PlayStation] Specify a 16 KB minimum page size
https://bugs.webkit.org/show_bug.cgi?id=209566

Reviewed by Ross Kirsling.

  • wtf/PageBlock.h:
4:05 PM Changeset in webkit [259017] by zhifei_fang@apple.com
  • 2 edits in trunk/Tools

[Timeline] Fix the out of bound dot index
https://bugs.webkit.org/show_bug.cgi?id=209492

Reviewed by Jonathan Bedard.

  • resultsdbpy/resultsdbpy/view/static/library/js/components/TimelineComponents.js:

(Timeline.CanvasSeriesComponent):

3:53 PM Changeset in webkit [259016] by sihui_liu@apple.com
  • 3 edits in trunk/Source/WTF

Remove unused suspend functions in CrossThreadTaskHandler
https://bugs.webkit.org/show_bug.cgi?id=209553

Reviewed by Geoffrey Garen.

  • wtf/CrossThreadTaskHandler.cpp:

(WTF::CrossThreadTaskHandler::taskRunLoop):
(WTF::CrossThreadTaskHandler::suspendAndWait): Deleted.
(WTF::CrossThreadTaskHandler::resume): Deleted.

  • wtf/CrossThreadTaskHandler.h:
3:28 PM Changeset in webkit [259015] by Simon Fraser
  • 4 edits
    2 adds in trunk

Flashing and partly visible elements
https://bugs.webkit.org/show_bug.cgi?id=204605

Reviewed by Zalan Bujtas.

Source/WebCore:

If, during a compositing update, a layer becomes non-composited, then we repaint its
location in its new target compositing layer. However, that layer might be in the list
of BackingSharingState's layers that may paint into backing provided by some ancestor,
so they'd be in a limbo state where their repaint target was unknown. We'd erroneously
repaint in some ancestor, resulting in missing content.

Fix by having BackingSharingState track a set of layers that can't be repainted currently
because their ancestor chain contains a maybe-sharing layer, and repaint them when
the backing sharing state is resolved.

This is only an issue during RenderLayerCompositor::computeCompositingRequirements()
when the backing sharing state is being computed, so most repaints are not affected.

Test: compositing/shared-backing/repaint-into-shared-backing.html

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::BackingSharingState::isPotentialBackingSharingLayer const):
(WebCore::RenderLayerCompositor::BackingSharingState::addLayerNeedingRepaint):
(WebCore::RenderLayerCompositor::BackingSharingState::endBackingSharingSequence):
(WebCore::RenderLayerCompositor::BackingSharingState::issuePendingRepaints):
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::updateBacking):
(WebCore::RenderLayerCompositor::updateLayerCompositingState):
(WebCore::RenderLayerCompositor::layerRepaintTargetsBackingSharingLayer const):

  • rendering/RenderLayerCompositor.h:

LayoutTests:

  • compositing/shared-backing/repaint-into-shared-backing-expected.html: Added.
  • compositing/shared-backing/repaint-into-shared-backing.html: Added.
2:57 PM Changeset in webkit [259014] by Russell Epstein
  • 2 edits in branches/safari-609-branch/Source/WebKit

Unreviewed build fixes, rdar://problem/60756680&60827009

2:56 PM Changeset in webkit [259013] by dbates@webkit.org
  • 4 edits in trunk

Element context character rects may be in wrong coordinate system
https://bugs.webkit.org/show_bug.cgi?id=209493
<rdar://problem/60840261>

Reviewed by Wenson Hsieh.

Source/WebKit:

Convert the character rects from content view coordinates to root view coordinates
as that is the coordinate system callers of -requestDocumentContext expect.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::requestDocumentEditingContext):

Tools:

Add some tests.

  • TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:

(TEST):

2:36 PM Changeset in webkit [259012] by Doug Kelly
  • 2 edits in trunk/Tools

Unreviewed, add new committer to contributors.json

  • Scripts/webkitpy/common/config/contributors.json:
2:30 PM Changeset in webkit [259011] by Alan Coon
  • 4 edits in branches/safari-610.1.7-branch/Source

Cherry-pick r258795. rdar://problem/60886075

Ensure media cache directory is created before passing to AVURLAsset.
https://bugs.webkit.org/show_bug.cgi?id=209341

Reviewed by Eric Carlson.

Source/WebCore:

Sandbox changes require the media cache directory to be created before passing to
AVFoundation, to ensure that a sandbox extension is allowed to be created for that
directory.

When the mediaCacheDirectory is empty or null, no longer specify a temporary directory. This
allows clients to disable caching by specifying an empty string for the cache directory.
Since now assetCacheForPath() can return nil, update all the call sites to handle that
possibility. Add a new method, ensureAssetCacheExistsAtPath() which tries to create a
directory at the specified path, and returns nil if that is not possible. This ensures the
cache path exists before adding the AVAssetCache to the AVURLAsset options dictionary.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::assetCacheForPath): (WebCore::ensureAssetCacheExistsForPath): (WebCore::MediaPlayerPrivateAVFoundationObjC::originsInMediaCache): (WebCore::MediaPlayerPrivateAVFoundationObjC::clearMediaCache): (WebCore::MediaPlayerPrivateAVFoundationObjC::clearMediaCacheForOrigins): (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):

Source/WebKitLegacy/mac:

MediaPlayerPrivateAVFoundaionObjC will no longer create an asset cache in a temporary
directory by default; ensure that it's media cache directory is set during initialization.

  • WebView/WebView.mm: (-[WebView _commonInitializationWithFrameName:groupName:]):

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

2:27 PM Changeset in webkit [259010] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] svg/as-image/svg-image-with-data-uri-background.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=209564

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
2:16 PM Changeset in webkit [259009] by Chris Dumez
  • 15 edits
    2 adds in trunk

Event listeners registered with 'once' option may get garbage collected too soon
https://bugs.webkit.org/show_bug.cgi?id=209504
<rdar://problem/60541567>

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

Add EnsureStillAliveScope RAII object for ensureStillAliveHere().

  • runtime/JSCJSValue.h:

(JSC::EnsureStillAliveScope::EnsureStillAliveScope):
(JSC::EnsureStillAliveScope::~EnsureStillAliveScope):

Source/WebCore:

In EventTarget::innerInvokeEventListeners, if the listener we're about to call is a one-time
listener (has 'once' flag set), we would first unregister the event listener and then call
it, as per the DOM specification. However, once unregistered, the event listener is no longer
visited for GC purposes and its internal JS Function may get garbage collected before we get
a chance to call it.

To address the issue, we now make sure the JS Function (and its wrapper) stay alive for the
duration of the scope using ensureStillAliveHere().

Test: http/tests/inspector/network/har/har-page-aggressive-gc.html

  • bindings/js/JSEventListener.h:
  • dom/EventListener.h:

(WebCore::EventListener::jsFunction const):
(WebCore::EventListener::wrapper const):

  • dom/EventTarget.cpp:

(WebCore::EventTarget::innerInvokeEventListeners):

LayoutTests:

Add layout test coverage.

  • http/tests/inspector/network/har/har-page-aggressive-gc-expected.txt: Added.
  • http/tests/inspector/network/har/har-page-aggressive-gc.html: Added.
  • platform/gtk/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/win/TestExpectations:
2:13 PM Changeset in webkit [259008] by Wenson Hsieh
  • 8 edits in trunk/Source

Rename "data interaction pasteboard" to "drag and drop pasteboard"
https://bugs.webkit.org/show_bug.cgi?id=209556

Reviewed by Tim Horton.

Source/WebCore:

"Data interaction" is an obsolete term for drag and drop on iOS, and was meant only to be used early on in
development. Replace this with the more descriptive name "drag and drop pasteboard", and additionally hide the
name behind a Cocoa-only Pasteboard helper method so that each call site won't need to repeat the string.

  • platform/Pasteboard.h:
  • platform/cocoa/DragDataCocoa.mm:

(WebCore::DragData::DragData):

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::nameOfDragPasteboard):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::respectsUTIFidelities const):

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::PlatformPasteboard):

  • platform/mac/PasteboardMac.mm:

(WebCore::Pasteboard::nameOfDragPasteboard):

Source/WebKit:

Adopt Pasteboard::nameOfDragPasteboard instead of the literal string "data interaction pasteboard".

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView dropInteraction:sessionDidEnter:]):
(-[WKContentView dropInteraction:sessionDidUpdate:]):
(-[WKContentView dropInteraction:sessionDidExit:]):
(-[WKContentView dropInteraction:performDrop:]):

1:48 PM Changeset in webkit [259007] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk1] ASSERTION FAILED: m_wrapper under WebCore::XMLHttpRequestUpload::dispatchProgressEvent
https://bugs.webkit.org/show_bug.cgi?id=209560

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
1:12 PM Changeset in webkit [259006] by commit-queue@webkit.org
  • 17 edits
    18 adds in trunk

Unprefix -webkit-text-orientation
https://bugs.webkit.org/show_bug.cgi?id=196139

Source/WebCore:

Patch by Frank Yang <guowei_yang@apple.com> on 2020-03-25
Reviewed by Myles C. Maxfield

In order to unprefix -webkit-text-orientation to be text-orientation,
a new property, "text-orientation" is added to CSSProperties.json.
I didn't use alias because the prefixed version still supports non-standard values,
and we want the unprefixed version to strictly follow the specs.
However only adding a new property is not enough because -webkit-text-orientation
is a high-priority property, and without extra logic, the CSS property
"last-one-wins" ordering rule cannot be enforced because high-priority properties
are applied to elements in the order they appear in the generated CSSPropertyNames.cpp file.
Therefore a codegen flag, "related-property" is added to both
-webkit-text-orientation and text-orientation to point to each other,
so that when applying high priorities, the algorithm will know that the
two properties are modifying the same style of the element (in our case, text orientation)
and thus the CSS property "last-one-wins" ordering rule will take effect.

This code change also helps future developments when we want to unprefix other high-priority properties.

Tests: fast/text/orientation-inheritance.html

fast/text/orientation-mixed-unprefix.html
fast/text/orientation-sideways-prefix-unprefix.html
fast/text/orientation-sideways-unprefix.html
fast/text/orientation-upright-unprefix.html
fast/text/test-orientation-parsing-001.html
fast/text/text-orientation-parse-competition.html
fast/text/text-orientation-parse.html
imported/w3c/web-platform-tests/css/css-writing-modes/text-orientation-parsing-001.html

  • css/CSSComputedStyleDeclaration.cpp:
    • added support for parsing "text-orientation"

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • added a new RenderStyle, CSSPropertyTextOrientation
  • css/CSSProperties.json:
    • added a new codegen property, "related-property"
  • css/makeprop.pl:
    • added new rules for generating code to parse related properties

(addProperty):

  • inserts new rule in the generated code to parse related properties
  • css/parser/CSSParserFastPaths.cpp:
    • Specified the CSS property values that the unprefixed "text-orientation" can take

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):

  • Only supports the standard values for text-orientation

(WebCore::CSSParserFastPaths::isKeywordPropertyID):

  • Added switch case value CSSPropertyTextOrientation
  • css/parser/CSSParserImpl.cpp:
    • Added rules to treat related properties differently

(WebCore::filterProperties):

  • For related rules that are also high priority, if we saw one in the property list, we will mark all the related property as seen, in order to enforce the "last-one-wins" ordering rule
  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyValueTextOrientation):

  • added functionality to parse the newly added "text-orientation" property

Tools:

Patch by Frank Yang <guowei_yang@apple.com> on 2020-03-25
Reviewed by Myles C. Maxfield.

This change is made to add the extra flag "related-property" in CSSProperty.json
in the jsonchecker so that the jsonchecker would not complain about unrecognized key

  • Scripts/webkitpy/style/checkers/jsonchecker.py: added check for related-property

(JSONCSSPropertiesChecker.check_codegen_properties):

LayoutTests:

Added test cases to check that Webkit can now parse text-orientation correctly,
as well as that the precedence rule for CSS property still applies when both
-webkit-text-orientation and text-orientation property are present, the second
one takes precedence.

Patch by Frank Yang <guowei_yang@apple.com> on 2020-03-25
Reviewed by Myles C. Maxfield

  • fast/text/orientation-inheritance-expected.html: Added.
  • fast/text/orientation-inheritance.html: Added.
  • fast/text/orientation-mixed-unprefix-expected.html: Added.
  • fast/text/orientation-mixed-unprefix.html: Added.
  • fast/text/orientation-sideways-prefix-unprefix-expected.html: Added.
  • fast/text/orientation-sideways-prefix-unprefix.html: Added.
  • fast/text/orientation-sideways-unprefix-expected.html: Added.
  • fast/text/orientation-sideways-unprefix.html: Added.
  • fast/text/orientation-upright-unprefix-expected.html: Added.
  • fast/text/orientation-upright-unprefix.html: Added.
  • fast/text/test-orientation-parsing-001-expected.txt: Added.
  • fast/text/test-orientation-parsing-001.html: Added.
  • fast/text/text-orientation-parse-competition-expected.txt: Added.
  • fast/text/text-orientation-parse-competition.html: Added.
  • fast/text/text-orientation-parse-expected.txt: Added.
  • fast/text/text-orientation-parse.html: Added.
  • fast/text/text-orientation-parse-stylesheet-expected.txt: Added.
  • fast/text/text-orientation-parse-stylesheet.html: Added.
1:02 PM Changeset in webkit [259005] by beidson@apple.com
  • 2 edits in trunk/Source/WebKit

Some WKWebView.h header doc cleanup.
https://bugs.webkit.org/show_bug.cgi?id=209549

Reviewed by Simon Fraser.

  • UIProcess/API/Cocoa/WKWebView.h:
12:49 PM Changeset in webkit [259004] by Nikos Mouchtaris
  • 1 edit
    2 adds in trunk/LayoutTests

Add ref test for apple pay button corner radius change
https://bugs.webkit.org/show_bug.cgi?id=208959

Reviewed by Andy Estes.

Add ref test to check that providing a border-radius does not result in rendering
a default apple pay button.

  • http/tests/ssl/applepay/ApplePayButtonCornerRadius-expected-mismatch.html: Added.
  • http/tests/ssl/applepay/ApplePayButtonCornerRadius.html: Added.
12:29 PM Changeset in webkit [259003] by Said Abou-Hallawa
  • 2 edits in trunk/LayoutTests

Layout Test fast/images/async-image-multiple-clients-repaint.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=202328
<rdar://problem/54325032>

Unreviewed test gardening.

Put the skip statement for this test back in mac-wk1/TestExpectations
since <rdar://problem/42625657> has not been fixed yet.

  • platform/mac-wk1/TestExpectations:
12:16 PM Changeset in webkit [259002] by Russell Epstein
  • 10 edits
    2 adds in branches/safari-609-branch

Apply patch. rdar://problem/60756680

12:16 PM Changeset in webkit [259001] by Russell Epstein
  • 8 edits
    2 deletes in branches/safari-609-branch

Revert "Apply patch. rdar://problem/60756680"

This reverts commit r258972.

11:34 AM Changeset in webkit [259000] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Remove CompositingChangeRepaint which was always CompositingChangeRepaintNow
https://bugs.webkit.org/show_bug.cgi?id=209551

Reviewed by Zalan Bujtas.

All callers to updateBacking() passed CompositingChangeRepaintNow, so remove this argument
and the enum.

No behavior change.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::layerStyleChanged):
(WebCore::RenderLayerCompositor::updateBacking):
(WebCore::RenderLayerCompositor::updateLayerCompositingState):

  • rendering/RenderLayerCompositor.h:
11:24 AM Changeset in webkit [258999] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews] commit-queue should comment on bug if it fails to find any modified ChangeLog
https://bugs.webkit.org/show_bug.cgi?id=209550

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(FindModifiedChangeLogs): Set haltOnFailure to false.
(FindModifiedChangeLogs.getResultSummary):
(FindModifiedChangeLogs.evaluateCommand): Add build steps to comment on bug and set cq- on patch appropriately.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Updated unit-tests.
11:11 AM Changeset in webkit [258998] by svillar@igalia.com
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix for GTK.

In wkb.ug/209536 we replaced ENABLE_WEBGL by ENABLE_WEBXR for cmake
builds. We just forgot to do it the same for derived sources.

  • Sources.txt: replaced ENABLE_WEBGL by ENABLE_WEBXR.
11:08 AM Changeset in webkit [258997] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews] status-bubble should link to buildbot queue while waiting in queue
https://bugs.webkit.org/show_bug.cgi?id=209543

Reviewed by Jonathan Bedard.

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

(StatusBubble._build_bubble): Link to buildbot queue whil patch is waiting in queue.

  • BuildSlaveSupport/ews-app/ews/common/buildbot.py:

(Buildbot.update_icons_for_queues_mapping): Generate the mapping for shortname to full queue name.

10:37 AM Changeset in webkit [258996] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ iOS ] http/tests/cache-storage/page-cache-domcache-pending-promise.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=209514

Fixing expectations.

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
10:32 AM Changeset in webkit [258995] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit

Remove newline that I accidentally added in r258989.

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
10:27 AM Changeset in webkit [258994] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

Avoid logging sensitive information for all network sessions
https://bugs.webkit.org/show_bug.cgi?id=209522
<rdar://problem/54807157>

Reviewed by Alex Christensen.

We avoid logging sensitive information (such as visited URLs) on production builds and for ephemeral sessions.

We should also avoid such logging for engineering and prerelease builds to reduce the possibility of any
personally identifiable information being retained in logs.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::configurationForSessionID): Deny senstive logging for all sessions.

10:15 AM Changeset in webkit [258993] by Said Abou-Hallawa
  • 4 edits
    1 add
    1 delete in trunk/LayoutTests

Layout Test fast/images/async-image-multiple-clients-repaint.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=202328
<rdar://problem/54325032>

Unreviewed test gardening.

Remove flaky expectation for this test since it has been passing on all
Mac and iOS platforms. Make the iOS expected result the same for the
device and for the simulator.

  • platform/ios-simulator/fast/images: Removed.
  • platform/ios/TestExpectations:
  • platform/ios/fast/images/async-image-multiple-clients-repaint-expected.txt: Added.
  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
10:07 AM Changeset in webkit [258992] by Alan Coon
  • 1 copy in tags/Safari-610.1.7.3.2

Tag Safari-610.1.7.3.2.

10:05 AM Changeset in webkit [258991] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Fix build after https://trac.webkit.org/changeset/258977/webkit
https://bugs.webkit.org/show_bug.cgi?id=209545

Unreviewed.

  • dom/Document.cpp:

(WebCore::Document::visibilityStateChanged):
Add ENABLE(MEDIA_STREAM) compilation flag.

10:03 AM Changeset in webkit [258990] by commit-queue@webkit.org
  • 71 edits
    27 copies
    52 adds
    1 delete in trunk

LayoutTests/imported/w3c:
WebKit uses Alphabetic Baseline when "-webkit-text-orientation" is "mixed" in Vertical Writing Mode
https://bugs.webkit.org/show_bug.cgi?id=208824

Patch by Frank Yang <guowei_yang@apple.com> on 2020-03-25
Reviewed by Myles C. Maxfield.

Those -expected.txt files need to be updated since previously they are expecting
failures, but after the code change those failures are actually passing, so the
expected.txt files need to be updated.

  • web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-008-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-container-baseline-001-expected.txt:

Source/WebCore:
WebKit uses Alphabetic Baseline when "-webkit-text-orientation" is "mixed" in Vertical Writing Mode
https://bugs.webkit.org/show_bug.cgi?id=208824

Patch by Frank Yang <guowei_yang@apple.com> on 2020-03-25
Reviewed by Myles C. Maxfield.

According to the CSS documentation, https://drafts.csswg.org/css-writing-modes/#text-orientation and
https://drafts.csswg.org/css-writing-modes/#text-baselines "In vertical typographic mode,
the central baseline is used as the dominant baseline when text-orientation is mixed or upright.
Otherwise the alphabetic baseline is used."

However, InlineFlowBox::requiresIdeographicsBaseline returns true only when text orientation is
"upright", meaning it applies the same baseline for mixed and sideways text orientation.
Therefore, a new clause is added to check if text-orientation is "mixed"

Currently in our implementation, text orientation is determinted by the following:

  • mixed: FontDescription returns Vertical and nonCJKGlyphOrientation returns Mixed
  • upright: FontDescription returns Vertical and nonCJKGlyphOrientation returns Upright
  • sideways: FontDescription returns Horizontal and nonCJKGlyphOrientation returns Mixed

Original code only checks if FontDescription returns Vertical and nonCJKGlyphOrientation returns Mixed, which
is only checking if text orientation is "upright", and returns true for requiresIdeographicBaseline, treating
"mixed" and "sideways" the same, requesting alphabetic baseline, which is incorrect.

Therefore, to correct this bahavior, change the code so that requiresIdeographicsBaseline returns true either
when text-orientation is "mixed" or "upright". Equivalently, we return true when FontDescription returns Vertical
false otherwise.

Test: imported/w3c/web-platform-tests/css/css-writing-modes/

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::requiresIdeographicBaseline const):

LayoutTests:
WebKit uses Alphabetic Baseline when "-webkit-text-orientation" is "mixed" in Vertical Writing Mode
https://bugs.webkit.org/show_bug.cgi?id=208824

Patch by Frank Yang <guowei_yang@apple.com> on 2020-03-25
Reviewed by Myles C. Maxfield.

Fixed errors in existing test files and expected results regarding
baseline alignment. This baseline alignment bug is probably in the codebase
for a long time, and all the following tests are based on
two incorrect behaviors within WebKit, which is

1) WebKit cannot parse "text-orientation" since it's not supported yet,
2) WebKit doesn't distinguish "mixed" and "sideways" when selecting baselines,

so both orientations alphabetic baseline is selected. Therefore, for those test
cases, the expected files are actually reflecting the behavior of
"sideways" instead of "mixed". Now after this patch, "mixed" now
selects ideographic baseline, which will cause the tests to fail,
so I added "-webkit-text-orientation: sideways" to these tests, and
I also created new tests to cover "mixed" text orientation.

  • editing/selection/vertical-rl-rtl-extend-line-backward-br.html:
  • editing/selection/vertical-rl-rtl-extend-line-backward-p.html:
  • editing/selection/vertical-rl-rtl-extend-line-forward-br.html:
  • editing/selection/vertical-rl-rtl-extend-line-forward-p.html:
  • fast/backgrounds/background-leakage-transforms.html:
  • fast/css/vertical-text-overflow-ellipsis-text-align-center.html:
  • fast/css/vertical-text-overflow-ellipsis-text-align-justify.html:
  • fast/css/vertical-text-overflow-ellipsis-text-align-left.html:
  • fast/css/vertical-text-overflow-ellipsis-text-align-right.html:
  • fast/html/details-marker-style.html:
  • fast/html/details-writing-mode.html:
  • fast/inline-block/baseline-vertical-01-expected.html:
  • fast/inline-block/baseline-vertical-01.html:
  • fast/inline-block/baseline-vertical-02-expected.html:
  • fast/inline-block/baseline-vertical-02.html:
  • fast/inline-block/baseline-vertical-03-expected.html:
  • fast/inline-block/baseline-vertical-03.html:
  • fast/inline-block/baseline-vertical-04-expected.html:
  • fast/inline-block/baseline-vertical-04.html:
  • fast/inline-block/baseline-vertical-05-expected.html:
  • fast/inline-block/baseline-vertical-05.html:
  • fast/inline-block/baseline-vertical-06-expected.html:
  • fast/inline-block/baseline-vertical-06.html:
  • fast/inline-block/baseline-vertical-07-expected.html:
  • fast/inline-block/baseline-vertical-07.html:
  • fast/inline-block/baseline-vertical-08-expected.html:
  • fast/inline-block/baseline-vertical-08.html:
  • fast/lists/003-vertical.html:
  • fast/lists/009-vertical.html:
  • fast/multicol/tall-image-behavior-lr.html:
  • fast/multicol/vertical-rl/rule-style.html:
  • fast/ruby/overhang-vertical-no-overlap2.html:
  • fast/ruby/overhang-vertical.html:
  • fast/text/vertical-rl-rtl-linebreak.html:
  • fast/writing-mode/background-vertical-lr.html:
  • fast/writing-mode/background-vertical-rl.html:
  • fast/writing-mode/basic-vertical-line.html:
  • fast/writing-mode/border-image-vertical-lr.html:
  • fast/writing-mode/border-image-vertical-rl.html:
  • fast/writing-mode/border-styles-vertical-lr.html:
  • fast/writing-mode/border-styles-vertical-rl.html:
  • fast/writing-mode/vertical-lr-replaced-selection.html:
  • fast/writing-mode/vertical-rl-replaced-selection.html:
  • platform/ios/media/track/track-cue-rendering-vertical-expected.txt:
  • platform/mac/fast/ruby/bopomofo-expected.txt:
  • platform/mac/fast/ruby/bopomofo-letter-spacing-expected.txt:
  • platform/mac/fast/ruby/bopomofo-rl-expected.txt:
  • platform/mac/fast/text/orientation-sideways-expected.png: Removed.
  • platform/mac/fast/writing-mode/text-orientation-basic-expected.txt:
  • platform/mac/fast/writing-mode/vertical-baseline-alignment-expected.txt:
  • platform/win/fast/ruby/bopomofo-expected.txt:
  • platform/win/fast/ruby/bopomofo-letter-spacing-expected.txt:
  • platform/win/fast/ruby/bopomofo-rl-expected.txt:
  • platform/win/fast/writing-mode/text-orientation-basic-expected.txt:
  • platform/win/fast/writing-mode/vertical-align-table-baseline-expected.txt:
  • platform/win/fast/writing-mode/vertical-baseline-alignment-expected.txt:
  • platform/win/fast/css/vertical-text-overflow-ellipsis-text-align-center-mixed-expected.txt: Added.
  • platform/win/fast/css/vertical-text-overflow-ellipsis-text-align-justify-mixed-expected.txt: Added.
  • platform/win/fast/css/vertical-text-overflow-ellipsis-text-align-left-mixed-expected.txt: Added.
  • platform/win/fast/css/vertical-text-overflow-ellipsis-text-align-right-mixed-expected.txt: Added.
  • platform/win/fast/html/details-marker-style-mixed-expected.txt: Added.
  • platform/win/fast/html/details-writing-mode-mixed-expected.txt: Added.
  • platform/win/fast/multicol/tall-image-behavior-lr-mixed-expected.txt: Added.
  • platform/win/fast/ruby/bopomofo-mixed-expected.txt: Added.
  • platform/win/fast/text/vertical-rl-rtl-linebreak-mixed-expected.txt: Added.
  • platform/win/fast/writing-mode/vertical-baseline-alignment-mixed-expected.txt: Added.
  • platform/win/fast/writing-mode/vertical-lr-replaced-selection-mixed-expected.txt: Added.
  • platform/win/fast/writing-mode/vertical-rl-replaced-selection-mixed-expected.txt: Added.
  • printing/resources/iframe-subframe-vertical-rl.html:
  • editing/selection/vertical-rl-rtl-extend-line-backward-br-mixed-expected.txt: Added.
  • editing/selection/vertical-rl-rtl-extend-line-backward-br-mixed.html: Added.
  • editing/selection/vertical-rl-rtl-extend-line-backward-p-mixed-expected.txt: Added.
  • editing/selection/vertical-rl-rtl-extend-line-backward-p-mixed.html: Added.
  • editing/selection/vertical-rl-rtl-extend-line-forward-br-mixed-expected.txt: Added.
  • editing/selection/vertical-rl-rtl-extend-line-forward-br-mixed.html: Added.
  • editing/selection/vertical-rl-rtl-extend-line-forward-p-mixed-expected.txt: Added.
  • editing/selection/vertical-rl-rtl-extend-line-forward-p-mixed.html: Added.
  • fast/css/vertical-text-overflow-ellipsis-text-align-center-mixed-expected.txt: Added.
  • fast/css/vertical-text-overflow-ellipsis-text-align-center-mixed.html: Added.
  • fast/css/vertical-text-overflow-ellipsis-text-align-justify-mixed-expected.txt: Added.
  • fast/css/vertical-text-overflow-ellipsis-text-align-justify-mixed.html: Added.
  • fast/css/vertical-text-overflow-ellipsis-text-align-left-mixed-expected.txt: Added.
  • fast/css/vertical-text-overflow-ellipsis-text-align-left-mixed.html: Added.
  • fast/css/vertical-text-overflow-ellipsis-text-align-right-mixed-expected.txt: Added.
  • fast/css/vertical-text-overflow-ellipsis-text-align-right-mixed.html: Added.
  • fast/html/details-marker-style-mixed-expected.txt: Added.
  • fast/html/details-marker-style-mixed.html: Added.
  • fast/html/details-writing-mode-mixed-expected.txt: Added.
  • fast/html/details-writing-mode-mixed.html: Added.
  • fast/multicol/tall-image-behavior-lr-mixed-expected.txt: Added.
  • fast/multicol/tall-image-behavior-lr-mixed.html: Added.
  • fast/ruby/bopomofo-mixed-expected.txt: Added.
  • fast/ruby/bopomofo-mixed.html: Added.
  • fast/ruby/overhang-vertical-mixed-expected.txt: Added.
  • fast/ruby/overhang-vertical-mixed.html: Added.
  • fast/ruby/overhang-vertical-no-overlap2-mixed-expected.txt: Added.
  • fast/ruby/overhang-vertical-no-overlap2-mixed.html: Added.
  • fast/text/vertical-rl-rtl-linebreak-mixed-expected.txt: Added.
  • fast/text/vertical-rl-rtl-linebreak-mixed.html: Added.
  • fast/writing-mode/background-vertical-lr-mixed-expected.txt: Added.
  • fast/writing-mode/background-vertical-lr-mixed.html: Added.
  • fast/writing-mode/background-vertical-rl-mixed-expected.txt: Added.
  • fast/writing-mode/background-vertical-rl-mixed.html: Added.
  • fast/writing-mode/basic-vertical-line-mixed-expected.txt: Added.
  • fast/writing-mode/basic-vertical-line-mixed.html: Added.
  • fast/writing-mode/border-styles-vertical-lr-mixed-expected.txt: Added.
  • fast/writing-mode/border-styles-vertical-lr-mixed.html: Added.
  • fast/writing-mode/border-styles-vertical-rl-mixed-expected.txt: Added.
  • fast/writing-mode/border-styles-vertical-rl-mixed.html: Added.
  • fast/writing-mode/vertical-baseline-alignment-mixed-expected.txt: Added.
  • fast/writing-mode/vertical-baseline-alignment-mixed.html: Added.
  • fast/writing-mode/vertical-lr-replaced-selection-mixed-expected.txt: Added.
  • fast/writing-mode/vertical-lr-replaced-selection-mixed.html: Added.
  • fast/writing-mode/vertical-rl-replaced-selection-mixed-expected.txt: Added.
  • fast/writing-mode/vertical-rl-replaced-selection-mixed.html: Added.
  • LayoutTests/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
9:50 AM Changeset in webkit [258989] by dbates@webkit.org
  • 14 edits
    3 adds in trunk

[iOS] ASSERTION FAILURE: !isMissingPostLayoutData in WebKit::EditorState::postLayoutData()
https://bugs.webkit.org/show_bug.cgi?id=199960
<rdar://problem/53323966>

Reviewed by Simon Fraser.

Source/WebKit:

Refactor the computation of editor state so that we can request that a layout be performed
each time we compute the editor state as part of asking the UI process to interpret a key
event. The full (read: after layout) editor state is needed for UIKit to perform a deletion
because UIKit wants to know how many characters are before the selection. Otherwise, we hit
an assert due to the fact the last editor state sent (when the Web process asked the UI process
to interpret the key) is missing layout data.

The refactoring also moves the Cocoa-common code out of the platform-independent WebPage.cpp
file into WebPageCocoa.mm.

One side effect of the refactoring is that we no longer allow the platformEditorState() function
to override the isMissingPostLayoutData bit. Currently it can even though the calling code, the
platform independent code (PIE) in WebPage, may have attached layout data. Now the PIE code sets
this bit if it attached layout data and the platformEditorState() function only attaches more
layout data if that bit is set. platformEditorState() never unsets that bit (i.e. sets isMissingPostLayoutData
to true).

The patch also removes m_isEditorStateMissingPostLayoutData in WebPage.h. This instance variable
has been unused since <https://trac.webkit.org/changeset/221064/webkit>. Also we haven't been using
IncludePostLayoutDataHint::No since the last reference to it was removed in <https://trac.webkit.org/changeset/244494/webkit>.

I also renamed platformEditorState() to getPlatformEditorState() since it has an out argument.

Test: editing/deleting/ios/backspace-last-character.html

  • Shared/EditorState.h:
  • UIProcess/API/glib/WebKitEditorState.cpp:

(webkitEditorStateCreate): Initialize _WebKitEditorStatePrivate::typingAttributes to WEBKIT_EDITOR_TYPING_ATTRIBUTE_NONE.

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::getPlatformEditorStateCommon const): Added. Moved Cocoa-common code from WebPage.cpp to here.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::editorState const): Move Cocoa-common code to WebPageCocoa.mm. Change enum to
track whether a layout should be performed. Keep the current behavior of only including post layout
data if the frame view does not need a layout. This behavior is encoded in the enumerator ShouldPerformLayout::Default.
which is the default argument value for the argument shouldPerformLayout.

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::platformNeedsLayoutForEditorState const): Added. Non-Cocoa port implementation
that returns false.

  • WebProcess/WebPage/glib/WebPageGLib.cpp:

(WebKit::WebPage::getPlatformEditorState const): Early return if isMissingPostLayoutData is true.
(WebKit::WebPage::platformEditorState const): Deleted.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::platformNeedsLayoutForEditorState const): Added. Keep the current behavior of
performing a layout if we have a composition or a hardware keyboard is attached.
(WebKit::WebPage::getPlatformEditorState const): Call platformEditorStateCommon(). Bail out early
if isMissingPostLayoutData is true.
(WebKit::WebPage::handleEditingKeyboardEvent): The important part of this patch. Request a layout
when computing the editor state that we will send to the UI process.
(WebKit::WebPage::platformEditorState const): Deleted.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::getPlatformEditorState const): Call platformEditorStateCommon(). Bail out early
if isMissingPostLayoutData is true.
(WebKit::WebPage::platformEditorState const): Deleted.

  • WebProcess/WebPage/playstation/WebPagePlayStation.cpp:

(WebKit::WebPage::getPlatformEditorState const): Update as needed.
(WebKit::WebPage::platformEditorState const): Deleted.

  • WebProcess/WebPage/win/WebPageWin.cpp:

(WebKit::WebPage::getPlatformEditorState const): Update as needed.
(WebKit::WebPage::platformEditorState const): Deleted.

LayoutTests:

Add a test to ensure we do not assert when using the software keyboard to type a character
into a <textarea> and then delete it.

  • TestExpectations: Skip tests in editing/deleting/ios on all platforms.
  • editing/deleting/ios/backspace-last-character-expected.txt: Added.
  • editing/deleting/ios/backspace-last-character.html: Added.
  • platform/ios/TestExpectations: Unskip tests in editing/deleting/ios on iOS.
9:49 AM Changeset in webkit [258988] by Russell Epstein
  • 2 edits in branches/safari-609-branch/Source/WebCore/platform/mediastream/mac

Apply patch. rdar://problem/60827023

9:32 AM Changeset in webkit [258987] by svillar@igalia.com
  • 2 edits in trunk/Source/WebCore

Use ENABLE_WEBXR to guard WebXR IDL files in CMakeLists.txt
https://bugs.webkit.org/show_bug.cgi?id=209536

Reviewed by Darin Adler.

  • CMakeLists.txt: replaced ENABLE_WEBGL by ENABLE_WEBXR.
9:29 AM Changeset in webkit [258986] by Kate Cheney
  • 5 edits in trunk/Source

App-bound domain checks should provide more debugging details at script evaluation sites
https://bugs.webkit.org/show_bug.cgi?id=209521
<rdar://problem/60837954>

Reviewed by Chris Dumez.

Source/WebCore:

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::executeScriptInWorld):
Return makeUnexpected object with an error message instead of null to
provide more details as to why the executeScriptInWorld()
call was not completed. Also add console logging and release logging.

  • page/Frame.cpp:

(WebCore::Frame::injectUserScriptImmediately):
There is no option to return an exception here, so this patch adds
console logging and release logging.

Source/WebKit:

Return an exception because that option is available here, and also add
console and release logging for consistency across app-bound domain checks.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::runJavaScript):

9:19 AM Changeset in webkit [258985] by Simon Fraser
  • 3 edits
    2 adds in trunk

REGRESSION (r251385): box-shadow interferes with backdrop-filter
https://bugs.webkit.org/show_bug.cgi?id=208070
<rdar://problem/59683152>

Reviewed by Dean Jackson.

Source/WebCore:

updateClippingStrategy() compares the rounded rect passed in with the geometry
of the first layer argument, so the rect needs to have a zero origin. We do
the same computation in GraphicsLayerCA::updateContentsRects().

Test: compositing/filters/backdrop-filter-rect.html

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::updateBackdropFiltersRect):

LayoutTests:

  • compositing/filters/backdrop-filter-rect-expected.html: Added.
  • compositing/filters/backdrop-filter-rect.html: Added.
8:59 AM Changeset in webkit [258984] by youenn@apple.com
  • 122 edits
    9 moves
    26 adds
    2 deletes in trunk/Source/ThirdParty/libwebrtc

Bump opus to M82
https://bugs.webkit.org/show_bug.cgi?id=209540

Reviewed by Eric Carlson.

  • Source/third_party/opus: Updated.
8:57 AM Changeset in webkit [258983] by youenn@apple.com
  • 43 edits in trunk/Source/ThirdParty/libwebrtc

Bump libyuv to M82
https://bugs.webkit.org/show_bug.cgi?id=209539

Reviewed by Eric Carlson.

  • Source/third_party/libyuv: Updated.
8:53 AM Changeset in webkit [258982] by youenn@apple.com
  • 6 edits
    4 deletes in trunk/Source/ThirdParty/libwebrtc

Bump rnnoise to M82
https://bugs.webkit.org/show_bug.cgi?id=209541

Reviewed by Eric Carlson.

  • CMakeLists.txt:
  • Source/third_party/rnnoise: Updated.
  • libwebrtc.xcodeproj/project.pbxproj:
8:20 AM Changeset in webkit [258981] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ios] svg/custom/object-sizing-explicit-width.xhtml is flaky failure
https://bugs.webkit.org/show_bug.cgi?id=209544

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
8:05 AM Changeset in webkit [258980] by Wenson Hsieh
  • 16 edits in trunk/Source

Avoid querying pasteboard strings while dragging content over a potential drop target
https://bugs.webkit.org/show_bug.cgi?id=209531

Reviewed by Tim Horton and Ryosuke Niwa.

Source/WebCore:

A couple of places in WebCore currently use PasteboardStrategy::stringForType() to query for pasteboard URL
strings. These call sites attempt to read URL strings (using both readString and stringForType) for the purposes
of checking whether or not we should avoid exposing the URL string to web content (note that in the case of
containsPlainText, we actually check whether or not the string is empty, which depends on whether or not the
string is safe to expose to the web -- e.g., not a file URL).

This is incompatible with some changes in the near future which will prevent the web content process from
reading any data from the pasteboard, if a paste or drop action has not yet been performed. To address this
issue, we introduce an alternate PasteboardStrategy method, containsStringSafeForDOMToReadForType, which returns
(for a given platform pasteboard type) whether or not a string that can be safely exposed to bindings exists.

Rather than allow the web process to read the entire string, limit it to just this true/false answer.

  • platform/PasteboardStrategy.h:
  • platform/PlatformPasteboard.h:
  • platform/cocoa/DragDataCocoa.mm:

(WebCore::DragData::containsPlainText const):

Use containsStringSafeForDOMToReadForType instead of stringForType.

  • platform/cocoa/PasteboardCocoa.mm:

(WebCore::Pasteboard::fileContentState):

Use containsStringSafeForDOMToReadForType instead of readString.

  • platform/cocoa/PlatformPasteboardCocoa.mm:

(WebCore::PlatformPasteboard::containsStringSafeForDOMToReadForType const):

Source/WebKit:

Add PasteboardStrategy and WebPasteboardProxy (IPC) plumbing; see WebCore for more details.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::containsStringSafeForDOMToReadForType):

  • UIProcess/WebPasteboardProxy.cpp:

(WebKit::WebPasteboardProxy::containsStringSafeForDOMToReadForType):

  • UIProcess/WebPasteboardProxy.h:
  • UIProcess/WebPasteboardProxy.messages.in:
  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::containsStringSafeForDOMToReadForType):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Source/WebKitLegacy/mac:

Add PasteboardStrategy plumbing; see WebCore for more details.

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPlatformStrategies.mm:

(WebPlatformStrategies::containsStringSafeForDOMToReadForType):

7:05 AM Changeset in webkit [258979] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

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

Unreviewed gardening.

Gardening of flaky tests and of tests that are failing in the EWS bot
but not in the test bot.

  • platform/gtk/TestExpectations:
6:54 AM Changeset in webkit [258978] by commit-queue@webkit.org
  • 5 edits in trunk

[GTK] Add user agent quirk for auth.mayohr.com
https://bugs.webkit.org/show_bug.cgi?id=209378

Patch by Ting-Wei Lan <Ting-Wei Lan> on 2020-03-25
Reviewed by Michael Catanzaro.

Source/WebCore:

This site blocks the login page completely and asks the user to download
Google Chrome when using our standard user agent. It only blocks the
login page. After logging in, it works fine without user agent quirks.

Note that it is required to hide Version/X from the user agent string
for the site to recognize it as a valid Chrome user agent. Since Chrome
itself does not use Version/X, it should be safe to modify the existing
quirk instead of adding a new one to handle it.

  • platform/UserAgentQuirks.cpp:

(WebCore::urlRequiresChromeBrowser):
(WebCore::urlRequiresNoSafariVersion):
(WebCore::UserAgentQuirks::quirksForURL):
(WebCore::UserAgentQuirks::stringForQuirk):

  • platform/UserAgentQuirks.h:
  • platform/glib/UserAgentGLib.cpp:

(WebCore::buildUserAgentString):

Tools:

  • TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:

(TestWebKitAPI::assertUserAgentForURLHasNoSafariVersionQuirk):
(TestWebKitAPI::TEST):

6:44 AM Changeset in webkit [258977] by youenn@apple.com
  • 9 edits in trunk/Source/WebCore

Audio fails to capture stream in WebRTC if AudioSession gets interrupted
https://bugs.webkit.org/show_bug.cgi?id=208516
<rdar://problem/60020467>

Reviewed by Eric Carlson.

In case of page going to hidden, continue calling each capture factory to mute the corresponding sources if needed.
In case of page being visible again, reset all tracks according page muted state. This allows restarting tracks that have been
muted while page was hidden (video tracks or suspended audio tracks).

Since tracks can go to muted when visibility changes, we no longer return early when setting the muted state of a page to the same value.
Instead we apply it which ensures we comply with what UIProcess wants.

We start removing the concept of a RealtimeMediaSource be interrupted. Instead we use muting of sources.
This allows UIProcess or the page to override any muted state, for instance if page goes in foreground again.

We update the AudioSharedUnit to allow restarting capture even if suspended.
This ensures that we are able to restart capturing even if we do not receive the audio session end of interruption.
Also, this notification sometimes takes a long time to happen and we do not want to wait for it when user is interacting with the page.
A future refactoring will further remove RealtimeMediaSource interrupted-related code.

Manually tested.

  • dom/Document.cpp:

(WebCore::Document::visibilityStateChanged):

  • page/Page.cpp:

(WebCore::Page::setMuted):

  • platform/audio/PlatformMediaSessionManager.h:

(WebCore::PlatformMediaSessionManager::isInterrupted const):

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::setInterrupted):
(WebCore::RealtimeMediaSource::setMuted):

  • platform/mediastream/mac/BaseAudioSharedUnit.cpp:

(WebCore::BaseAudioSharedUnit::startProducingData):
(WebCore::BaseAudioSharedUnit::resume):
(WebCore::BaseAudioSharedUnit::suspend):

6:18 AM WebKitGTK/Debugging edited by Philippe Normand
(diff)
6:16 AM WebKitGTK/Debugging edited by Philippe Normand
(diff)
6:08 AM WebKitGTK/Debugging edited by Philippe Normand
(diff)
6:02 AM WebKitGTK/Debugging edited by Philippe Normand
(diff)
4:11 AM Changeset in webkit [258976] by Alexey Shvayka
  • 7 edits in trunk

\b escapes inside character classes should be valid in Unicode patterns
https://bugs.webkit.org/show_bug.cgi?id=209528

Reviewed by Darin Adler.

JSTests:

  • test262/expectations.yaml: Mark 2 test cases as passing.

Source/JavaScriptCore:

This change removes isIdentityEscapeAnError('b') check, allowing \b escapes
inside character classes in Unicode patterns match U+0008 (BACKSPACE) characters,
aligning JSC with V8 and SpiderMonkey.

Grammar: https://tc39.es/ecma262/#prod-ClassEscape
('b' comes before CharacterEscape :: IdentityEscape)

  • yarr/YarrParser.h:

(JSC::Yarr::Parser::parseEscape):

LayoutTests:

  • js/regexp-unicode-expected.txt:
  • js/script-tests/regexp-unicode.js:
3:19 AM Changeset in webkit [258975] by cturner@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Remove noisy warning about broken LC support
https://bugs.webkit.org/show_bug.cgi?id=209472

Reviewed by Philippe Normand.

  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::initializeGStreamer): There's no seemingly nice way of
ensuring this message is issued once in WebKit the
lifetime. Issuing multiple times is upsetting users. We can't rely
on Gst logging at this point, and there's no established story of
using the LOG_CHANNEL stuff on WPE/GTK ports for suppressible
WebKit message AFAICT.

Note: See TracTimeline for information about the timeline view.