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

Timeline



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):

Note: See TracTimeline for information about the timeline view.