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

Timeline



Mar 5, 2020:

10:32 PM Changeset in webkit [257970] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][TFC] An absolute positioned <table> should establish a table formatting context
https://bugs.webkit.org/show_bug.cgi?id=208695
<rdar://problem/60122473>

Reviewed by Antti Koivisto.

Not all type of content gets blockified when out-of-flow positioned or floated.

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::establishesBlockFormattingContext const):

10:16 PM Changeset in webkit [257969] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[iOS] Remove reporting for some well-understood framebuffer routines
https://bugs.webkit.org/show_bug.cgi?id=208686
<rdar://problem/59181061>

Reviewed by Per Arne Vollan.

We have captured backlogs capturing the use of more framebuffer-related rules. We
should remove this reporting to reduce log spam.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
9:59 PM Changeset in webkit [257968] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

GPU Process sandbox errors
https://bugs.webkit.org/show_bug.cgi?id=208688
<rdar://problem/60085171>

Reviewed by Per Arne Vollan.

The new GPU Process needs access to a number of properties to support media playback
features available in our shipping software.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
9:13 PM Changeset in webkit [257967] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[WPE] Garden some webgl 2.0 failures.

Unreviewed test gardening.

  • platform/wpe/TestExpectations:
8:11 PM Changeset in webkit [257966] by Darin Adler
  • 5 edits in trunk/Source/WebCore

Simplify gradient parsing
https://bugs.webkit.org/show_bug.cgi?id=208417

Reviewed by Anders Carlsson.

  • Use Optional<> and invalid Color to represent unspecified positions and colors. This is simpler and easier to get right than separate booleans.
  • Simplified sorting of stops in legacy gradients to remove extra CSS value evaluation and unnecessary "sort in place" technique.
  • Rewrote equals functions for CSS gradient value classes. The new pattern is to compare all the data members that hold parsed CSS data, handling null correctly, since the parser won't set inappropriate ones. The old code had complex logic to only compare certain data members, which was unnecessary and hard to read to tell if it was correct.
  • Added some more use of WTFMove to cut down on reference count churn.
  • css/CSSGradientValue.cpp:

(WebCore::CSSGradientValue::image): Removed unneeded call to get().
(WebCore::compareStops): Deleted.
(WebCore::CSSGradientValue::sortStopsIfNeeded): Deleted.
(WebCore::resolveStopColors): Take advantage of the fact that we know because
of parsing rules that the only stops without colors are midpoints to drastically
simplify this function to a trivial loop.
(WebCore::CSSGradientValue::hasColorDerivedFromElement const): Added.
Checks to see if any of the stop colors is derived from the element. The old
code confusingly would store the answer to this in the stop, but only in the
first stop with this property. Computing it without modifying the stop, and
memoizing it in the gradient preserves the same performance characteristics
as before without requiring a boolean in each stop in the stops vector.
(WebCore::CSSGradientValue::gradientWithStylesResolved): Call the new
hasColorDerivedFromElement function instead of having the logic here.
(WebCore::LinearGradientAdapter::normalizeStopsAndEndpointsOutsideRange):
Update since GradientStop now has optional offsets. By the time this
function is called they are all guaranteed to be filled in, so we can
just use the * operator.
(WebCore::RadialGradientAdapter::normalizeStopsAndEndpointsOutsideRange):
Ditto.
(WebCore::ConicGradientAdapter::normalizeStopsAndEndpointsOutsideRange):
Ditto.
(WebCore::CSSGradientValue::computeStops): Moved the sorting of stops for
the deprecated gradients here. Also updated since Gradient::ColorStop
no longer uses "m_" prefixes on its public struct data members. Some
simplification because we no longer need to explicitly set "specified"
to true since it's no longer a separate boolean.
(WebCore::positionFromValue): Handle a null pointer for value by returning
0, which is what the caller was doing explicitly before. Use float
instead of int for some internal computations that were mixing the two
for no good reason.
(WebCore::computeEndPoint): Removed null checks now that positionFromValue
does them for us, turning this into a one-liner.
(WebCore::CSSGradientValue::isCacheable const): Use hasColorDerivedFromElement.
(WebCore::CSSGradientValue::knownToBeOpaque const): Removed unnnecessary
checking the color both before and after when a color filter is involved.
(WebCore::CSSGradientValue::equals const): Added. Shared by all the equals
functions for derived classes.
(WebCore::appendGradientStops): Updated for changes to CSSGradientColorStop.
(WebCore::appendSpaceSeparatedOptionalCSSPtrText): Added template helper
for writing two optional CSS values with a space between.
(WebCore::writeColorStop): Ditto. Also converted to non-member function,
removed unneeded isMidpoint check, use appendSpaceSeparatedOptionalCSSPtrText.
(WebCore::CSSLinearGradientValue::customCSSText const): Call function
members so we don't have to expose CSSGradientValue data members as
protected things that can be accessed by derived classes. Some other
small refactoring, such as getting rid of extra boolean wroteFirstStop.
(WebCore::CSSLinearGradientValue::createGradient): Updated to use
function members instead of protected data members.
(WebCore::CSSLinearGradientValue::equals const): Compare all data
members and use CSSGradientValue::equals, makes this a 1-liner.
(WebCore::CSSRadialGradientValue::customCSSText const): Call function
members as described above and use appendSpaceSeparatedOptionalCSSPtrText.
(WebCore::CSSRadialGradientValue::createGradient): Ditto.
(WebCore::CSSRadialGradientValue::equals const): Compare all data
members and use CSSGradientValue::equals.
(WebCore::CSSConicGradientValue::customCSSText const): Call function
members as described above and use appendSpaceSeparatedOptionalCSSPtrText.
(WebCore::CSSConicGradientValue::createGradient): Ditto.
(WebCore::CSSConicGradientValue::equals const): Compare all data
members and use CSSGradientValue::equals, makes this a 1-liner.

  • css/CSSGradientValue.h: Removed unneeded includes and forward declarations.

Renamed CSSGradientColorStop data members to not use m_ prefix since this is
a struct with public data members, and WebKit style says not to do that here.
Removed m_colorIsDerivedFromElement and isMidpoint from CSSGradientColorStop,
m_colorIsDerivedFromElement is now stored in the gradient, not the color stop,
and midpoints are any color stop with null color. Replaced the
CSSGradientValue::stopCount function, which mixed size_t and unsigned types,
with a hasTwoStops function, which is all the caller needs. Converted the
isFixedSize, fixedSize, isPending, and loadSubimages into static member
functions: they don't do any work and so don't need an instance. Removed
the unneeded gradient type argument to the cloning constructors. Removed
m_stopsSorted and added m_hasColorDerivedFromElement and
hasColorDerivedFromElement. Added getter functions that are protected so
the data members themselves can be private. Removed sortStopsIfNeeded
and writeColorStop.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradientColorStop):
Updated for CSSGradientColorStop member renaming.
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradient): Use
more WTFMove to save a little bit of reference count churn; in some cases
that means moving the setter calls to the end of the function after all
the error checking.
(WebCore::CSSPropertyParserHelpers::consumeGradientColorStops): Ditto.
Removed code to set isMidpoint and the FIXME-NEWPARSER comment that said
it could be removed. Used lambda to cut down on repeated code. Changed
parsing of stops with a second position to repeat the color instead of
relying on later computation to repeat it; this is required so we can
always treat an omitted color as a midpoint.
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedRadialGradient): Ditto.
(WebCore::CSSPropertyParserHelpers::consumeRadialGradient): Ditto.
(WebCore::CSSPropertyParserHelpers::consumeLinearGradient): Ditto.
(WebCore::CSSPropertyParserHelpers::consumeConicGradient): Ditto.

  • html/HTMLInputElement.cpp:

(WebCore::autoFillStrongPasswordMaskImage): Updated for the renamed
CSSGradientColorStop members, added a missing call to doneAddingStops,
and use some WTFMove to cut down on reference count churn.

7:57 PM Changeset in webkit [257965] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: AXI: annotate tab panels
https://bugs.webkit.org/show_bug.cgi?id=208542

Reviewed by Devin Rousso.

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

Remove role=main since it was providing very generic and not useful description to VoiceOver.

7:00 PM Changeset in webkit [257964] by beidson@apple.com
  • 3 edits in trunk/Source/WebKit

Pre-fetch first page in new PDF loading model.
https://bugs.webkit.org/show_bug.cgi?id=208669

Reviewed by Alex Christensen.

Also add some logging.

  • Platform/Logging.h:
  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::dataProviderGetBytesAtPositionCallback):
(WebKit::dataProviderGetByteRangesCallback):
(WebKit::PDFPlugin::threadEntry):

6:37 PM Changeset in webkit [257963] by achristensen@apple.com
  • 15 edits in trunk

Add WKNavigationDelegatePrivate SPI to inform application of subframe navigations
https://bugs.webkit.org/show_bug.cgi?id=208670

Reviewed by Brady Eidson.

Source/WebKit:

There is no WKNavigation for subframe navigations, so just expose the NSURLRequest directly.
This is equivalent to WKNavigation._request, which is distinct from WKFrameInfo.request.
The former is the currently pending request, the latter is the request that has already loaded.
I needed to move the isMainFrame check to the NavigationClient implementations.
This is needed for <rdar://problem/57201034>.
Covered by API tests.

  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::didStartProvisionalNavigation):
(API::NavigationClient::didFailProvisionalNavigationWithError):
(API::NavigationClient::didCommitNavigation):
(API::NavigationClient::didFinishNavigation):
(API::NavigationClient::didFailNavigationWithError):
(API::NavigationClient::didFailProvisionalLoadInSubframeWithError): Deleted.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageNavigationClient):

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

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::didStartProvisionalNavigation):
(WebKit::createErrorWithRecoveryAttempter):
(WebKit::NavigationState::NavigationClient::didFailProvisionalNavigationWithError):
(WebKit::NavigationState::NavigationClient::didCommitNavigation):
(WebKit::NavigationState::NavigationClient::didFinishNavigation):
(WebKit::NavigationState::NavigationClient::didFailNavigationWithError):
(WebKit::NavigationState::NavigationClient::didFailProvisionalLoadInSubframeWithError): Deleted.

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::cancel):
(WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
(WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
(WebKit::ProvisionalPageProxy::didCommitLoadForFrame):

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

(WebKit::WebPageProxy::commitProvisionalPage):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didFinishLoadForFrame):
(WebKit::WebPageProxy::didFailLoadForFrame):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
(WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
(WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
(WebKit::WebFrameLoaderClient::dispatchDidFailLoad):
(WebKit::WebFrameLoaderClient::dispatchDidFinishLoad):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:

(-[FrameNavigationDelegate waitForNavigations:]):
(-[FrameNavigationDelegate requests]):
(-[FrameNavigationDelegate frames]):
(-[FrameNavigationDelegate callbacks]):
(-[FrameNavigationDelegate _webView:didStartProvisionalLoadWithRequest:inFrame:]):
(-[FrameNavigationDelegate _webView:didFailProvisionalLoadWithRequest:inFrame:withError:]):
(-[FrameNavigationDelegate _webView:didCommitLoadWithRequest:inFrame:]):
(-[FrameNavigationDelegate _webView:didFailLoadWithRequest:inFrame:withError:]):
(-[FrameNavigationDelegate _webView:didFinishLoadWithRequest:inFrame:]):
(TEST):

6:33 PM Changeset in webkit [257962] by achristensen@apple.com
  • 14 edits in trunk

Add WKFrameInfo._parentFrameHandle SPI
https://bugs.webkit.org/show_bug.cgi?id=208674

Reviewed by Brady Eidson.

Source/WebKit:

I got carried away and removed it in r257872 but it's still needed for <rdar://problem/57201034>
Covered by API tests.

  • Shared/FrameInfoData.cpp:

(WebKit::FrameInfoData::encode const):
(WebKit::FrameInfoData::decode):

  • Shared/FrameInfoData.h:
  • UIProcess/API/APIFrameInfo.cpp:

(API::FrameInfo::parentFrameHandle const):

  • UIProcess/API/APIFrameInfo.h:
  • UIProcess/API/APIFrameTreeNode.cpp:

(API::FrameTreeNode::parentFrameHandle const):

  • UIProcess/API/APIFrameTreeNode.h:
  • UIProcess/API/Cocoa/WKFrameInfo.mm:

(-[WKFrameInfo _parentFrameHandle]):

  • UIProcess/API/Cocoa/WKFrameInfoPrivate.h:
  • UIProcess/API/Cocoa/_WKFrameTreeNode.mm:

(-[_WKFrameTreeNode _parentFrameHandle]):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::info const):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:
5:22 PM Changeset in webkit [257961] by Simon Fraser
  • 7 edits in trunk/LayoutTests

REGRESSION (r257938): 5 event-region tests in fast/scrolling/ios are failing
https://bugs.webkit.org/show_bug.cgi?id=208673

Unreviewed test fix.

The code now bails frome event region building by checking settings, so these tests
need to enable async overflow scrolling.

  • fast/scrolling/ios/border-radius-event-region-expected.txt:
  • fast/scrolling/ios/border-radius-event-region.html:
  • fast/scrolling/ios/event-region-pointer-events.html:
  • fast/scrolling/ios/event-region-scale-transform-shared.html:
  • fast/scrolling/ios/event-region-translate-transform-shared.html:
  • fast/scrolling/ios/event-region-visibility-hidden.html:
5:19 PM Changeset in webkit [257960] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 Release ] fast/scrolling/scroll-animator-overlay-scrollbars-hovered.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208678

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:46 PM Changeset in webkit [257959] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: AXI: can't leave Styles and Computed panels by pressing Tab
https://bugs.webkit.org/show_bug.cgi?id=208549
<rdar://problem/60020149>

Reviewed by Devin Rousso.

Remove focus cycling inside of the Styles and Computed panels.

  • UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:

(WI.GeneralStyleDetailsSidebarPanel.prototype._handleForcedPseudoClassCheckboxKeydown):
(WI.GeneralStyleDetailsSidebarPanel.prototype._handleFilterBarInputFieldKeyDown):

4:30 PM Changeset in webkit [257958] by commit-queue@webkit.org
  • 11 edits in trunk

Remove the optimization for discarding no operation DisplayList items between Save and Restore items
https://bugs.webkit.org/show_bug.cgi?id=208659

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-03-05
Reviewed by Simon Fraser.

Source/WebCore:

This optimization is wrong in the case of drawing a canvas in general.
The original implementation of the DisplayList assumes balanced Save/
Restore GraphicsContext. In canvas a GraphicsConext 'save' can be issued
in a frame and the corresponding restore is issued many frames later.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::removeItemsFromIndex): Deleted.

  • platform/graphics/displaylists/DisplayList.h:
  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::operator<<):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::Save::encode const):
(WebCore::DisplayList::Save::decode):
(WebCore::DisplayList::Save::restoreIndex const): Deleted.
(WebCore::DisplayList::Save::setRestoreIndex): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::save):
(WebCore::DisplayList::Recorder::restore):

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::ContextState::cloneForSave const):

LayoutTests:

Re-baseline the DisplayList tests.

  • displaylists/canvas-display-list-expected.txt:
  • displaylists/extent-includes-shadow-expected.txt:
  • displaylists/extent-includes-transforms-expected.txt:
4:21 PM Changeset in webkit [257957] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

Add web page additions to WebPageProxy
https://bugs.webkit.org/show_bug.cgi?id=208666
<rdar://problem/60100413>

Reviewed by Brent Fulgham.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::isAppBoundDomain const):
(WebKit::WebPageProxy::setIsNavigatingToAppBoundDomain):

4:06 PM Changeset in webkit [257956] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

[macOS] Create sandbox extension for "com.apple.tccd"
https://bugs.webkit.org/show_bug.cgi?id=208660
<rdar://problem/57666569>

Reviewed by Per Arne Vollan.

Make the same changes for macOS as we did for iOS in Bug 204367. Specifically, remove the
blanket mach-lookup permission for 'com.apple.tccd', and instead make a dynamic extension
only when a camera or microphone request is made.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::finishGrantingRequest): Update to create the
extensions on macOS, too.

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • WebProcess/com.apple.WebProcess.sb.in: Remove blanket access permissions and move them to

the dynamic access permissions section of the sandbox.

4:02 PM Changeset in webkit [257955] by Ben Nham
  • 2 edits in trunk/Source/WebCore

Add signposts for top-level execution of script elements
https://bugs.webkit.org/show_bug.cgi?id=208548

Reviewed by Alex Christensen.

This adds signposts for initial global scope code evaluation of script elements. This makes
it easier to understand what code is executing and blocking initial HTML parsing from
completing.

In the long run, it would be nice to extend this to all top-level entry points back into JS
(e.g. we should emit an interval if we re-enter a script via setTimeout). However, such
probes have been removed in the past for being too noisy or slow (like in
https://bugs.webkit.org/show_bug.cgi?id=187196), so let's just start with this for now.

Note that we do emit the script URL in the signpost, but the signpost is gated behind both
an environment variable and an Apple-internal check to prevent accidentally leaking
sensitive info.

  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::executeClassicScript):
(WebCore::ScriptElement::executeModuleScript):

3:58 PM Changeset in webkit [257954] by jiewen_tan@apple.com
  • 17 edits
    1 add in trunk

[WebAuthn] Implement SPI -[_WKWebAuthenticationPanelDelegate panel:selectAssertionResponse:source:completionHandler:]
https://bugs.webkit.org/show_bug.cgi?id=208626
<rdar://problem/60074148>

Reviewed by Brent Fulgham.

Source/WebKit:

The patch adds a parameter (source) to the original SPI such that clients can know where those responses are from.
Besides that this patch also changes the completionHandler to accept a pointer instead of a reference such that clients
can pass a nullptr as a no op. In order to keep WebKitTestRunner running, the patch then overrides this SPI in the C API to
always return the first item.

  • UIProcess/API/APIWebAuthenticationAssertionResponse.h:
  • UIProcess/API/APIWebAuthenticationPanelClient.h:

(API::WebAuthenticationPanelClient::selectAssertionResponse const):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h:
  • UIProcess/WebAuthentication/Authenticator.h:
  • UIProcess/WebAuthentication/AuthenticatorManager.cpp:

(WebKit::AuthenticatorManager::selectAssertionResponse):

  • UIProcess/WebAuthentication/AuthenticatorManager.h:
  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticator::getAssertion):

  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.h:
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:

(WebKit::WebAuthenticationPanelClient::WebAuthenticationPanelClient):
(WebKit::wkWebAuthenticationSource):
(WebKit::WebAuthenticationPanelClient::selectAssertionResponse const):

  • UIProcess/WebAuthentication/WebAuthenticationFlags.h:
  • UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:

(WebKit::CtapAuthenticator::continueGetNextAssertionAfterResponseReceived):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(-[TestWebAuthenticationPanelDelegate panel:selectAssertionResponse:source:completionHandler:]):
(TestWebKitAPI::TEST):
(-[TestWebAuthenticationPanelDelegate panel:selectAssertionResponse:completionHandler:]): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-hid-multiple-accounts.html:
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-la.html: Added.
3:55 PM Changeset in webkit [257953] by Chris Dumez
  • 6 edits in trunk/Source/WebKit

Running a single layout test makes 28 WebProcessPools (and launches 6 Network processes)
https://bugs.webkit.org/show_bug.cgi?id=208541
<rdar://problem/60018602>

Reviewed by Youenn Fablet.

WebKitTestRunner was contructing a page / process pool and then calling into various
WebsiteDataStore APIs to reset / clear state. Because nothing had been loaded in the
view yet, the page would still be using a dummy process proxy (due to delayed process
launch optimization) at the time the WebsiteDataStore APIs are called. Because the
dummy process proxy would not register itself with the WebsiteDataStore (unlike other
processes), the WebsiteDataStore thought it had no associated process pool and would
thus construct a temporary one every time it needed one.

To address the issue, we now construct one dummy process proxy per session (instead of
one for all sessions). As a result, the dummy process proxy can now behave as a normal
WebProcessProxy and have an associated data store and register / unregister itself from
it, depending on whether or not it has pages.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::launchInitialProcessIfNecessary):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::processForRegistrableDomain):
(WebKit::WebProcessPool::createWebPage):

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

(WebKit::WebProcessProxy::isDummyProcessProxy const):
(WebKit::WebProcessProxy::updateRegistrationWithDataStore):
(WebKit::WebProcessProxy::maybeShutDown):

  • UIProcess/WebProcessProxy.h:
3:43 PM Changeset in webkit [257952] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[First paint] Fixed sized SVG content should taken into account when computing VNE status
https://bugs.webkit.org/show_bug.cgi?id=208663
<rdar://problem/60096896>

Reviewed by Simon Fraser.

Let's add fixed sized SVG to the list of content we track as VNE pixel count.
It helps to reach VNE status sooner on youtube.com.

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::reportVisuallyNonEmptyContent):

3:13 PM Changeset in webkit [257951] by Alan Bujtas
  • 3 edits in trunk/LayoutTests

REGRESSION (r257840?) [ Mac wk2 Release ] fast/hidpi/image-srcset-relative-svg-canvas.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208577
<rdar://problem/60043401>

Reviewed by Simon Fraser.

This is very similar to webkit.org/b/206254 [fast/hidpi/image-srcset-relative-svg-canvas-2x.html is a flaky]
These tests seem to be very racy (paint vs. layout).
Let's try to fix it by forcing layout (for details see
https://trac.webkit.org/changeset/255331/webkit/trunk/LayoutTests/ChangeLog)

  • fast/hidpi/image-srcset-relative-svg-canvas-expected.html:
  • fast/hidpi/image-srcset-relative-svg-canvas.html:
3:01 PM Changeset in webkit [257950] by ysuzuki@apple.com
  • 143 edits in trunk/Source/WebCore

Put all generated JSCells in WebCore into IsoSubspace
https://bugs.webkit.org/show_bug.cgi?id=205107

Reviewed by Saam Barati.

This patch automatically generates IsoSubspace per WebCore DOM object type.
In preprocess-idls.pl, we collect all the DOM object types and generate DOMIsoSubspaces class,
which contains all the necessary IsoSubspaces. And it is held by WebCoreJSClientData.

CodeGeneratorJS.pm starts putting subspaceFor and subspaceForImpl for each JS DOM wrapper classes.
And we dynamically create IsoSubspace and set it to WebCoreJSClientData's DOMIsoSubspaces. At the same
time, we register IsoSubspace to m_outputConstraintSpaces if the class has output constraits callback.

We also remove stale assertion in JSEventListener. It is saying the following.

  1. If the world is normal.
  2. If m_wrapper is gone.
  3. If m_jsFunction is not gone.

Then, the assertion hits. But this is wrong. We have no guarantee that m_jsFunction is gone when m_wrapper is gone.
We have conservative GC. We have generational GC. Someone can hold m_jsFunction's instance. Everything makes it possible
that m_jsFunction is live while m_wrapper is gone. This patch removes this assertion.

  • CMakeLists.txt:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • WebCoreMacros.cmake:
  • bindings/js/JSDOMWrapper.cpp:

(WebCore::outputConstraintSubspaceFor): Deleted.

  • bindings/js/JSDOMWrapper.h:
  • bindings/js/JSEventListener.h:

(WebCore::JSEventListener::jsFunction const):

  • bindings/js/WebCoreJSClientData.cpp:

(WebCore::JSVMClientData::JSVMClientData):

  • bindings/js/WebCoreJSClientData.h:

(WebCore::JSVMClientData::forEachOutputConstraintSpace):
(WebCore::JSVMClientData::subspaces):
(WebCore::JSVMClientData::outputConstraintSpace): Deleted.
(WebCore::JSVMClientData::subspaceForJSDOMWindow): Deleted.
(WebCore::JSVMClientData::subspaceForJSDedicatedWorkerGlobalScope): Deleted.
(WebCore::JSVMClientData::subspaceForJSRemoteDOMWindow): Deleted.
(WebCore::JSVMClientData::subspaceForJSWorkerGlobalScope): Deleted.
(WebCore::JSVMClientData::subspaceForJSServiceWorkerGlobalScope): Deleted.
(WebCore::JSVMClientData::subspaceForJSPaintWorkletGlobalScope): Deleted.
(WebCore::JSVMClientData::subspaceForJSWorkletGlobalScope): Deleted.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GenerateImplementation):

  • bindings/scripts/generate-bindings-all.pl:
  • bindings/scripts/preprocess-idls.pl:
  • bindings/scripts/test/JS/JSInterfaceName.cpp:

(WebCore::JSInterfaceName::subspaceForImpl):

  • bindings/scripts/test/JS/JSInterfaceName.h:

(WebCore::JSInterfaceName::subspaceFor):

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

(WebCore::JSMapLike::subspaceForImpl):

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

(WebCore::JSMapLike::subspaceFor):

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

(WebCore::JSReadOnlyMapLike::subspaceForImpl):

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

(WebCore::JSReadOnlyMapLike::subspaceFor):

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

(WebCore::JSReadOnlySetLike::subspaceForImpl):

  • bindings/scripts/test/JS/JSReadOnlySetLike.h:

(WebCore::JSReadOnlySetLike::subspaceFor):

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

(WebCore::JSSetLike::subspaceForImpl):

  • bindings/scripts/test/JS/JSSetLike.h:

(WebCore::JSSetLike::subspaceFor):

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

(WebCore::JSTestActiveDOMObject::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestActiveDOMObject.h:

(WebCore::JSTestActiveDOMObject::subspaceFor):

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

(WebCore::JSTestCEReactions::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestCEReactions.h:

(WebCore::JSTestCEReactions::subspaceFor):

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

(WebCore::JSTestCEReactionsStringifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.h:

(WebCore::JSTestCEReactionsStringifier::subspaceFor):

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

(WebCore::JSTestCallTracer::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestCallTracer.h:

(WebCore::JSTestCallTracer::subspaceFor):

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

(WebCore::JSTestClassWithJSBuiltinConstructor::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:

(WebCore::JSTestClassWithJSBuiltinConstructor::subspaceFor):

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

(WebCore::JSTestDOMJIT::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestDOMJIT.h:

(WebCore::JSTestDOMJIT::subspaceFor):

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

(WebCore::JSTestEnabledBySetting::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestEnabledBySetting.h:

(WebCore::JSTestEnabledBySetting::subspaceFor):

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

(WebCore::JSTestEnabledForContext::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestEnabledForContext.h:

(WebCore::JSTestEnabledForContext::subspaceFor):

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

(WebCore::JSTestEventConstructor::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestEventConstructor.h:

(WebCore::JSTestEventConstructor::subspaceFor):

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

(WebCore::JSTestEventTarget::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestEventTarget.h:

(WebCore::JSTestEventTarget::subspaceFor):

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

(WebCore::JSTestException::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestException.h:

(WebCore::JSTestException::subspaceFor):

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

(WebCore::JSTestGenerateIsReachable::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestGenerateIsReachable.h:

(WebCore::JSTestGenerateIsReachable::subspaceFor):

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

(WebCore::JSTestGlobalObject::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestGlobalObject.h:

(WebCore::JSTestGlobalObject::subspaceFor):

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

(WebCore::JSTestIndexedSetterNoIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h:

(WebCore::JSTestIndexedSetterNoIdentifier::subspaceFor):

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

(WebCore::JSTestIndexedSetterThrowingException::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h:

(WebCore::JSTestIndexedSetterThrowingException::subspaceFor):

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

(WebCore::JSTestIndexedSetterWithIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h:

(WebCore::JSTestIndexedSetterWithIdentifier::subspaceFor):

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

(WebCore::JSTestInterface::subspaceForImpl):

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

(WebCore::JSTestInterfaceLeadingUnderscore::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h:

(WebCore::JSTestInterfaceLeadingUnderscore::subspaceFor):

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

(WebCore::JSTestIterable::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestIterable.h:

(WebCore::JSTestIterable::subspaceFor):

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

(WebCore::JSTestJSBuiltinConstructor::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h:

(WebCore::JSTestJSBuiltinConstructor::subspaceFor):

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

(WebCore::JSTestMediaQueryListListener::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestMediaQueryListListener.h:

(WebCore::JSTestMediaQueryListListener::subspaceFor):

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

(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h:

(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceFor):

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

(WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h:

(WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceFor):

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

(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h:

(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceFor):

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

(WebCore::JSTestNamedConstructor::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedConstructor.h:

(WebCore::JSTestNamedConstructor::subspaceFor):

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

(WebCore::JSTestNamedDeleterNoIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h:

(WebCore::JSTestNamedDeleterNoIdentifier::subspaceFor):

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

(WebCore::JSTestNamedDeleterThrowingException::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h:

(WebCore::JSTestNamedDeleterThrowingException::subspaceFor):

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

(WebCore::JSTestNamedDeleterWithIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h:

(WebCore::JSTestNamedDeleterWithIdentifier::subspaceFor):

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

(WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h:

(WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceFor):

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

(WebCore::JSTestNamedGetterCallWith::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedGetterCallWith.h:

(WebCore::JSTestNamedGetterCallWith::subspaceFor):

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

(WebCore::JSTestNamedGetterNoIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h:

(WebCore::JSTestNamedGetterNoIdentifier::subspaceFor):

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

(WebCore::JSTestNamedGetterWithIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h:

(WebCore::JSTestNamedGetterWithIdentifier::subspaceFor):

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

(WebCore::JSTestNamedSetterNoIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h:

(WebCore::JSTestNamedSetterNoIdentifier::subspaceFor):

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

(WebCore::JSTestNamedSetterThrowingException::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h:

(WebCore::JSTestNamedSetterThrowingException::subspaceFor):

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

(WebCore::JSTestNamedSetterWithIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h:

(WebCore::JSTestNamedSetterWithIdentifier::subspaceFor):

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

(WebCore::JSTestNamedSetterWithIndexedGetter::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h:

(WebCore::JSTestNamedSetterWithIndexedGetter::subspaceFor):

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

(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h:

(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceFor):

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

(WebCore::JSTestNamedSetterWithOverrideBuiltins::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.h:

(WebCore::JSTestNamedSetterWithOverrideBuiltins::subspaceFor):

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

(WebCore::JSTestNamedSetterWithUnforgableProperties::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.h:

(WebCore::JSTestNamedSetterWithUnforgableProperties::subspaceFor):

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

(WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.h:

(WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::subspaceFor):

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

(WebCore::JSTestNode::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNode.h:
  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::JSTestObj::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestObj.h:

(WebCore::JSTestObj::subspaceFor):

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

(WebCore::JSTestOverloadedConstructors::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestOverloadedConstructors.h:

(WebCore::JSTestOverloadedConstructors::subspaceFor):

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

(WebCore::JSTestOverloadedConstructorsWithSequence::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:

(WebCore::JSTestOverloadedConstructorsWithSequence::subspaceFor):

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

(WebCore::JSTestOverrideBuiltins::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestOverrideBuiltins.h:

(WebCore::JSTestOverrideBuiltins::subspaceFor):

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

(WebCore::JSTestPluginInterface::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestPluginInterface.h:

(WebCore::JSTestPluginInterface::subspaceFor):

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

(WebCore::JSTestPromiseRejectionEvent::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.h:

(WebCore::JSTestPromiseRejectionEvent::subspaceFor):

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

(WebCore::JSTestSerialization::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestSerialization.h:

(WebCore::JSTestSerialization::subspaceFor):

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

(WebCore::JSTestSerializationIndirectInheritance::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.h:

(WebCore::JSTestSerializationIndirectInheritance::subspaceFor):

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

(WebCore::JSTestSerializationInherit::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestSerializationInherit.h:

(WebCore::JSTestSerializationInherit::subspaceFor):

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

(WebCore::JSTestSerializationInheritFinal::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestSerializationInheritFinal.h:

(WebCore::JSTestSerializationInheritFinal::subspaceFor):

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

(WebCore::JSTestSerializedScriptValueInterface::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:

(WebCore::JSTestSerializedScriptValueInterface::subspaceFor):

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

(WebCore::JSTestStringifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestStringifier.h:

(WebCore::JSTestStringifier::subspaceFor):

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

(WebCore::JSTestStringifierAnonymousOperation::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h:

(WebCore::JSTestStringifierAnonymousOperation::subspaceFor):

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

(WebCore::JSTestStringifierNamedOperation::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestStringifierNamedOperation.h:

(WebCore::JSTestStringifierNamedOperation::subspaceFor):

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

(WebCore::JSTestStringifierOperationImplementedAs::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h:

(WebCore::JSTestStringifierOperationImplementedAs::subspaceFor):

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

(WebCore::JSTestStringifierOperationNamedToString::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h:

(WebCore::JSTestStringifierOperationNamedToString::subspaceFor):

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

(WebCore::JSTestStringifierReadOnlyAttribute::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h:

(WebCore::JSTestStringifierReadOnlyAttribute::subspaceFor):

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

(WebCore::JSTestStringifierReadWriteAttribute::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h:

(WebCore::JSTestStringifierReadWriteAttribute::subspaceFor):

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

(WebCore::JSTestTypedefs::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestTypedefs.h:

(WebCore::JSTestTypedefs::subspaceFor):

2:53 PM Changeset in webkit [257949] by Simon Fraser
  • 13 edits in trunk/Source/WebCore

When using the scrolling thread, push ScrollingNodeIDs onto PlatformCALayers
https://bugs.webkit.org/show_bug.cgi?id=208654

Reviewed by Antti Koivisto.

The scrolling thread on macOS will need to be able to associate layers with scrolling nodes,
so push a ScrollingNodeID down through GraphicsLayer to PlatformCALayerCocoa.

We only need one ScrollingNodeID per platform layer, since a given platform layer only
ever has one scrolling role.

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::scrollingTreeAsText):

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::dumpProperties const):

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::scrollingNodeID const):
(WebCore::GraphicsLayer::setScrollingNodeID):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setScrollingNodeID):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
(WebCore::GraphicsLayerCA::updateScrollingNode):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • platform/graphics/ca/PlatformCALayer.h: setEventRegion() doesn't need to be pure virtual.
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(WebCore::PlatformCALayerCocoa::setEventRegion):
(WebCore::PlatformCALayerCocoa::eventRegionContainsPoint const):

  • platform/graphics/ca/win/PlatformCALayerWin.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::detachFromScrollingCoordinator):
(WebCore::RenderLayerBacking::setScrollingNodeIDForRole):

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

(WebCore::RenderLayerCompositor::ensureRootLayer):
(WebCore::RenderLayerCompositor::attachScrollingNode): For subframe scrolling, the clipLayer
is the layer that gets associated with a scrolling node.
(WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingProxyRole):

2:50 PM Changeset in webkit [257948] by Andres Gonzalez
  • 8 edits in trunk/Source/WebCore

Fix for several failures of LayoutTests in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=208658

Reviewed by Chris Fleizach.

  • Exposes the scrollView method through the AXCoreObject interface so

that wrapper code can use it for both AXObjects and IsolatedObjects.

  • Fix for a crash/assert where InvalidAXID cannot be passed as key to

the HashMap methods.

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/AccessibilityScrollView.h:
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::scrollView const):

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::applyPendingChanges):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper scrollViewParent]):
(-[WebAccessibilityObjectWrapper _accessibilityShowContextMenu]):

2:32 PM Changeset in webkit [257947] by Jacob Uphoff
  • 7 edits in trunk/Source/WebCore

Unreviewed, rolling out r257945.

This causes tests to fail

Reverted changeset:

"Remove the optimization for discarding no operation
DisplayList items between Save and Restore items"
https://bugs.webkit.org/show_bug.cgi?id=208659
https://trac.webkit.org/changeset/257945

2:25 PM Changeset in webkit [257946] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Windows build fix after r257938.

Surround the event region painting code with #if ENABLE(ASYNC_SCROLLING); Windows
doesn't need to build this code.

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

(WebCore::RenderLayerCompositor::updateBackingAndHierarchy):

2:22 PM Changeset in webkit [257945] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebCore

Remove the optimization for discarding no operation DisplayList items between Save and Restore items
https://bugs.webkit.org/show_bug.cgi?id=208659

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-03-05
Reviewed by Simon Fraser.

This optimization is wrong in the case of drawing a canvas in general.
The original implementation of the DisplayList assumes balanced Save/
Restore GraphicsContext. In canvas a GraphicsConext 'save' can be issued
in a frame and the corresponding restore is issued many frames later.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::removeItemsFromIndex): Deleted.

  • platform/graphics/displaylists/DisplayList.h:
  • platform/graphics/displaylists/DisplayListItems.cpp:
  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::Save::encode const):
(WebCore::DisplayList::Save::decode):
(WebCore::DisplayList::Save::restoreIndex const): Deleted.
(WebCore::DisplayList::Save::setRestoreIndex): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::save):
(WebCore::DisplayList::Recorder::restore):

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::ContextState::cloneForSave const):

2:10 PM Changeset in webkit [257944] by Alan Coon
  • 8 edits in trunk/Source

Versioning.

1:51 PM Changeset in webkit [257943] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ iOS ] scrollingcoordinator/ios/fixed-frame-overflow-swipe.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=208587

Unreviewed test gardening

  • platform/ios-wk2/TestExpectations:
1:30 PM Changeset in webkit [257942] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebKit

Unreviewed unified build fix; forward-declare and include GPUConnectionToWebProcess where it's used.

  • GPUProcess/media/RemoteAudioSessionProxy.cpp:
  • GPUProcess/media/RemoteAudioSessionProxy.h:
1:14 PM Changeset in webkit [257941] by Ben Nham
  • 2 edits in trunk/LayoutTests

REGRESSION (r257862): imported/w3c/web-platform-tests/svg/import/struct-dom-06-b-manual.svg is failing

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

[ iOS wk2 ] http/tests/security/contentSecurityPolicy/javascript-url-blocked-by-default-src-star.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208662

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
12:44 PM Changeset in webkit [257939] by commit-queue@webkit.org
  • 7 edits in trunk

Page-specific UserStyleSheets should wait until the initial empty document has been removed to be injected
https://bugs.webkit.org/show_bug.cgi?id=208644
<rdar://problem/60042429>

Patch by Antoine Quint <Antoine Quint> on 2020-03-05
Reviewed by Brady Eidson.

Source/WebCore:

When a WKWebView is created and asked to load a URL, it will first load an empty initial document (about:blank) prior
to creating a Document for the requested URL. We need to ensure that page-specific UserStyleSheets are only injected
once the Document for the requested URL starts loading.

When Page::injectUserStyleSheet() is called, if we determine that the empty initial document is visible, we enqueue
the provided UserStyleSheet and wait until the new mainFrameDidChangeToNonInitialEmptyDocument() method is called
to empty that queue and inject the UserStyleSheets then.

This new method is called from Frame::setDocument() for a main frame once we've determined the frame's document has
changed to a non-null value and that the frame loader's state machine indicates that we're no longer displaying the
initial empty document.

  • dom/ExtensionStyleSheets.h:
  • page/Frame.cpp:

(WebCore::Frame::setDocument):

  • page/Page.cpp:

(WebCore::Page::injectUserStyleSheet):
(WebCore::Page::removeInjectedUserStyleSheet):
(WebCore::Page::mainFrameDidChangeToNonInitialEmptyDocument):

  • page/Page.h:

Tools:

Add new tests for -[_WKUserStyleSheet initWithSource:forWKWebView:forMainFrameOnly:userContentWorld:]) that check:

  1. that a _WKUserStyleSheet can be added immediately after a WKWebView's creation and will be injected once the initial empty document has been removed in favor of the document for the requested URL,
  2. that removing a _WKUserStyleSheet immediately after it was added but before the initial empty document was removed correctly does not injected the style sheet.
  • TestWebKitAPI/Tests/WebKitCocoa/UserContentController.mm:
12:32 PM Changeset in webkit [257938] by Simon Fraser
  • 5 edits
    5 adds in trunk

Generate layer event regions for async overflow scrolling on macOS
https://bugs.webkit.org/show_bug.cgi?id=208649

Reviewed by Antti Koivisto.

Source/WebCore:

Turn on the existing code for event region generation on macOS, and generate event
regions when async overflow scroll is enabled.

Tweak the region debug color to be more visible.

Tests: fast/scrolling/mac/border-radius-event-region.html

fast/scrolling/mac/event-region-visibility-hidden.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateEventRegion):
(WebCore::RenderLayerBacking::paintDebugOverlays):

LayoutTests:

  • TestExpectations:
  • fast/scrolling/mac/border-radius-event-region-expected.txt: Added.
  • fast/scrolling/mac/border-radius-event-region.html: Added.
  • fast/scrolling/mac/event-region-visibility-hidden-expected.txt: Added.
  • fast/scrolling/mac/event-region-visibility-hidden.html: Added.
  • platform/mac-wk2/TestExpectations:
11:44 AM Changeset in webkit [257937] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r257760?) [ Mac wk2 Debug ] ASSERTION FAILED: child->parentObject() == this in WebCore::AccessibilityObject::insertChild
https://bugs.webkit.org/show_bug.cgi?id=208648

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:43 AM Changeset in webkit [257936] by jer.noble@apple.com
  • 23 edits
    11 adds in trunk/Source

[GPUP] Implement RemoteAudioSession
https://bugs.webkit.org/show_bug.cgi?id=208583

Reviewed by Alex Christensen.

Source/WebCore:

Add EnumTraits for all the enumerations inside AudioSession.

Make many AudioSession methods virtual, so they can be overridden in the case where the
GPU process is enabled.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/audio/AudioSession.cpp:

(WebCore::AudioSession::create):
(WebCore::AudioSession::sharedSession):

  • platform/audio/AudioSession.h:

Source/WebKit:

Add a subclass of AudioSession which, instead of modifying the audio behavior of the current process, modifies the
audio behavior of the GPU Process. And, in the GPU Process, since it represents the audio behavior of potentially
multiple separate WebContent processes.

Override the default shared AudioSession at WebProcess initialization time.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::didClose):
(WebKit::GPUConnectionToWebProcess::audioSessionProxy):
(WebKit::GPUConnectionToWebProcess::ensureAudioSession):
(WebKit::GPUConnectionToWebProcess::legacyCdmFactoryProxy):
(WebKit::GPUConnectionToWebProcess::dispatchMessage):
(WebKit::GPUConnectionToWebProcess::dispatchSyncMessage):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/GPUConnectionToWebProcess.messages.in:
  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::initializeGPUProcess):
(WebKit::GPUProcess::audioSessionManager const):

  • GPUProcess/GPUProcess.h:
  • GPUProcess/media/RemoteAudioSessionProxy.cpp: Added.

(WebKit::RemoteAudioSessionProxy::create):
(WebKit::RemoteAudioSessionProxy::RemoteAudioSessionProxy):
(WebKit::RemoteAudioSessionProxy::processIdentifier):
(WebKit::RemoteAudioSessionProxy::configuration):
(WebKit::RemoteAudioSessionProxy::setCategory):
(WebKit::RemoteAudioSessionProxy::setPreferredBufferSize):
(WebKit::RemoteAudioSessionProxy::tryToSetActive):
(WebKit::RemoteAudioSessionProxy::beginInterruption):
(WebKit::RemoteAudioSessionProxy::endInterruption):
(WebKit::RemoteAudioSessionProxy::audioSessionManager):
(WebKit::RemoteAudioSessionProxy::connection):

  • GPUProcess/media/RemoteAudioSessionProxy.h: Added.

(WebKit::RemoteAudioSessionProxy::category const):
(WebKit::RemoteAudioSessionProxy::routeSharingPolicy const):
(WebKit::RemoteAudioSessionProxy::preferredBufferSize const):
(WebKit::RemoteAudioSessionProxy::isActive const):

  • GPUProcess/media/RemoteAudioSessionProxy.messages.in:
  • GPUProcess/media/RemoteAudioSessionProxyManager.cpp: Added.

(WebKit::RemoteAudioSessionProxyManager::RemoteAudioSessionProxyManager):
(WebKit::RemoteAudioSessionProxyManager::addProxy):
(WebKit::RemoteAudioSessionProxyManager::removeProxy):
(WebKit::RemoteAudioSessionProxyManager::getProxy):
(WebKit::RemoteAudioSessionProxyManager::setCategoryForProcess):
(WebKit::RemoteAudioSessionProxyManager::setPreferredBufferSizeForProcess):
(WebKit::RemoteAudioSessionProxyManager::tryToSetActiveForProcess):

  • GPUProcess/media/RemoteAudioSessionProxyManager.h:

(WebKit::RemoteAudioSessionProxyManager::session const):

  • GPUProcess/media/RemoteAudioSessionProxyManager.messages.in:
  • Scripts/webkit/messages.py:
  • Sources.txt:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/media/RemoteAudioSession.cpp: Added.

(WebKit::RemoteAudioSession::create):
(WebKit::RemoteAudioSession::RemoteAudioSession):
(WebKit::RemoteAudioSession::connection):
(WebKit::RemoteAudioSession::setCategory):
(WebKit::RemoteAudioSession::setPreferredBufferSize):
(WebKit::RemoteAudioSession::tryToSetActiveInternal):
(WebKit::RemoteAudioSession::configurationChanged):
(WebKit::RemoteAudioSession::beginInterruption):
(WebKit::RemoteAudioSession::endInterruption):

  • WebProcess/GPU/media/RemoteAudioSession.h: Added.
  • WebProcess/GPU/media/RemoteAudioSession.messages.in:
  • WebProcess/GPU/media/RemoteAudioSessionConfiguration.h: Added.

(WebKit::RemoteAudioSessionConfiguration::encode const):
(WebKit::RemoteAudioSessionConfiguration::decode):

  • WebProcess/GPU/media/RemoteAudioSessionIdentifier.h:

Source/WTF:

Add UniqueRef to the list of forward-declared template types.

  • wtf/Forward.h:
11:12 AM Changeset in webkit [257935] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

Sandbox: Allow sysctl read of "kern.ostype"
https://bugs.webkit.org/show_bug.cgi?id=208650
<rdar://problem/60010603>

Reviewed by Alexey Proskuryakov.

NSURLSession needs access to "kern.ostype", so the Networking and WebContent
sandboxes should allow it. I corrected this for the iOS Network sandbox in
Bug 208346. I should have handled macOS and the WebContent process (on both
platforms) at the same time.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
11:08 AM Changeset in webkit [257934] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[ews] Add build step to push commit to WebKit repository
https://bugs.webkit.org/show_bug.cgi?id=208589

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(PushCommitToWebKitRepo): Build step to push the local commit to WebKit repository.
(PushCommitToWebKitRepo.start): Initialize log observer.
(PushCommitToWebKitRepo.evaluateCommand): Check command return status and comment on bug accordingly.
(PushCommitToWebKitRepo.comment_text_for_bug): Generate comment text for commenting on bug.
(PushCommitToWebKitRepo.svn_revision_from_commit_text): Extract the svn revision from commit text.
(PushCommitToWebKitRepo.getResultSummary): Set custom failure message.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Added unit-tests.
  • BuildSlaveSupport/ews-build/factories.py:
11:06 AM Changeset in webkit [257933] by Simon Fraser
  • 6 edits in trunk/Source/WebCore

Make m_viewportConstrainedObjects into a WeakHashSet
https://bugs.webkit.org/show_bug.cgi?id=208625

Reviewed by Ryosuke Niwa.

Use WeakHashSet<> for m_viewportConstrainedObjects.

  • page/FrameView.cpp:

(WebCore::FrameView::didDestroyRenderTree):
(WebCore::FrameView::addViewportConstrainedObject):
(WebCore::FrameView::removeViewportConstrainedObject):
(WebCore::FrameView::scrollContentsFastPath):
(WebCore::FrameView::setViewportConstrainedObjectsNeedLayout):

  • page/FrameView.h:
  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::ScrollingCoordinator::hasVisibleSlowRepaintViewportConstrainedObjects const):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateCompositingLayers):

  • rendering/RenderLayerModelObject.cpp:

(WebCore::RenderLayerModelObject::willBeDestroyed):
(WebCore::RenderLayerModelObject::styleDidChange):

11:02 AM Changeset in webkit [257932] by commit-queue@webkit.org
  • 5 edits in trunk

REGRESSION: [ Mac ] fast/canvas/webgl/texImage2D-video-flipY-false.html is Timing out
https://bugs.webkit.org/show_bug.cgi?id=205734

Source/WebCore:

Fix two bugs in MediaPlayerPrivateAVFoundationObjC causing the
preferred AVPlayerItemVideoOutput code path to not be taken, in
the situation where GPU-to-GPU copies are not possible because the
video's format doesn't allow them.

Implement currentTime, fixing longstanding bug in the
AVAssetImageGenerator fallback where only the first frame of the
video would be displayed.

Covered by existing layout test.

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

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::currentTime const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintCurrentFrameInContext):
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput):

LayoutTests:

Reenable layout test on macOS.

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

  • platform/mac/TestExpectations:
10:55 AM Changeset in webkit [257931] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS iOS ] storage/indexeddb/modern/transactions-stop-on-navigation.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=208656

Unreviewed test gardening

  • platform/ios-wk2/TestExpectations:
10:51 AM Changeset in webkit [257930] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Add unit tests for ValidateCommiterAndReviewer build step
https://bugs.webkit.org/show_bug.cgi?id=208262

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Added unit-tests for ValidateCommiterAndReviewer.
10:42 AM Changeset in webkit [257929] by youenn@apple.com
  • 4 edits in trunk

In case an activating service worker is terminated, it should go to activated state
https://bugs.webkit.org/show_bug.cgi?id=208440
<rdar://problem/59742332>

Reviewed by Chris Dumez.

Source/WebCore:

Covered by updated test.

  • workers/service/server/SWServerWorker.cpp:

(WebCore::SWServerWorker::setState):
As per spec, if an activated service worker is terminated or its activate event is timing out,
we should move it to activate state.

LayoutTests:

  • http/wpt/service-workers/service-worker-spinning-activate.https.html:
10:38 AM Changeset in webkit [257928] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][Integration] Reset position style on line breaks.
https://bugs.webkit.org/show_bug.cgi?id=208646
<rdar://problem/60086589>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/inline/out-of-flow-positioned-line-break.html

We need to treat line breaks as statically positioned inline content.
In the long run we should do something along these lines:
https://github.com/w3c/csswg-drafts/issues/610

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::buildTree):

LayoutTests:

  • fast/inline/out-of-flow-positioned-line-break-expected.txt: Added.
  • fast/inline/out-of-flow-positioned-line-break.html: Added.
10:28 AM Changeset in webkit [257927] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

commit-queue should run WK2 tests instead of WK1 tests
https://bugs.webkit.org/show_bug.cgi?id=208544

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/factories.py:
10:27 AM Changeset in webkit [257926] by eric.carlson@apple.com
  • 3 edits in trunk/Source/WebCore

Some media tests crash when run in the GPU process
https://bugs.webkit.org/show_bug.cgi?id=208611
<rdar://problem/60060320>

Reviewed by Jer Noble.

The AVPlayerItemOutputPullDelegate is not called on the main queue, so it can't
use a WeakPtr that is created on the main queue. Rather than having the ObjC
delegate object call back to MediaPlayerPrivateAVFoundationObjC to signal a
semaphore it owns, have the delegate object own the semaphore and expose it
so MediaPlayerPrivateAVFoundationObjC can use it, removing the need for the
WeakPtr completely.

No new tests, this fixes a crash in existing tests.

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
Don't allocate m_videoOutputDelegate, it isn't needed immediately.
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenLayer): Drive-by
optimization: don't update the current image when the fullscreen layer is set to NULL.
(WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoOutput): Allocate m_videoOutputDelegate.
(WebCore::MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange):
Wait on the deletage's semphore.
(-[WebCoreAVFPullDelegate outputMediaDataWillChange:]):
(WebCore::MediaPlayerPrivateAVFoundationObjC::outputMediaDataWillChange): Deleted.
(-[WebCoreAVFPullDelegate initWithPlayer:]): Deleted.

10:16 AM Changeset in webkit [257925] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] ValidateCommiterAndReviewer should validate emails in case insensitive manner
https://bugs.webkit.org/show_bug.cgi?id=208645

Reviewed by Alexey Proskuryakov.

  • BuildSlaveSupport/ews-build/steps.py:

(ValidateCommiterAndReviewer.load_contributors):
(ValidateCommiterAndReviewer.start):

10:10 AM Changeset in webkit [257924] by Simon Fraser
  • 3 edits
    1 move in trunk/Source/WebCore

Change ScrollingTreeMac.cpp to a .mm file
https://bugs.webkit.org/show_bug.cgi?id=208652

Reviewed by Antti Koivisto.

Simple file rename.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/scrolling/mac/ScrollingTreeMac.mm: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeMac.cpp.
10:07 AM Changeset in webkit [257923] by clopez@igalia.com
  • 2 edits in trunk/Tools

style-checker: Add UAF to the list of security words to warn about.
https://bugs.webkit.org/show_bug.cgi?id=208643

Reviewed by Jonathan Bedard.

UAF is a common acronym used for use after free.

  • Scripts/webkitpy/style/checkers/changelog.py:

(ChangeLogChecker.check_for_unwanted_security_phrases):

10:02 AM Changeset in webkit [257922] by Jason_Lawrence
  • 142 edits in trunk/Source/WebCore

Unreviewed, rolling out r257905.

This commit caused crashes on Mac wk2 Debug.

Reverted changeset:

"Put all generated JSCells in WebCore into IsoSubspace"
https://bugs.webkit.org/show_bug.cgi?id=205107
https://trac.webkit.org/changeset/257905

9:41 AM Changeset in webkit [257921] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Assertion failed: shouldBeActive() in BackgroundProcessResponsivenessTimer::responsivenessCheckTimerFired()
https://bugs.webkit.org/show_bug.cgi?id=208596

Reviewed by Chris Dumez.

Update state of BackgroundProcessResponsivenessTimer when ServiceWorker is enabled or disabled in web process.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::disableServiceWorkers):
(WebKit::WebProcessProxy::enableServiceWorkers):

9:18 AM Changeset in webkit [257920] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Track "scrolling scope" on RenderLayers
https://bugs.webkit.org/show_bug.cgi?id=208620

Reviewed by Zalan Bujtas.

Keep track of a "scrolling scope" on RenderLayers. Layers that share a scrolling scope
get scrolled by some common async-scrollable containing-block ancestor. The scope is just
a unique identifier.

Each layer has two scopes; a "box" scope that applies to the background/borders, and
a "content" scope that applies to (potentially) scrollable content. For most layers,
these will be the same, and shared with the layer's containing block ancestor layer.

For async-scrollable overflow, "box" scope is shared with the cb ancestor, but "content" scope
will have a new value that applies to all the layers moved by that scroller.

Having this value makes it easy to ask the question "is this layer scrolled by some ancestor",
which is a tricky computation for things like a position:absolute layer inside a non-containing block
stacking context overflow:scroll. Also, position:fixed whose containing block is the root will share
the scrolling scope of the root.

No behavior change.

  • rendering/RenderLayer.cpp:

(WebCore::nextScrollingScope):
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::updateLayerPositions):
(WebCore::RenderLayer::updateLayerPosition):
(WebCore::outputPaintOrderTreeLegend):
(WebCore::outputPaintOrderTreeRecursive):

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

(WebCore::isScrolledByOverflowScrollLayer):

9:13 AM Changeset in webkit [257919] by youenn@apple.com
  • 10 edits in trunk/Source

Add logging support for capture sources in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=208637

Reviewed by Eric Carlson.

Source/WebCore:

Make sure RealtimeVideoSource propagates its logger to its underlying source and to its clones.
No change of behavior.

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeVideoSource.cpp:

(WebCore::RealtimeVideoSource::clone):
(WebCore::RealtimeVideoSource::setLogger):

  • platform/mediastream/RealtimeVideoSource.h:

Source/WebKit:

Add a logger getter to the ConnectionProxy.
Implement it for GPUProcess and UIProcess.
Set source logger to the connection proxy logger.

  • GPUProcess/GPUConnectionToWebProcess.cpp:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
  • UIProcess/WebProcessProxy.cpp:
  • UIProcess/WebProcessProxy.h:
8:13 AM Changeset in webkit [257918] by Wenson Hsieh
  • 6 edits in trunk/Source/WebCore

Optimize Path::encode on platforms that support CGPathGetNumberOfElements
https://bugs.webkit.org/show_bug.cgi?id=208266

Reviewed by Darin Adler and Simon Fraser.

Source/WebCore:

When encoding Path objects, we currently first encode the number of elements in the path by iterating over each
path element and incrementing a counter; then, we iterate over each element again, and encode information
(points, angles, etc.) for each path element.

However, on platforms that have the fix for <rdar://problem/59828724>, the first call to CGPathApply can be
skipped, since CoreGraphics can (in constant time, for the most part) simply tell us how many elements are in
the CGPath. See comments below for more details.

There should be no change in behavior.

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

Add an elementCount method on Path, which returns the count of elements in the path. On platforms where
CGPathGetNumberOfElements exists (and the fix for <rdar://problem/59828724> is also present), we return the
result of calling this SPI. Otherwise, fall back to mapping over each path element and incrementing a count.

(WebCore::Path::encode const):

Use the new elementCount method when encoding a WebCore::Path.

  • platform/graphics/cg/PathCG.cpp:

(WebCore::Path::elementCount const):

Source/WebCore/PAL:

Add an SPI declaration for CGPathGetNumberOfElements.

  • pal/spi/cg/CoreGraphicsSPI.h:
8:04 AM Changeset in webkit [257917] by Alan Bujtas
  • 4 edits in trunk

[LFC][Invalidation] Incoming image data should invalidate layout tree content
https://bugs.webkit.org/show_bug.cgi?id=208640
<rdar://problem/60083229>

Reviewed by Antti Koivisto.

Source/WebCore:

This is a forced invalidation (in the least intrusive way) to make sure LFC has up-to-date replaced information.

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::imageChanged):

LayoutTests:

  • platform/mac-wk2/TestExpectations:
8:00 AM Changeset in webkit [257916] by Diego Pino Garcia
  • 4 edits in trunk/LayoutTests

[GTK] Gardening, update TestExpectations
https://bugs.webkit.org/show_bug.cgi?id=208480

Unreviewed gardening.

  • platform/gtk/TestExpectations:
  • platform/gtk/fast/text/monospace-width-cache-expected.txt: Update after r257305.
  • platform/gtk/http/tests/navigation/javascriptlink-frames-expected.txt: Update after r257626.
7:51 AM Changeset in webkit [257915] by Antti Koivisto
  • 3 edits in trunk/LayoutTests

REGRESSION (r257839): two fast/forms/textarea are failing after commit r257839 (208576)
https://bugs.webkit.org/show_bug.cgi?id=208627
<rdar://problem/60042801>

Reviewed by Zalan Bujtas.

  • fast/forms/textarea-no-scroll-on-blur.html:
  • fast/forms/textarea-scrolled-type.html:

Update the tests to use rAF instead of zero duration timers.
There must be a rendering update between focus() and blur() for actual scrolling to happen and
zero duration timer doesn't guarantee that.

7:46 AM Changeset in webkit [257914] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

Remove CoreAudioCaptureSourceFactory::setCoreAudioActiveSource/unsetCoreAudioActiveSource
https://bugs.webkit.org/show_bug.cgi?id=208632

Reviewed by Eric Carlson.

We can remove this code since suspend/resume is now directly handled
by the AudioSharedUnit singleton instead of going through the source.
No change of behavior.

  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioCaptureSource::~CoreAudioCaptureSource):
(WebCore::CoreAudioCaptureSource::startProducingData):

  • platform/mediastream/mac/CoreAudioCaptureSource.h:
3:53 AM Changeset in webkit [257913] by youenn@apple.com
  • 28 edits
    1 add in trunk/Source

Export NowPlaying commands to GPUProcess when media playing in GPUProcess is enabled
https://bugs.webkit.org/show_bug.cgi?id=208568

Source/WebCore:

Reviewed by Eric Carlson.

Removed PlatformMediaSessionClient NowPlaying getters since only HTMLMediaElement is eligible.
Let MediaElementSession generates its own NowPlayingInfo when requested by the session manager.
Use platform strategies to abstract out how to execute NowPlaying orders.

Manually tested for NowPlaying functionality.
Also covered by existing tests for the refactoring bits.

  • Headers.cmake:
  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::sourceApplicationIdentifier const): Deleted.

  • Modules/webaudio/AudioContext.h:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLMediaElement.h:
  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::allowsPlaybackControlsForAutoplayingAudio const):
(WebCore::MediaElementSession::nowPlayingInfo const):
(WebCore::MediaElementSession::allowsNowPlayingControlsVisibility const): Deleted.

  • html/MediaElementSession.h:
  • platform/MediaStrategy.h:
  • platform/audio/AudioSession.h:
  • platform/audio/NowPlayingInfo.h: Added.

(WebCore::NowPlayingInfo::encode const):
(WebCore::NowPlayingInfo::decode):

  • platform/audio/PlatformMediaSession.cpp:

(WebCore::PlatformMediaSession::nowPlayingInfo const):
(WebCore::PlatformMediaSession::uniqueIdentifier const): Deleted.
(WebCore::PlatformMediaSession::title const): Deleted.
(WebCore::PlatformMediaSession::duration const): Deleted.
(WebCore::PlatformMediaSession::currentTime const): Deleted.
(WebCore::PlatformMediaSession::sourceApplicationIdentifier const): Deleted.
(WebCore::PlatformMediaSessionClient::mediaSessionUniqueIdentifier const): Deleted.
(WebCore::PlatformMediaSessionClient::mediaSessionTitle const): Deleted.
(WebCore::PlatformMediaSessionClient::mediaSessionDuration const): Deleted.
(WebCore::PlatformMediaSessionClient::mediaSessionCurrentTime const): Deleted.

  • platform/audio/PlatformMediaSession.h:

(WebCore::PlatformMediaSession::allowsNowPlayingControlsVisibility const): Deleted.

  • platform/audio/cocoa/MediaSessionManagerCocoa.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(MediaSessionManagerCocoa::clearNowPlayingInfo):
(MediaSessionManagerCocoa::setNowPlayingInfo):
(MediaSessionManagerCocoa::nowPlayingEligibleSession):
(MediaSessionManagerCocoa::updateNowPlayingInfo):

  • platform/audio/ios/MediaSessionManagerIOS.h:
  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::MediaSessionManageriOS::providePresentingApplicationPIDIfNecessary):
(WebCore::MediaSessionManageriOS::providePresentingApplicationPID):

Source/WebKit:

Reviewed by Eric Carlson.

Export NowPlaying orders to GPU process through IPC if GPUProcess is turned on.
Otherwise use the regular in process implementation.
Make sure to sync the hasAudio state so that it gets set properly in WebProcess.

Remove the use of a PlatformMediaSessionManager for capture since it is now using platform strategies in two places.
Instead use directly static methods of MediaSessionManageriOS to implement pid forwarding and AudioSession to set category and buffer size.
A follow-up refactoring should probably rearchitect AudioSession handling.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::clearNowPlayingInfo):
(WebKit::GPUConnectionToWebProcess::setNowPlayingInfo):
(WebKit::GPUConnectionToWebProcess::sessionManager): Deleted.

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/GPUConnectionToWebProcess.messages.in:
  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::updateCachedState):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::SourceProxy::SourceProxy):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::~SourceProxy):
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
(WebKit::UserMediaCaptureManagerProxy::clone):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
  • UIProcess/WebProcessProxy.cpp:
  • WebProcess/GPU/media/WebMediaStrategy.cpp:

(WebKit::WebMediaStrategy::clearNowPlayingInfo):
(WebKit::WebMediaStrategy::setNowPlayingInfo):

  • WebProcess/GPU/media/WebMediaStrategy.h:

Source/WebKitLegacy/mac:

Reviewed by Eric Carlson.

Use in-process now playing implementation.

  • WebCoreSupport/WebPlatformStrategies.mm:
1:51 AM Changeset in webkit [257912] by Carlos Garcia Campos
  • 23 edits in trunk/LayoutTests

Unreviewed GTK gardening. Rebaseline media controls tests after r257775

  • platform/gtk/fast/layers/video-layer-expected.png:
  • platform/gtk/fast/layers/video-layer-expected.txt:
  • platform/gtk/media/audio-controls-rendering-expected.png:
  • platform/gtk/media/audio-controls-rendering-expected.txt:
  • platform/gtk/media/controls-after-reload-expected.png:
  • platform/gtk/media/controls-after-reload-expected.txt:
  • platform/gtk/media/controls-strict-expected.png:
  • platform/gtk/media/controls-strict-expected.txt:
  • platform/gtk/media/media-controls-clone-expected.png:
  • platform/gtk/media/media-controls-clone-expected.txt:
  • platform/gtk/media/video-controls-rendering-expected.png:
  • platform/gtk/media/video-controls-rendering-expected.txt:
  • platform/gtk/media/video-display-toggle-expected.png:
  • platform/gtk/media/video-display-toggle-expected.txt:
  • platform/gtk/media/video-empty-source-expected.png:
  • platform/gtk/media/video-empty-source-expected.txt:
  • platform/gtk/media/video-no-audio-expected.png:
  • platform/gtk/media/video-no-audio-expected.txt:
  • platform/gtk/media/video-playing-and-pause-expected.png:
  • platform/gtk/media/video-playing-and-pause-expected.txt:
  • platform/gtk/media/video-zoom-controls-expected.png:
  • platform/gtk/media/video-zoom-controls-expected.txt:
1:19 AM Changeset in webkit [257911] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore/platform/gtk/po

Merge r257910 - [GTK][l10n] Updated Polish translation of WebKitGTK for 2.28
https://bugs.webkit.org/show_bug.cgi?id=208410

Patch by Piotr Drąg <piotrdrag@gmail.com> on 2020-03-05
Rubber-stamped by Carlos Garcia Campos.

  • pl.po:
1:15 AM Changeset in webkit [257910] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

[GTK][l10n] Updated Polish translation of WebKitGTK for 2.28
https://bugs.webkit.org/show_bug.cgi?id=208410

Patch by Piotr Drąg <piotrdrag@gmail.com> on 2020-03-05
Rubber-stamped by Carlos Garcia Campos.

  • pl.po:
1:11 AM Changeset in webkit [257909] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit

REGRESSION(r257667): [UNIX] Tests http/tests/incremental/split-hex-entities.pl and http/tests/misc/large-js-program.php are crashing
https://bugs.webkit.org/show_bug.cgi?id=208571

Reviewed by Alex Christensen.

We get a release assert in Connection::processMessage() when trying to get a file descriptor from
m_fileDescriptors array that is empty. The problem is that since r257667, a shared buffer is always used by the
network process to send data to the web process (NetworkResourceLoader::sendBuffer) and shared buffer
encoding/decoding was changed to always use shared memory and send the file descriptor over the IPC. When
sending large data in small chunks like these tests are doing, we easily end up with many messages queued in the
web process receiver (Connection::enqueueIncomingMessage), all of them having one file descriptor open. When the
maximum number of open file descriptors per process is reached, recvmsg doesn't fail but it sets the flag
MSG_CTRUNC in msg_flags and the file descriptor is not actually included as part of the control message. The
message info still claims to include a file descriptor, but it hasn't been created and added to the
m_fileDescriptors array. We could check msg_flags, but only to assert earlier, not to fix the problem, since we
are unable to get the file descriptor sent. So, at least in linux I think it's better to send the data over the
IPC instead of using shared memory. We are already using shared memory for any IPC message bigger than 4096.

  • Platform/IPC/unix/ConnectionUnix.cpp:

(IPC::readBytesFromSocket): Consider also a read failure when control data is discarded.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::encodeSharedBuffer): Do not use shared memory to encode a SharedBuffer in Unix.
(IPC::decodeSharedBuffer): Do not use shared memory to decode a SharedBuffer in Unix.

12:54 AM Changeset in webkit [257908] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSCOnly] 32-bits warning on memset of JSValue
https://bugs.webkit.org/show_bug.cgi?id=204411

Patch by Paulo Matos <Paulo Matos> on 2020-03-05
Reviewed by Mark Lam.

Fixes warning on 32bit builds. This is required because GCC knows
it is not safe to use memset on non-POD types and warns against its use.

  • heap/GCMemoryOperations.h:

(JSC::gcSafeZeroMemory):

Mar 4, 2020:

11:57 PM Changeset in webkit [257907] by mark.lam@apple.com
  • 9 edits
    1 add in trunk

Handle an out of memory error while constructing the BytecodeGenerator.
https://bugs.webkit.org/show_bug.cgi?id=208622
<rdar://problem/59341136>

Reviewed by Saam Barati.

JSTests:

  • stress/out-of-memory-while-constructing-BytecodeGenerator.js: Added.

Source/JavaScriptCore:

Added the ability to handle out of memory errors encountered during the
construction of the BytecodeGenerator. Currently, we only use this for the
case where we fail to instantiate a ScopedArgumentsTable.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::BytecodeGenerator):

  • bytecompiler/BytecodeGeneratorBase.h:
  • runtime/ScopedArgumentsTable.cpp:

(JSC::ScopedArgumentsTable::tryCreate):

  • runtime/ScopedArgumentsTable.h:
  • runtime/SymbolTable.h:

Source/WTF:

  • wtf/CagedUniquePtr.h:

(WTF::CagedUniquePtr::tryCreate):

11:50 PM Changeset in webkit [257906] by basuke.suzuki@sony.com
  • 1 edit
    2 adds in trunk/Tools

[MSVC] Add .natvis support of WebKit types
https://bugs.webkit.org/show_bug.cgi?id=193119

Reviewed by Don Olmstead.

To help the WebKit developer while debugging, this file defines how
WebKit types are displayed in debugger of Visual Studio.
Very limited set of WebKit types, but it changes the world.

  • VisualStudio/WebKit.natvis: Added.
11:18 PM Changeset in webkit [257905] by ysuzuki@apple.com
  • 142 edits in trunk/Source/WebCore

Put all generated JSCells in WebCore into IsoSubspace
https://bugs.webkit.org/show_bug.cgi?id=205107

Reviewed by Saam Barati.

This patch automatically generates IsoSubspace per WebCore DOM object type.
In preprocess-idls.pl, we collect all the DOM object types and generate DOMIsoSubspaces class,
which contains all the necessary IsoSubspaces. And it is held by WebCoreJSClientData.

CodeGeneratorJS.pm starts putting subspaceFor and subspaceForImpl for each JS DOM wrapper classes.
And we dynamically create IsoSubspace and set it to WebCoreJSClientData's DOMIsoSubspaces. At the same
time, we register IsoSubspace to m_outputConstraintSpaces if the class has output constraits callback.

  • CMakeLists.txt:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • WebCoreMacros.cmake:
  • bindings/js/JSDOMWrapper.cpp:

(WebCore::outputConstraintSubspaceFor): Deleted.

  • bindings/js/JSDOMWrapper.h:
  • bindings/js/WebCoreJSClientData.cpp:

(WebCore::JSVMClientData::JSVMClientData):

  • bindings/js/WebCoreJSClientData.h:

(WebCore::JSVMClientData::forEachOutputConstraintSpace):
(WebCore::JSVMClientData::subspaces):
(WebCore::JSVMClientData::outputConstraintSpace): Deleted.
(WebCore::JSVMClientData::subspaceForJSDOMWindow): Deleted.
(WebCore::JSVMClientData::subspaceForJSDedicatedWorkerGlobalScope): Deleted.
(WebCore::JSVMClientData::subspaceForJSRemoteDOMWindow): Deleted.
(WebCore::JSVMClientData::subspaceForJSWorkerGlobalScope): Deleted.
(WebCore::JSVMClientData::subspaceForJSServiceWorkerGlobalScope): Deleted.
(WebCore::JSVMClientData::subspaceForJSPaintWorkletGlobalScope): Deleted.
(WebCore::JSVMClientData::subspaceForJSWorkletGlobalScope): Deleted.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GenerateImplementation):

  • bindings/scripts/generate-bindings-all.pl:
  • bindings/scripts/preprocess-idls.pl:
  • bindings/scripts/test/JS/JSInterfaceName.cpp:

(WebCore::JSInterfaceName::subspaceForImpl):

  • bindings/scripts/test/JS/JSInterfaceName.h:

(WebCore::JSInterfaceName::subspaceFor):

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

(WebCore::JSMapLike::subspaceForImpl):

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

(WebCore::JSMapLike::subspaceFor):

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

(WebCore::JSReadOnlyMapLike::subspaceForImpl):

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

(WebCore::JSReadOnlyMapLike::subspaceFor):

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

(WebCore::JSReadOnlySetLike::subspaceForImpl):

  • bindings/scripts/test/JS/JSReadOnlySetLike.h:

(WebCore::JSReadOnlySetLike::subspaceFor):

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

(WebCore::JSSetLike::subspaceForImpl):

  • bindings/scripts/test/JS/JSSetLike.h:

(WebCore::JSSetLike::subspaceFor):

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

(WebCore::JSTestActiveDOMObject::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestActiveDOMObject.h:

(WebCore::JSTestActiveDOMObject::subspaceFor):

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

(WebCore::JSTestCEReactions::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestCEReactions.h:

(WebCore::JSTestCEReactions::subspaceFor):

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

(WebCore::JSTestCEReactionsStringifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.h:

(WebCore::JSTestCEReactionsStringifier::subspaceFor):

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

(WebCore::JSTestCallTracer::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestCallTracer.h:

(WebCore::JSTestCallTracer::subspaceFor):

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

(WebCore::JSTestClassWithJSBuiltinConstructor::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:

(WebCore::JSTestClassWithJSBuiltinConstructor::subspaceFor):

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

(WebCore::JSTestDOMJIT::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestDOMJIT.h:

(WebCore::JSTestDOMJIT::subspaceFor):

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

(WebCore::JSTestEnabledBySetting::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestEnabledBySetting.h:

(WebCore::JSTestEnabledBySetting::subspaceFor):

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

(WebCore::JSTestEnabledForContext::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestEnabledForContext.h:

(WebCore::JSTestEnabledForContext::subspaceFor):

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

(WebCore::JSTestEventConstructor::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestEventConstructor.h:

(WebCore::JSTestEventConstructor::subspaceFor):

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

(WebCore::JSTestEventTarget::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestEventTarget.h:

(WebCore::JSTestEventTarget::subspaceFor):

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

(WebCore::JSTestException::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestException.h:

(WebCore::JSTestException::subspaceFor):

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

(WebCore::JSTestGenerateIsReachable::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestGenerateIsReachable.h:

(WebCore::JSTestGenerateIsReachable::subspaceFor):

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

(WebCore::JSTestGlobalObject::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestGlobalObject.h:

(WebCore::JSTestGlobalObject::subspaceFor):

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

(WebCore::JSTestIndexedSetterNoIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h:

(WebCore::JSTestIndexedSetterNoIdentifier::subspaceFor):

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

(WebCore::JSTestIndexedSetterThrowingException::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h:

(WebCore::JSTestIndexedSetterThrowingException::subspaceFor):

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

(WebCore::JSTestIndexedSetterWithIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h:

(WebCore::JSTestIndexedSetterWithIdentifier::subspaceFor):

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

(WebCore::JSTestInterface::subspaceForImpl):

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

(WebCore::JSTestInterfaceLeadingUnderscore::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h:

(WebCore::JSTestInterfaceLeadingUnderscore::subspaceFor):

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

(WebCore::JSTestIterable::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestIterable.h:

(WebCore::JSTestIterable::subspaceFor):

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

(WebCore::JSTestJSBuiltinConstructor::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h:

(WebCore::JSTestJSBuiltinConstructor::subspaceFor):

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

(WebCore::JSTestMediaQueryListListener::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestMediaQueryListListener.h:

(WebCore::JSTestMediaQueryListListener::subspaceFor):

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

(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h:

(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceFor):

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

(WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h:

(WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceFor):

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

(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h:

(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceFor):

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

(WebCore::JSTestNamedConstructor::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedConstructor.h:

(WebCore::JSTestNamedConstructor::subspaceFor):

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

(WebCore::JSTestNamedDeleterNoIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h:

(WebCore::JSTestNamedDeleterNoIdentifier::subspaceFor):

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

(WebCore::JSTestNamedDeleterThrowingException::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h:

(WebCore::JSTestNamedDeleterThrowingException::subspaceFor):

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

(WebCore::JSTestNamedDeleterWithIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h:

(WebCore::JSTestNamedDeleterWithIdentifier::subspaceFor):

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

(WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h:

(WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceFor):

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

(WebCore::JSTestNamedGetterCallWith::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedGetterCallWith.h:

(WebCore::JSTestNamedGetterCallWith::subspaceFor):

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

(WebCore::JSTestNamedGetterNoIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h:

(WebCore::JSTestNamedGetterNoIdentifier::subspaceFor):

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

(WebCore::JSTestNamedGetterWithIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h:

(WebCore::JSTestNamedGetterWithIdentifier::subspaceFor):

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

(WebCore::JSTestNamedSetterNoIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h:

(WebCore::JSTestNamedSetterNoIdentifier::subspaceFor):

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

(WebCore::JSTestNamedSetterThrowingException::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h:

(WebCore::JSTestNamedSetterThrowingException::subspaceFor):

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

(WebCore::JSTestNamedSetterWithIdentifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h:

(WebCore::JSTestNamedSetterWithIdentifier::subspaceFor):

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

(WebCore::JSTestNamedSetterWithIndexedGetter::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h:

(WebCore::JSTestNamedSetterWithIndexedGetter::subspaceFor):

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

(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h:

(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceFor):

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

(WebCore::JSTestNamedSetterWithOverrideBuiltins::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.h:

(WebCore::JSTestNamedSetterWithOverrideBuiltins::subspaceFor):

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

(WebCore::JSTestNamedSetterWithUnforgableProperties::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.h:

(WebCore::JSTestNamedSetterWithUnforgableProperties::subspaceFor):

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

(WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.h:

(WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::subspaceFor):

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

(WebCore::JSTestNode::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestNode.h:
  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::JSTestObj::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestObj.h:

(WebCore::JSTestObj::subspaceFor):

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

(WebCore::JSTestOverloadedConstructors::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestOverloadedConstructors.h:

(WebCore::JSTestOverloadedConstructors::subspaceFor):

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

(WebCore::JSTestOverloadedConstructorsWithSequence::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:

(WebCore::JSTestOverloadedConstructorsWithSequence::subspaceFor):

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

(WebCore::JSTestOverrideBuiltins::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestOverrideBuiltins.h:

(WebCore::JSTestOverrideBuiltins::subspaceFor):

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

(WebCore::JSTestPluginInterface::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestPluginInterface.h:

(WebCore::JSTestPluginInterface::subspaceFor):

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

(WebCore::JSTestPromiseRejectionEvent::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.h:

(WebCore::JSTestPromiseRejectionEvent::subspaceFor):

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

(WebCore::JSTestSerialization::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestSerialization.h:

(WebCore::JSTestSerialization::subspaceFor):

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

(WebCore::JSTestSerializationIndirectInheritance::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.h:

(WebCore::JSTestSerializationIndirectInheritance::subspaceFor):

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

(WebCore::JSTestSerializationInherit::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestSerializationInherit.h:

(WebCore::JSTestSerializationInherit::subspaceFor):

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

(WebCore::JSTestSerializationInheritFinal::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestSerializationInheritFinal.h:

(WebCore::JSTestSerializationInheritFinal::subspaceFor):

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

(WebCore::JSTestSerializedScriptValueInterface::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:

(WebCore::JSTestSerializedScriptValueInterface::subspaceFor):

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

(WebCore::JSTestStringifier::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestStringifier.h:

(WebCore::JSTestStringifier::subspaceFor):

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

(WebCore::JSTestStringifierAnonymousOperation::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h:

(WebCore::JSTestStringifierAnonymousOperation::subspaceFor):

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

(WebCore::JSTestStringifierNamedOperation::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestStringifierNamedOperation.h:

(WebCore::JSTestStringifierNamedOperation::subspaceFor):

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

(WebCore::JSTestStringifierOperationImplementedAs::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h:

(WebCore::JSTestStringifierOperationImplementedAs::subspaceFor):

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

(WebCore::JSTestStringifierOperationNamedToString::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h:

(WebCore::JSTestStringifierOperationNamedToString::subspaceFor):

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

(WebCore::JSTestStringifierReadOnlyAttribute::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h:

(WebCore::JSTestStringifierReadOnlyAttribute::subspaceFor):

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

(WebCore::JSTestStringifierReadWriteAttribute::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h:

(WebCore::JSTestStringifierReadWriteAttribute::subspaceFor):

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

(WebCore::JSTestTypedefs::subspaceForImpl):

  • bindings/scripts/test/JS/JSTestTypedefs.h:

(WebCore::JSTestTypedefs::subspaceFor):

11:06 PM Changeset in webkit [257904] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

WebsiteDataStore methods often create process pools and launch network processes unnecessarily
https://bugs.webkit.org/show_bug.cgi?id=208619

Reviewed by Alex Christensen.

These methods were potentially creating a temporary WebProcessPool object and launching a network
process only to go change something in memory in the network process. Since the newly created
WebProcessPool is temporary, it gets destroyed as soon as we get out of the for loop and the
network go away too. Therefore, the information in memory of the new network process would not
survive. Those methods should never be created a process pool and this patch fixes this.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::setMaxStatisticsEntries):
(WebKit::WebsiteDataStore::setPruneEntriesDownTo):
(WebKit::WebsiteDataStore::setGrandfatheringTime):
(WebKit::WebsiteDataStore::setMinimumTimeBetweenDataRecordsRemoval):
(WebKit::WebsiteDataStore::setPrevalentResource):
(WebKit::WebsiteDataStore::setVeryPrevalentResource):
(WebKit::WebsiteDataStore::setShouldClassifyResourcesBeforeDataRecordsRemoval):
(WebKit::WebsiteDataStore::setNotifyPagesWhenDataRecordsWereScanned):
(WebKit::WebsiteDataStore::setIsRunningResourceLoadStatisticsTest):
(WebKit::WebsiteDataStore::setNotifyPagesWhenTelemetryWasCaptured):
(WebKit::WebsiteDataStore::getAllStorageAccessEntries):
(WebKit::WebsiteDataStore::setTimeToLiveUserInteraction):
(WebKit::WebsiteDataStore::setCacheMaxAgeCapForPrevalentResources):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsDebugMode):
(WebKit::WebsiteDataStore::clearResourceLoadStatisticsInWebProcesses):

11:00 PM Changeset in webkit [257903] by Andres Gonzalez
  • 4 edits in trunk/Source/WebCore

Fix for test accessibility/mac/aria-liveregions-addedelement.html in IsolatedTree mode.
https://bugs.webkit.org/show_bug.cgi?id=208624

Reviewed by Chris Fleizach.

Test: accessibility/mac/aria-liveregions-addedelement.html

LayoutTests can request the focused element before they call any method
in the WebAccessibilityObjectWrapper through AccessibilityController::focusedElement,
and thus the focused element may be amongst the pending appends of the
IsolatedTree. This change sets the focused element in the isolated
treee during generation, so it can be returned to the AccessibilityController
even if no WebAccessibilityObjectWrapper calls have been made.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::generateIsolatedTree):

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::focusedUIElement):
(WebCore::AXIsolatedTree::setFocusedNode):

  • accessibility/isolatedtree/AXIsolatedTree.h:
10:38 PM Changeset in webkit [257902] by Simon Fraser
  • 5 edits in trunk/Source

Make m_slowRepaintObjects a WeakHashSet
https://bugs.webkit.org/show_bug.cgi?id=208623

Reviewed by Ryosuke Niwa.

Source/WebCore:

Use WeakHashSet<> for m_slowRepaintObjects, rather than a HashSet of raw pointers.

  • page/FrameView.cpp:

(WebCore::FrameView::didDestroyRenderTree):
(WebCore::FrameView::addSlowRepaintObject):
(WebCore::FrameView::removeSlowRepaintObject):
(WebCore::FrameView::repaintSlowRepaintObjects):

  • page/FrameView.h:

Source/WebKit:

Fix namespace errors triggered by FrameView include changes.

  • UIProcess/API/APIPageConfiguration.cpp:

(API::PageConfiguration::visitedLinkStore):
(API::PageConfiguration::setVisitedLinkStore):

9:50 PM Changeset in webkit [257901] by sihui_liu@apple.com
  • 3 edits in trunk/Source/WebCore

Remove unused variable m_allUniqueIDBDatabases in IDBServer
https://bugs.webkit.org/show_bug.cgi?id=208613

Reviewed by Chris Dumez.

  • Modules/indexeddb/server/IDBServer.h:

(WebCore::IDBServer::IDBServer::addDatabase): Deleted.
(WebCore::IDBServer::IDBServer::removeDatabase): Deleted.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::UniqueIDBDatabase):
(WebCore::IDBServer::UniqueIDBDatabase::~UniqueIDBDatabase):

9:26 PM Changeset in webkit [257900] by beidson@apple.com
  • 5 edits in trunk/Source

Lay initial groundwork for new PDF loading model
https://bugs.webkit.org/show_bug.cgi?id=208599

Reviewed by Alex Christensen.

Source/WebKit:

First piece of adopting some new platform PDF APIs.
Disabled by default even on platforms that support it.
No behavior change for shipping configs.

  • WebProcess/Plugins/PDF/PDFPlugin.h:
  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::PDFPlugin):
(WebKit::dataProviderGetBytesAtPositionCallback):
(WebKit::dataProviderGetByteRangesCallback):
(WebKit::dataProviderReleaseInfoCallback):
(WebKit::PDFPlugin::threadEntry):
(WebKit::PDFPlugin::unconditionalCompleteRangeRequest):
(WebKit::PDFPlugin::getResourceBytesAtPosition):
(WebKit::PDFPlugin::adoptBackgroundThreadDocument):
(WebKit::PDFPlugin::pdfDocumentDidLoad):
(WebKit::PDFPlugin::installPDFDocument):
(WebKit::PDFPlugin::manualStreamDidReceiveData):
(WebKit::PDFPlugin::attemptToUnlockPDF):
(WebKit::PDFPlugin::calculateSizes):
(WebKit::PDFPlugin::handleMouseEvent):
(WebKit::PDFPlugin::saveToPDF):
(WebKit::PDFPlugin::openWithNativeApplication):
(WebKit::PDFPlugin::countFindMatches):
(WebKit::PDFPlugin::nextMatchForString):

Source/WTF:

  • wtf/PlatformHave.h:
7:46 PM Changeset in webkit [257899] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[VNE layout] Move visually non-empty content reporting to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=208606
<rdar://problem/60056951>

Reviewed by Simon Fraser.

Move the VNE reporting logic from the c'tors to the RenderTreeBuilder.

  • rendering/RenderEmbeddedObject.cpp:

(WebCore::RenderEmbeddedObject::RenderEmbeddedObject):

  • rendering/RenderHTMLCanvas.cpp:

(WebCore::RenderHTMLCanvas::RenderHTMLCanvas):

  • rendering/RenderText.cpp:

(WebCore::RenderText::RenderText):

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::attach):
(WebCore::RenderTreeBuilder::attachInternal):
(WebCore::RenderTreeBuilder::attachIgnoringContinuation):
(WebCore::RenderTreeBuilder::reportVisuallyNonEmptyContent):

  • rendering/updating/RenderTreeBuilder.h:
  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::createRenderer):
(WebCore::RenderTreeUpdater::createTextRenderer):

7:33 PM Changeset in webkit [257898] by Wenson Hsieh
  • 6 edits in trunk

Add system trace points around display list replay
https://bugs.webkit.org/show_bug.cgi?id=208616

Reviewed by Simon Fraser.

Source/WebCore:

Surround DisplayList::Replayer::replay with trace points.

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::Replayer::replay):

Source/WTF:

Add DisplayListReplayStart and DisplayListReplayEnd.

  • wtf/SystemTracing.h:

Tools:

Add a new "Display list replay" trace point.

  • Tracing/SystemTracePoints.plist:
7:33 PM Changeset in webkit [257897] by commit-queue@webkit.org
  • 3 edits
    4 adds in trunk

Crash in SVGElement::removeEventListener with symbol element
https://bugs.webkit.org/show_bug.cgi?id=207920

Patch by Doug Kelly <Doug Kelly> on 2020-03-04
Reviewed by Ryosuke Niwa.

Source/WebCore:

Resolves a crash in SVGElement::removeEventListener by only attaching the events to the window if the SVG element is both the outermost
SVG element, in addition to ensuring the SVG element is attached to the tree. The symbol element's behavior when referenced by a use
tag actually creates an svg tag instead, so the SVGSVGElement's special behavior for copying attributes is vital.

Note that Chrome and Firefox have a similar behavior for detached SVG elements as to what this change creates: in both other browsers,
onerror is not fired for a detached svg element, and in Firefox, onresize is not fired for a detached svg element (it is however fired
in Chrome).

Tests: fast/events/detached-svg-parent-window-events.html

fast/events/onerror-svg-symbol.html

  • svg/SVGSVGElement.cpp:

(WebCore::SVGSVGElement::parseAttribute):

LayoutTests:

  • fast/events/detached-svg-parent-window-events-expected.txt: Added.
  • fast/events/detached-svg-parent-window-events.html: Added.
  • fast/events/onerror-svg-symbol-expected.txt: Added.
  • fast/events/onerror-svg-symbol.html: Added.
7:28 PM Changeset in webkit [257896] by Andres Gonzalez
  • 3 edits in trunk/Source/WebCore

Fix for crash in AXIsolatedObject::fillChildrenVectorForProperty.
https://bugs.webkit.org/show_bug.cgi?id=208618

Reviewed by Chris Fleizach.

Reserve capacity of WTF::Vector before using it since constructor
doesn't do it.

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::fillChildrenVectorForProperty const):

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::objectsForIDs const):

7:14 PM Changeset in webkit [257895] by zhifei_fang@apple.com
  • 2 edits in trunk/Websites/perf.webkit.org

Test-freshness page table heaer misplaced
Some platform name is too long
https://bugs.webkit.org/show_bug.cgi?id=208617

Reviewed by Ryosuke Niwa.

  • public/v3/pages/test-freshness-page.js:

(TestFreshnessPage.cssTemplate):

6:35 PM Changeset in webkit [257894] by Lauro Moura
  • 2 edits in trunk/WebDriverTests

[WebDriver] Update screenshot/user_prompt expectations.

They were marked as FAIL in r239824 due to upstream w3c tests not handling
dialogs correctly and this handling not being in the spec.

The correct handling was added to wpt in
https://github.com/web-platform-tests/wpt/pull/17563, imported to webkit
in r252358, and have been passing since in the GTK test bot.

Also were added to the spec in https://github.com/w3c/webdriver/commit/32165846

Unreviewed test gardening.

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

Construct fewer unnecessary temporary WebProcessPool objects in WebsiteDataStore implementation
https://bugs.webkit.org/show_bug.cgi?id=208610

Reviewed by Alex Christensen.

A lot of methods in WebsiteDataStore were calling ensureProcessPools() and then it a loop do something
if the pool already has a network process. When you construct a new process pool, the pool has initially
no network process. As a result, this code should be using processPools() instead of ensureProcessPools()
to avoid unnecessarily constructing a temporary WebProcessPool object.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::fetchDataAndApply):
(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::dumpResourceLoadStatistics):
(WebKit::WebsiteDataStore::isPrevalentResource):
(WebKit::WebsiteDataStore::isGrandfathered):
(WebKit::WebsiteDataStore::setPrevalentResourceForDebugMode):
(WebKit::WebsiteDataStore::isVeryPrevalentResource):
(WebKit::WebsiteDataStore::setVeryPrevalentResource):
(WebKit::WebsiteDataStore::setSubframeUnderTopFrameDomain):
(WebKit::WebsiteDataStore::isRegisteredAsSubFrameUnder):
(WebKit::WebsiteDataStore::setSubresourceUnderTopFrameDomain):
(WebKit::WebsiteDataStore::isRegisteredAsSubresourceUnder):
(WebKit::WebsiteDataStore::setSubresourceUniqueRedirectTo):
(WebKit::WebsiteDataStore::setSubresourceUniqueRedirectFrom):
(WebKit::WebsiteDataStore::setTopFrameUniqueRedirectTo):
(WebKit::WebsiteDataStore::setTopFrameUniqueRedirectFrom):
(WebKit::WebsiteDataStore::isRegisteredAsRedirectingTo):
(WebKit::WebsiteDataStore::clearPrevalentResource):
(WebKit::WebsiteDataStore::resetParametersToDefaultValues):
(WebKit::WebsiteDataStore::submitTelemetry):
(WebKit::WebsiteDataStore::scheduleClearInMemoryAndPersistent):
(WebKit::WebsiteDataStore::getResourceLoadStatisticsDataSummary):
(WebKit::WebsiteDataStore::scheduleCookieBlockingUpdate):
(WebKit::WebsiteDataStore::scheduleStatisticsAndDataRecordsProcessing):
(WebKit::WebsiteDataStore::setLastSeen):
(WebKit::WebsiteDataStore::mergeStatisticForTesting):
(WebKit::WebsiteDataStore::logUserInteraction):
(WebKit::WebsiteDataStore::hasHadUserInteraction):
(WebKit::WebsiteDataStore::isRelationshipOnlyInDatabaseOnce):
(WebKit::WebsiteDataStore::clearUserInteraction):
(WebKit::WebsiteDataStore::setGrandfathered):
(WebKit::WebsiteDataStore::setUseITPDatabase):
(WebKit::WebsiteDataStore::setCrossSiteLoadWithLinkDecorationForTesting):
(WebKit::WebsiteDataStore::resetCrossSiteLoadsWithLinkDecorationForTesting):
(WebKit::WebsiteDataStore::deleteCookiesForTesting):
(WebKit::WebsiteDataStore::hasLocalStorageForTesting const):
(WebKit::WebsiteDataStore::hasIsolatedSessionForTesting const):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldDowngradeReferrerForTesting):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldBlockThirdPartyCookiesForTesting):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsFirstPartyWebsiteDataRemovalModeForTesting):
(WebKit::WebsiteDataStore::resetCacheMaxAgeCapForPrevalentResources):
(WebKit::WebsiteDataStore::isResourceLoadStatisticsEphemeral const):
(WebKit::WebsiteDataStore::getLocalStorageDetails):
(WebKit::WebsiteDataStore::resetQuota):
(WebKit::WebsiteDataStore::hasAppBoundSession const):
(WebKit::WebsiteDataStore::setInAppBrowserPrivacyEnabled):

5:13 PM Changeset in webkit [257892] by achristensen@apple.com
  • 7 edits
    1 add in trunk

Call globalObjectIsAvailableForFrame before evaluating JavaScript in newly created worlds
https://bugs.webkit.org/show_bug.cgi?id=208615
<rdar://problem/59406743>

Reviewed by Alex Christensen.

Source/WebKit:

globalObjectIsAvailableForFrame is often used for initialization code for a content world.
If we evaluate JavaScript in a content world as the first thing we do in that world,
globalObjectIsAvailableForFrame hadn't been called, so things were not initialized.
So call it when evaluating JavaScript if we create the world to evaluate in.

Covered by new API tests.

  • WebProcess/UserContent/WebUserContentController.cpp:

(WebKit::WebUserContentController::addContentWorld):

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

(WebKit::WebPage::runJavaScriptInFrameInScriptWorld):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/ContentWorldPlugIn.mm: Added.

(-[ContentWorldPlugIn webProcessPlugIn:didCreateBrowserContextController:]):
(-[ContentWorldPlugIn webProcessPlugInBrowserContextController:globalObjectIsAvailableForFrame:inScriptWorld:]):

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:

(TEST):
Also make a test written in bug 206310 actually run code.

5:02 PM Changeset in webkit [257891] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed, a build fix after r257877

  • UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:

(WebKit::LocalConnection::verifyUser const):
Restricts LAOptionPasscodeTitle to iOS for now.

3:31 PM Changeset in webkit [257890] by Kocsen Chung
  • 1 copy in tags/Safari-609.1.20.4.4

Tag Safari-609.1.20.4.4.

3:30 PM Changeset in webkit [257889] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[build.webkit.org] Remove leaks queue
https://bugs.webkit.org/show_bug.cgi?id=208580

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
  • BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:
3:28 PM Changeset in webkit [257888] by Chris Dumez
  • 15 edits in trunk/Source

Adopt new and improved CFNetwork SPI for cookie change notifications
https://bugs.webkit.org/show_bug.cgi?id=208594
<rdar://problem/60053313>

Reviewed by Alex Christensen.

Source/WebCore:

Adopt new and improved CFNetwork SPI for cookie change notifications. Notifications are now per domain
and the domain matches one of the domains we listen for cookie changes on.

This also fixes a bug where httpOnly cookies would be sent to the WebContent processes in cookie change
notifications, even though the WebProcesses are not interested in those.

  • platform/network/NetworkStorageSession.h:
  • platform/network/cocoa/NetworkStorageSessionCocoa.mm:

(WebCore::NetworkStorageSession::registerCookieChangeListenersIfNecessary):

Source/WebCore/PAL:

Add new CFNetwork SPI.

  • pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

Adopt new and improved CFNetwork SPI for cookie change notifications. Notifications are now per domain
and the domain matches one of the domains we listen for cookie changes on.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::cookiesDeleted):
(WebKit::NetworkConnectionToWebProcess::allCookiesDeleted):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::cookiesDeleted):
(WebKit::NetworkProcessConnection::allCookiesDeleted):

  • WebProcess/Network/NetworkProcessConnection.h:
  • WebProcess/Network/NetworkProcessConnection.messages.in:
  • WebProcess/WebPage/WebCookieCache.cpp:

(WebKit::WebCookieCache::cookiesDeleted):
(WebKit::WebCookieCache::allCookiesDeleted):

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

(WebKit::WebCookieJar::cookiesDeleted):
(WebKit::WebCookieJar::allCookiesDeleted):

  • WebProcess/WebPage/WebCookieJar.h:
3:28 PM Changeset in webkit [257887] by Kocsen Chung
  • 3 edits in branches/safari-610.1.6-branch/Source/WebKit

Cherry-pick r257879. rdar://problem/60057110

Partially revert r256756, since it introduced bugs related to Accessibility.
<rdar://problem/60005574>

Unreviewed partial revert of r256756.

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

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

3:27 PM Changeset in webkit [257886] by Kocsen Chung
  • 10 edits in branches/safari-610.1.6-branch/Source

Cherry-pick r257875. rdar://problem/60057110

[Cocoa] Add enable flag to disable direct mode for preferences
https://bugs.webkit.org/show_bug.cgi?id=208588

Reviewed by Brent Fulgham.

Source/WebKit:

Add an enable flag for this feature so it can be toggled, and turn it off.

No new tests, since this patch is reverting to previous behavior covered by existing tests.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm: (WebKit::XPCServiceMain):
  • Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode const): (WebKit::WebProcessCreationParameters::decode):
  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformResolvePathsForSandboxExtensions): (WebKit::WebProcessPool::platformInitializeWebProcess):
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::platformInitializeWebProcess):
  • WebProcess/com.apple.WebProcess.sb.in:

Source/WTF:

  • wtf/PlatformEnable.h:

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

3:21 PM Changeset in webkit [257885] by Kocsen Chung
  • 1 copy in tags/Safari-610.1.5.3

Tag Safari-610.1.5.3.

3:19 PM Changeset in webkit [257884] by Kocsen Chung
  • 10 edits in branches/safari-610.1.5-branch/Source

Cherry-pick r257875. rdar://problem/60055569

[Cocoa] Add enable flag to disable direct mode for preferences
https://bugs.webkit.org/show_bug.cgi?id=208588

Reviewed by Brent Fulgham.

Source/WebKit:

Add an enable flag for this feature so it can be toggled, and turn it off.

No new tests, since this patch is reverting to previous behavior covered by existing tests.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm: (WebKit::XPCServiceMain):
  • Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode const): (WebKit::WebProcessCreationParameters::decode):
  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformResolvePathsForSandboxExtensions): (WebKit::WebProcessPool::platformInitializeWebProcess):
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::platformInitializeWebProcess):
  • WebProcess/com.apple.WebProcess.sb.in:

Source/WTF:

  • wtf/PlatformEnable.h:

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

3:19 PM Changeset in webkit [257883] by Kocsen Chung
  • 3 edits in branches/safari-610.1.5-branch/Source/WebKit

Cherry-pick r257879. rdar://problem/60055569

Partially revert r256756, since it introduced bugs related to Accessibility.
<rdar://problem/60005574>

Unreviewed partial revert of r256756.

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

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

3:18 PM Changeset in webkit [257882] by achristensen@apple.com
  • 13 edits in trunk

Add SPI to evaluate JavaScript in an iframe
https://bugs.webkit.org/show_bug.cgi?id=208605

Reviewed by Brady Eidson.

Source/WebCore:

Covered by new API tests.

  • bindings/js/DOMWrapperWorld.cpp:

(WebCore::DOMWrapperWorld::DOMWrapperWorld):
Remove a now-invalid assertion that was firing during my test.
API::ContentWorld::defaultClientWorld creates a world with no name and type Type::User.
I'm surprised this wasn't hit before.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView evaluateJavaScript:completionHandler:]):
(-[WKWebView evaluateJavaScript:inContentWorld:completionHandler:]):
(-[WKWebView callAsyncJavaScript:arguments:inContentWorld:completionHandler:]):
(-[WKWebView _evaluateJavaScript:asAsyncFunction:withArguments:forceUserGesture:inFrame:inWorld:completionHandler:]):
(-[WKWebView _evaluateJavaScriptWithoutUserGesture:completionHandler:]):
(-[WKWebView _callAsyncJavaScript:arguments:inFrame:inContentWorld:completionHandler:]):
(-[WKWebView _evaluateJavaScript:inFrame:inContentWorld:completionHandler:]):
(-[WKWebView _evaluateJavaScript:asAsyncFunction:withArguments:forceUserGesture:completionHandler:inWorld:]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::runJavaScriptInMainFrame):
(WebKit::WebPageProxy::runJavaScriptInFrameInScriptWorld):
(WebKit::WebPageProxy::runJavaScriptInMainFrameScriptWorld): Deleted.
(WebKit::WebPageProxy::runJavaScriptInFrame): Deleted.

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

(WebKit::WebPage::runJavaScriptInFrameInScriptWorld):
(WebKit::WebPage::runJavaScriptInMainFrameScriptWorld): Deleted.
(WebKit::WebPage::runJavaScriptInFrame): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:
3:10 PM Changeset in webkit [257881] by Kocsen Chung
  • 8 edits in branches/safari-610.1.5-branch/Source

Versioning.

3:09 PM Changeset in webkit [257880] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

[ Mac wk2 Debug ] fast/layoutformattingcontext/block-only/replaced-intrinsic-width-simple.html is crashing.
https://bugs.webkit.org/show_bug.cgi?id=208598
<rdar://problem/60054452>

Unreviewed test gardening.

This is LFC failure only. Unrelated to first paint. Skip it for now.

  • platform/mac-wk2/TestExpectations:
2:03 PM Changeset in webkit [257879] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

Partially revert r256756, since it introduced bugs related to Accessibility.
<rdar://problem/60005574>

Unreviewed partial revert of r256756.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
1:56 PM Changeset in webkit [257878] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r257840?) [ Mac wk2 Debug ] fast/layoutformattingcontext/block-only/replaced-intrinsic-width-simple.html is crashing.
https://bugs.webkit.org/show_bug.cgi?id=208598

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
1:42 PM Changeset in webkit [257877] by jiewen_tan@apple.com
  • 28 edits
    1 delete in trunk

[WebAuthn] Implement -[_WKWebAuthenticationPanelDelegate panel:decidePolicyForLocalAuthenticatorWithCompletionHandler:] SPI
https://bugs.webkit.org/show_bug.cgi?id=208533
<rdar://problem/60010184>

Reviewed by Alex Christensen.

Source/WebCore:

Covered by new tests within existing test files.

  • en.lproj/Localizable.strings:
  • platform/LocalizedStrings.cpp:

(WebCore::touchIDPromptTitle):
(WebCore::biometricFallbackPromptTitle):

  • platform/LocalizedStrings.h:

Adds localized strings to support the customized LocalAuthentication dialog.

Source/WebKit:

This patch implements the above SPI to replace -[_WKWebAuthenticationPanelDelegate panel:verifyUserWithAccessControl:completionHandler:].
The original SPI is designed on the premise that Safari is going to highly customize the LocalAuthentication UI, and that is not happening
anymore. Therefore, WebKit takes back the invocation of LocalAuthentication and offer a new SPI to tell clients when WebKit is about to
show LocalAuthentication UI. Clients then have the trigger to pull at their pleasure.

This patch implements all plumbings to replace the SPI. Besides that, this patch also:
1) enhances the LocalConnection::verifyUser with a slightly customized LocalAuthentication dialog;
2) adds the SPI used above into the SPI header;
3) makes _WKWebAuthenticationPanelDelegate.transports as a NSSet instead of a NSArray;
4) lets LocalService::isAvailable return false if Apple attestation is not available.

  • Platform/spi/Cocoa/LocalAuthenticationSPI.h:
  • UIProcess/API/APIWebAuthenticationPanelClient.h:

(API::WebAuthenticationPanelClient::decidePolicyForLocalAuthenticator const):
(API::WebAuthenticationPanelClient::verifyUser const): Deleted.

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

(-[_WKWebAuthenticationPanel transports]):

  • UIProcess/WebAuthentication/Authenticator.h:
  • UIProcess/WebAuthentication/AuthenticatorManager.cpp:

(WebKit::AuthenticatorManager::decidePolicyForLocalAuthenticator):
(WebKit::AuthenticatorManager::verifyUser): Deleted.

  • UIProcess/WebAuthentication/AuthenticatorManager.h:
  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.h:
  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticator::makeCredential):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterDecidePolicy):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterUserVerification):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
(WebKit::LocalAuthenticator::getAssertion):
(WebKit::LocalAuthenticator::continueGetAssertionAfterResponseSelected):
(WebKit::LocalAuthenticator::continueGetAssertionAfterUserVerification):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterUserConsented): Deleted.
(WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented): Deleted.

  • UIProcess/WebAuthentication/Cocoa/LocalConnection.h:
  • UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:

(WebKit::LocalConnection::verifyUser const):
(WebKit::LocalConnection::isUnlocked const): Deleted.

  • UIProcess/WebAuthentication/Cocoa/LocalService.mm:

(WebKit::LocalService::isAvailable):

  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.h:
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:

(WebKit::WebAuthenticationPanelClient::WebAuthenticationPanelClient):
(WebKit::localAuthenticatorPolicy):
(WebKit::WebAuthenticationPanelClient::decidePolicyForLocalAuthenticator const):
(WebKit::WebAuthenticationPanelClient::verifyUser const): Deleted.

  • UIProcess/WebAuthentication/Mock/MockLocalConnection.h:
  • UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:

(WebKit::MockLocalConnection::verifyUser const):
(WebKit::MockLocalConnection::isUnlocked const): Deleted.

  • UIProcess/WebAuthentication/WebAuthenticationFlags.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(-[TestWebAuthenticationPanelDelegate panel:decidePolicyForLocalAuthenticatorWithCompletionHandler:]):
(TestWebKitAPI::TEST):
(-[TestWebAuthenticationPanelDelegate panel:verifyUserWithAccessControl:completionHandler:]): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-la.html: Removed.
1:35 PM Changeset in webkit [257876] by achristensen@apple.com
  • 4 edits in trunk

callAsyncJavaScript with an invalid parameter and no completionHandler should not crash
https://bugs.webkit.org/show_bug.cgi?id=208593

Reviewed by Brady Eidson.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _evaluateJavaScript:asAsyncFunction:withArguments:forceUserGesture:completionHandler:inWorld:]):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/AsyncFunction.mm:

(TestWebKitAPI::TEST):

1:26 PM Changeset in webkit [257875] by pvollan@apple.com
  • 10 edits in trunk/Source

[Cocoa] Add enable flag to disable direct mode for preferences
https://bugs.webkit.org/show_bug.cgi?id=208588

Reviewed by Brent Fulgham.

Source/WebKit:

Add an enable flag for this feature so it can be toggled, and turn it off.

No new tests, since this patch is reverting to previous behavior covered by existing tests.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:

(WebKit::XPCServiceMain):

  • Shared/WebProcessCreationParameters.cpp:

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

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

(WebKit::WebProcessPool::platformResolvePathsForSandboxExtensions):
(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

  • WebProcess/com.apple.WebProcess.sb.in:

Source/WTF:

  • wtf/PlatformEnable.h:
1:17 PM Changeset in webkit [257874] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

Unreviewed build fix for WinCairo
https://bugs.webkit.org/show_bug.cgi?id=208591

  • Shared/FrameTreeNodeData.h: Replaced #import with #include.
12:47 PM Changeset in webkit [257873] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: the execution context picker is shown on pages with only one execution context if there are internal execution contexts
https://bugs.webkit.org/show_bug.cgi?id=208502

Reviewed by Timothy Hatcher.

  • UserInterface/Views/QuickConsole.js:

(WI.QuickConsole.prototype._updateActiveExecutionContextDisplay):
(WI.QuickConsole.prototype._handleEngineeringShowInternalExecutionContextsSettingChanged):

12:35 PM Changeset in webkit [257872] by achristensen@apple.com
  • 25 edits
    6 adds in trunk

WKWebView's frames accessor should return a traversable type
https://bugs.webkit.org/show_bug.cgi?id=208591

Reviewed by Brady Eidson.

Source/WebKit:

Rather than return an array of information that can technically be used to reconstruct a tree,
let's just return the root of a tree. This introduces _WKFrameTreeNode which inherits from WKFrameInfo.
Covered by API tests.

  • Shared/API/APIObject.h:
  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

  • Shared/FrameInfoData.cpp:

(WebKit::FrameInfoData::encode const):
(WebKit::FrameInfoData::decode):

  • Shared/FrameInfoData.h:
  • Shared/FrameTreeNodeData.h: Added.

(WebKit::FrameTreeNodeData::encode const):
(WebKit::FrameTreeNodeData::decode):

  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/API/APIFrameInfo.cpp:

(API::FrameInfo::parentFrameHandle const): Deleted.
(API::FrameInfo::childFrameHandles const): Deleted.

  • UIProcess/API/APIFrameInfo.h:
  • UIProcess/API/APIFrameTreeNode.cpp: Added.

(API::FrameTreeNode::handle const):

  • UIProcess/API/APIFrameTreeNode.h: Added.
  • UIProcess/API/Cocoa/WKFrameInfo.mm:

(-[WKFrameInfo _parentFrameHandle]): Deleted.
(-[WKFrameInfo _childFrameHandles]): Deleted.

  • UIProcess/API/Cocoa/WKFrameInfoPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _frames:]):
(-[WKWebView _allFrames:]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/_WKFrameTreeNode.h: Added.
  • UIProcess/API/Cocoa/_WKFrameTreeNode.mm: Added.

(-[_WKFrameTreeNode dealloc]):
(-[_WKFrameTreeNode isMainFrame]):
(-[_WKFrameTreeNode request]):
(-[_WKFrameTreeNode securityOrigin]):
(-[_WKFrameTreeNode webView]):
(-[_WKFrameTreeNode childFrames]):
(-[_WKFrameTreeNode copyWithZone:]):
(-[_WKFrameTreeNode _handle]):
(-[_WKFrameTreeNode _apiObject]):

  • UIProcess/API/Cocoa/_WKFrameTreeNodeInternal.h: Added.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::getAllFrames):

  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::info const):
(WebKit::WebFrame::childFrameIDs const): Deleted.

  • WebProcess/WebPage/WebFrame.h:

(WebKit::WebFrame::frameID const):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::frameTreeNodeData):
(WebKit::WebPage::getAllFrames):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:
12:26 PM Changeset in webkit [257871] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(?): Elements: unable to edit a tag name more than once
https://bugs.webkit.org/show_bug.cgi?id=208586

Reviewed by Timothy Hatcher.

  • UserInterface/Views/DOMTreeElement.js:

(WI.DOMTreeElement.prototype._insertInLastAttributePosition):
When inserting a new attribute, don't wipe out the existing DOM structure, which is required
in order for tag name editing to work (specifically having a .html-tag-name node).

12:05 PM Changeset in webkit [257870] by graouts@webkit.org
  • 13 edits in trunk

Add an SPI to allow UserStyleSheet injection to target a specific WKWebView
https://bugs.webkit.org/show_bug.cgi?id=208575
<rdar://problem/59773690>

Reviewed by Brady Eidson.

Source/WebCore:

Add a new Optional<PageIdentifier> member to UserStyleSheet which indicates whether the UserStyleSheet is supposed
to be injected for all WKWebViews, or only a specific top-level WKWebView associated with a Page with the give ID.

In ExtensionStyleSheets::updateInjectedStyleSheetCache(), UserStyleSheets with a specified pageID are ignored. Instead,
we now also consider CSSStyleSheets listed in the new m_pageSpecificStyleSheets which contains page-specific stylesheets
to be injected for the associated Document.

The new Page::injectUserStyleSheet() method allows the addition of a UserStyleSheet on its documents' ExtensionStyleSheets,
and will call this method either for the main frame's Document, or all Documents, depending on the UserStyleSheet's configuration.

Finally, these new targeted UserStyleSheets can be removed via Page::removeInjectedUserStyleSheet() and
ExtensionStyleSheets::removePageSpecificUserStyleSheet().

  • dom/ExtensionStyleSheets.cpp:

(WebCore::ExtensionStyleSheets::updateInjectedStyleSheetCache const):
(WebCore::ExtensionStyleSheets::injectPageSpecificUserStyleSheet):
(WebCore::ExtensionStyleSheets::removePageSpecificUserStyleSheet):
(WebCore::ExtensionStyleSheets::detachFromDocument):

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

(WebCore::Page::injectUserStyleSheet):
(WebCore::Page::removeInjectedUserStyleSheet):

  • page/Page.h:
  • page/UserStyleSheet.h:

(WebCore::UserStyleSheet::UserStyleSheet):
(WebCore::UserStyleSheet::pageID const):

Source/WebKit:

Since WebCore adds a new Optional<PageIdentifier> member to UserStyleSheet, we now encode that member to be preserved
across UI and Web processes.

Using this new member, WebUserContentController now determines that a UserStyleSheet meant to target a specific page
was added in addUserStyleSheetInternal(), finds the matching WebPage, and calls injectUserStyleSheet() on its backing Page
object. Conversely, WebUserContentController::removeUserStyleSheetInternal() will call into Page::removeInjectedUserStyleSheet().

Finally, we offer a new initializer on _WKUserStyleSheet to target a specific WKWebView, and its page's ID will be set on the
backing UserStyleSheet.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<UserStyleSheet>::encode):
(IPC::ArgumentCoder<UserStyleSheet>::decode):

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

(-[_WKUserStyleSheet initWithSource:forWKWebView:forMainFrameOnly:userContentWorld:]):

  • WebProcess/UserContent/WebUserContentController.cpp:

(WebKit::WebUserContentController::addUserStyleSheetInternal):
(WebKit::WebUserContentController::removeUserStyleSheetInternal):

Tools:

Add new tests for the new SPI which check:

  1. that specifying forWKWebView: when initializing a _WKUserStyleSheet will inject the provided CSS source in the specified WKWebView alone,
  2. that the same test works with two WKWebViews with a shared WKWebKitConfiguration,
  3. that a WKWebView-specific _WKUserStyleSheet can be removed,
  4. that a WKWebView-specific _WKUserStyleSheet can be added twice and removed once and be removed as expected,
  5. and that a WKWebView-specific _WKUserStyleSheet is automatically removed when navigating to a new page,
  6. and that the same test also works with PSON enabled.
  • TestWebKitAPI/Tests/WebKitCocoa/UserContentController.mm:
11:56 AM Changeset in webkit [257869] by Jason_Lawrence
  • 3 edits in trunk/LayoutTests

[ iOS and Mac wk2 Debug ] fast/events/beforeunload-prompt.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=208590

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
11:43 AM Changeset in webkit [257868] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ iOS ] scrollingcoordinator/ios/fixed-frame-overflow-swipe.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=208587

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
11:42 AM Changeset in webkit [257867] by jer.noble@apple.com
  • 29 edits
    9 copies
    17 adds in trunk/Source

[GPUP] Implement Modern EME API in the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=208090

Reviewed by Eric Carlson.

Source/WebCore:

Add export macros to CDMFactory::registeredFactories().

  • platform/encryptedmedia/CDMFactory.h:

Source/WebKit:

Add support for RemoteCDMFactory, RemateCDM, RemoteCDMInstance, RemoteCDMInstanceSession, and all
of their associated Proxy objects.

Allow the existing CDMFactory machinery to work normally when the GPU process is disabled,
by making initialization of the CDM factories contingent upon the "use GPU" setting.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::cdmFactoryProxy):
(WebKit::GPUConnectionToWebProcess::didReceiveMessage):
(WebKit::GPUConnectionToWebProcess::didReceiveSyncMessage):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/media/RemoteCDMFactoryProxy.cpp: Added.

(WebKit::RemoteCDMFactoryProxy::RemoteCDMFactoryProxy):
(WebKit::factoryForKeySystem):
(WebKit::RemoteCDMFactoryProxy::createCDM):
(WebKit::RemoteCDMFactoryProxy::supportsKeySystem):
(WebKit::RemoteCDMFactoryProxy::didReceiveCDMMessage):
(WebKit::RemoteCDMFactoryProxy::didReceiveCDMInstanceMessage):
(WebKit::RemoteCDMFactoryProxy::didReceiveCDMInstanceSessionMessage):
(WebKit::RemoteCDMFactoryProxy::didReceiveSyncCDMMessage):
(WebKit::RemoteCDMFactoryProxy::didReceiveSyncCDMInstanceMessage):
(WebKit::RemoteCDMFactoryProxy::didReceiveSyncCDMInstanceSessionMessage):
(WebKit::RemoteCDMFactoryProxy::addProxy):
(WebKit::RemoteCDMFactoryProxy::removeProxy):
(WebKit::RemoteCDMFactoryProxy::addInstance):
(WebKit::RemoteCDMFactoryProxy::removeInstance):
(WebKit::RemoteCDMFactoryProxy::getInstance):
(WebKit::RemoteCDMFactoryProxy::addSession):
(WebKit::RemoteCDMFactoryProxy::removeSession):

  • GPUProcess/media/RemoteCDMFactoryProxy.h: Added.
  • GPUProcess/media/RemoteCDMFactoryProxy.messages.in: Added.
  • GPUProcess/media/RemoteCDMInstanceProxy.cpp: Added.

(WebKit::RemoteCDMInstanceProxy::create):
(WebKit::RemoteCDMInstanceProxy::RemoteCDMInstanceProxy):
(WebKit::RemoteCDMInstanceProxy::initializeWithConfiguration):
(WebKit::RemoteCDMInstanceProxy::setServerCertificate):
(WebKit::RemoteCDMInstanceProxy::setStorageDirectory):
(WebKit::RemoteCDMInstanceProxy::createSession):

  • GPUProcess/media/RemoteCDMInstanceProxy.h: Added.

(WebKit::RemoteCDMInstanceProxy::configuration const):
(WebKit::RemoteCDMInstanceProxy::instance):

  • GPUProcess/media/RemoteCDMInstanceProxy.messages.in: Added.
  • GPUProcess/media/RemoteCDMInstanceSessionProxy.cpp: Added.

(WebKit::RemoteCDMInstanceSessionProxy::create):
(WebKit::RemoteCDMInstanceSessionProxy::RemoteCDMInstanceSessionProxy):
(WebKit::RemoteCDMInstanceSessionProxy::~RemoteCDMInstanceSessionProxy):
(WebKit::RemoteCDMInstanceSessionProxy::requestLicense):
(WebKit::RemoteCDMInstanceSessionProxy::updateLicense):
(WebKit::RemoteCDMInstanceSessionProxy::loadSession):
(WebKit::RemoteCDMInstanceSessionProxy::closeSession):
(WebKit::RemoteCDMInstanceSessionProxy::removeSessionData):
(WebKit::RemoteCDMInstanceSessionProxy::storeRecordOfKeyUsage):
(WebKit::RemoteCDMInstanceSessionProxy::updateKeyStatuses):
(WebKit::RemoteCDMInstanceSessionProxy::sendMessage):
(WebKit::RemoteCDMInstanceSessionProxy::sessionIdChanged):

  • GPUProcess/media/RemoteCDMInstanceSessionProxy.h: Added.
  • GPUProcess/media/RemoteCDMInstanceSessionProxy.messages.in: Added.
  • GPUProcess/media/RemoteCDMProxy.cpp: Added.

(WebKit::RemoteCDMProxy::create):
(WebKit::RemoteCDMProxy::RemoteCDMProxy):
(WebKit::RemoteCDMProxy::supportsInitData):
(WebKit::RemoteCDMProxy::sanitizeResponse):
(WebKit::RemoteCDMProxy::sanitizeSessionId):
(WebKit::RemoteCDMProxy::getSupportedConfiguration):
(WebKit::RemoteCDMProxy::createInstance):
(WebKit::RemoteCDMProxy::loadAndInitialize):

  • GPUProcess/media/RemoteCDMProxy.h: Added.

(WebKit::RemoteCDMProxy::configuration const):
(WebKit::RemoteCDMProxy::factory const):

  • GPUProcess/media/RemoteCDMProxy.messages.in: Added.
  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::mediaPlayerInitializationDataEncountered):
(WebKit::RemoteMediaPlayerProxy::cdmInstanceAttached):
(WebKit::RemoteMediaPlayerProxy::cdmInstanceDetached):
(WebKit::RemoteMediaPlayerProxy::attemptToDecryptWithInstance):
(WebKit::RemoteMediaPlayerProxy::setShouldContinueAfterKeyNeeded):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<WebCore::CDMInstanceSession::Message>::encode):
(IPC::ArgumentCoder<WebCore::CDMInstanceSession::Message>::decode):
(IPC::ArgumentCoder<WebCore::CDMInstanceSession::KeyStatusVector>::encode):
(IPC::ArgumentCoder<WebCore::CDMInstanceSession::KeyStatusVector>::decode):

  • Shared/WebCoreArgumentCoders.h:
  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::didReceiveMessage):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::cdmInstanceAttached):
(WebKit::MediaPlayerPrivateRemote::cdmInstanceDetached):
(WebKit::MediaPlayerPrivateRemote::attemptToDecryptWithInstance):
(WebKit::MediaPlayerPrivateRemote::initializationDataEncountered):
(WebKit::MediaPlayerPrivateRemote::setShouldContinueAfterKeyNeeded):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in:
  • WebProcess/GPU/media/RemoteCDM.cpp: Added.

(WebKit::RemoteCDM::create):
(WebKit::RemoteCDM::RemoteCDM):
(WebKit::RemoteCDM::getSupportedConfiguration):
(WebKit::RemoteCDM::supportsConfiguration const):
(WebKit::RemoteCDM::supportsConfigurationWithRestrictions const):
(WebKit::RemoteCDM::supportsSessionTypeWithConfiguration const):
(WebKit::RemoteCDM::supportsInitData const):
(WebKit::RemoteCDM::distinctiveIdentifiersRequirement const):
(WebKit::RemoteCDM::persistentStateRequirement const):
(WebKit::RemoteCDM::distinctiveIdentifiersAreUniquePerOriginAndClearable const):
(WebKit::RemoteCDM::createInstance):
(WebKit::RemoteCDM::loadAndInitialize):
(WebKit::RemoteCDM::sanitizeResponse const):
(WebKit::RemoteCDM::sanitizeSessionId const):

  • WebProcess/GPU/media/RemoteCDM.h: Added.
  • WebProcess/GPU/media/RemoteCDMConfiguration.h: Added.

(WebKit::RemoteCDMConfiguration::encode const):
(WebKit::RemoteCDMConfiguration::decode):

  • WebProcess/GPU/media/RemoteCDMFactory.cpp: Added.

(WebKit::RemoteCDMFactory::RemoteCDMFactory):
(WebKit::RemoteCDMFactory::updatePreferences):
(WebKit::RemoteCDMFactory::supplementName):
(WebKit::RemoteCDMFactory::gpuProcessConnection):
(WebKit::RemoteCDMFactory::supportsKeySystem):
(WebKit::RemoteCDMFactory::createCDM):
(WebKit::RemoteCDMFactory::addSession):
(WebKit::RemoteCDMFactory::removeSession):
(WebKit::RemoteCDMFactory::didReceiveSessionMessage):

  • WebProcess/GPU/media/RemoteCDMFactory.h: Added.
  • WebProcess/GPU/media/RemoteCDMIdentifier.h: Added.
  • WebProcess/GPU/media/RemoteCDMInstance.cpp: Added.

(WebKit::RemoteCDMInstance::create):
(WebKit::RemoteCDMInstance::RemoteCDMInstance):
(WebKit::RemoteCDMInstance::initializeWithConfiguration):
(WebKit::RemoteCDMInstance::setServerCertificate):
(WebKit::RemoteCDMInstance::setStorageDirectory):
(WebKit::RemoteCDMInstance::createSession):

  • WebProcess/GPU/media/RemoteCDMInstance.h: Added.
  • WebProcess/GPU/media/RemoteCDMInstanceConfiguration.h: Added.

(WebKit::RemoteCDMInstanceConfiguration::encode const):
(WebKit::RemoteCDMInstanceConfiguration::decode):

  • WebProcess/GPU/media/RemoteCDMInstanceIdentifier.h: Added.
  • WebProcess/GPU/media/RemoteCDMInstanceSession.cpp: Added.

(WebKit::RemoteCDMInstanceSession::create):
(WebKit::RemoteCDMInstanceSession::RemoteCDMInstanceSession):
(WebKit::RemoteCDMInstanceSession::requestLicense):
(WebKit::RemoteCDMInstanceSession::updateLicense):
(WebKit::RemoteCDMInstanceSession::loadSession):
(WebKit::RemoteCDMInstanceSession::closeSession):
(WebKit::RemoteCDMInstanceSession::removeSessionData):
(WebKit::RemoteCDMInstanceSession::storeRecordOfKeyUsage):
(WebKit::RemoteCDMInstanceSession::updateKeyStatuses):
(WebKit::RemoteCDMInstanceSession::sendMessage):
(WebKit::RemoteCDMInstanceSession::sessionIdChanged):

  • WebProcess/GPU/media/RemoteCDMInstanceSession.h: Added.
  • WebProcess/GPU/media/RemoteCDMInstanceSession.messages.in: Added.
  • WebProcess/GPU/media/RemoteCDMInstanceSessionIdentifier.h: Added.
  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.cpp:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • WebProcess/WebProcess.cpp:
11:35 AM Changeset in webkit [257866] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Assertion failed: !m_function in CompletionHandler::~CompletionHandler()
https://bugs.webkit.org/show_bug.cgi?id=208457

Reviewed by Chris Dumez.

Ensure completion handler is called in WebsiteDataStore::getResourceLoadStatisticsDataSummary.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::getResourceLoadStatisticsDataSummary):

11:29 AM Changeset in webkit [257865] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ iOS ] imported/w3c/web-platform-tests/mediacapture-streams/MediaStream-removetrack.https.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=208585

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
11:22 AM Changeset in webkit [257864] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] fast/scrolling/scroll-animator-overlay-scrollbars-clicked.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208584

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:18 AM Changeset in webkit [257863] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ iOS ] imported/w3c/web-platform-tests/IndexedDB/key-generators/reading-autoincrement-indexes-cursors.any.serviceworker.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=206934#add_comment

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
11:04 AM Changeset in webkit [257862] by Ben Nham
  • 15 edits in trunk/Source

Remove initial layout throttler
https://bugs.webkit.org/show_bug.cgi?id=208285

Reviewed by Antti Koivisto.

Source/WebCore:

This removes a throttle that can prevent us from laying out during the first 250 ms of page
load. This throttle is generally not effective (many pages have JS that force a sync layout
before the first 250 ms of loading) and is also extremely outdated (the comment says the
interval is too high for dual G5s). We already have too many throttles in too many places,
so let's remove this one.

  • dom/Document.cpp:

(WebCore::Document::implicitClose):
(WebCore::Document::shouldScheduleLayout const):
(WebCore::Document::isLayoutTimerActive const):
(WebCore::Document::shouldScheduleLayout): Deleted.
(WebCore::Document::isLayoutTimerActive): Deleted.
(WebCore::Document::minimumLayoutDelay): Deleted.
(WebCore::Document::timeSinceDocumentCreation const): Deleted.

  • dom/Document.h:

(WebCore::Document::parsing const):
(WebCore::Document::timeSinceDocumentCreation const):

  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::layout):
(WebCore::FrameViewLayoutContext::reset):
(WebCore::FrameViewLayoutContext::scheduleLayout):
(WebCore::FrameViewLayoutContext::unscheduleLayout):
(WebCore::FrameViewLayoutContext::scheduleSubtreeLayout):

  • page/FrameViewLayoutContext.h:
  • page/SettingsBase.cpp:

(WebCore::SettingsBase::SettingsBase):
(WebCore::SettingsBase::setLayoutInterval): Deleted.

  • page/SettingsBase.h:

(WebCore::SettingsBase::layoutInterval const): Deleted.

Source/WebKit:

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

(WebKit::WebPage::updatePreferences):

Source/WebKitLegacy/mac:

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

(+[WebPreferences initialize]):
(-[WebPreferences _setLayoutInterval:]): Deleted.
(-[WebPreferences _layoutInterval]): Deleted.

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:
10:55 AM Changeset in webkit [257861] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ iOS ] http/wpt/service-workers/server-trust-evaluation.https.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=208582

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
10:45 AM Changeset in webkit [257860] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ iOS ] http/wpt/service-workers/skipFetchEvent.https.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=208581

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
10:35 AM Changeset in webkit [257859] by Ryan Haddad
  • 3 edits in trunk/Tools

[macOS] test-lldb-webkit failing on debug bots
https://bugs.webkit.org/show_bug.cgi?id=208545

Reviewed by Jonathan Bedard.

The lldb-webkit-test step must pass in the build configuration as an
argument to the test-lldb-webkit script so that it uses the lldbWebKitTester
binary that is downloaded with the rest of the build products. Without this
argument, the bots expect to find the binary in the 'WebKitBuild/Release' directory
regardless of their actual build configuration.

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

(RunLLDBWebKitTests): Pass in the build configuration to the test-lldb-webkit script.

  • Scripts/test-lldb-webkit:

(LldbTester.parse_args): Capitalize the constants for Debug / Release since that is what webkitpy expects.

10:23 AM Changeset in webkit [257858] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Add build step to create local git commit for commit-queue (follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=208539

Unreviewed follow-up fix.

  • BuildSlaveSupport/ews-build/steps.py:
10:21 AM Changeset in webkit [257857] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

REGRESSION (r257839): two fast/forms/textarea are failing after commit r257839
https://bugs.webkit.org/show_bug.cgi?id=208576

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
10:21 AM Changeset in webkit [257856] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

JSC 32bits broken in debug mode by r257399
https://bugs.webkit.org/show_bug.cgi?id=208439

Patch by Paulo Matos <Paulo Matos> on 2020-03-04
Reviewed by Carlos Alberto Lopez Perez.

Use uses() method call instead of gpr() on assert to that it
works for both 64 and 32 bits.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateImpl):

10:21 AM Changeset in webkit [257855] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Drop WebsiteDataStore::processPools()'s ensureAPoolExists optional parameter and add a ensureProcessPools() method instead
https://bugs.webkit.org/show_bug.cgi?id=208546

Reviewed by Sam Weinig.

Drop WebsiteDataStore::processPools()'s ensureAPoolExists optional parameter and add a ensureProcessPools()
method instead. This was error-prone and we are a lot of code creating process pools unnecessarily as a
result.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::processPoolForCookieStorageOperations):
(WebKit::WebsiteDataStore::fetchDataAndApply):
(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::setMaxStatisticsEntries):
(WebKit::WebsiteDataStore::setPruneEntriesDownTo):
(WebKit::WebsiteDataStore::setGrandfatheringTime):
(WebKit::WebsiteDataStore::setMinimumTimeBetweenDataRecordsRemoval):
(WebKit::WebsiteDataStore::dumpResourceLoadStatistics):
(WebKit::WebsiteDataStore::isPrevalentResource):
(WebKit::WebsiteDataStore::isGrandfathered):
(WebKit::WebsiteDataStore::setPrevalentResource):
(WebKit::WebsiteDataStore::setPrevalentResourceForDebugMode):
(WebKit::WebsiteDataStore::isVeryPrevalentResource):
(WebKit::WebsiteDataStore::setVeryPrevalentResource):
(WebKit::WebsiteDataStore::setShouldClassifyResourcesBeforeDataRecordsRemoval):
(WebKit::WebsiteDataStore::setSubframeUnderTopFrameDomain):
(WebKit::WebsiteDataStore::isRegisteredAsSubFrameUnder):
(WebKit::WebsiteDataStore::setSubresourceUnderTopFrameDomain):
(WebKit::WebsiteDataStore::isRegisteredAsSubresourceUnder):
(WebKit::WebsiteDataStore::setSubresourceUniqueRedirectTo):
(WebKit::WebsiteDataStore::setSubresourceUniqueRedirectFrom):
(WebKit::WebsiteDataStore::setTopFrameUniqueRedirectTo):
(WebKit::WebsiteDataStore::setTopFrameUniqueRedirectFrom):
(WebKit::WebsiteDataStore::isRegisteredAsRedirectingTo):
(WebKit::WebsiteDataStore::clearPrevalentResource):
(WebKit::WebsiteDataStore::resetParametersToDefaultValues):
(WebKit::WebsiteDataStore::submitTelemetry):
(WebKit::WebsiteDataStore::scheduleClearInMemoryAndPersistent):
(WebKit::WebsiteDataStore::getResourceLoadStatisticsDataSummary):
(WebKit::WebsiteDataStore::scheduleCookieBlockingUpdate):
(WebKit::WebsiteDataStore::scheduleStatisticsAndDataRecordsProcessing):
(WebKit::WebsiteDataStore::setLastSeen):
(WebKit::WebsiteDataStore::mergeStatisticForTesting):
(WebKit::WebsiteDataStore::setNotifyPagesWhenDataRecordsWereScanned):
(WebKit::WebsiteDataStore::setIsRunningResourceLoadStatisticsTest):
(WebKit::WebsiteDataStore::setNotifyPagesWhenTelemetryWasCaptured):
(WebKit::WebsiteDataStore::setTimeToLiveUserInteraction):
(WebKit::WebsiteDataStore::logUserInteraction):
(WebKit::WebsiteDataStore::hasHadUserInteraction):
(WebKit::WebsiteDataStore::isRelationshipOnlyInDatabaseOnce):
(WebKit::WebsiteDataStore::clearUserInteraction):
(WebKit::WebsiteDataStore::setGrandfathered):
(WebKit::WebsiteDataStore::setUseITPDatabase):
(WebKit::WebsiteDataStore::setCrossSiteLoadWithLinkDecorationForTesting):
(WebKit::WebsiteDataStore::resetCrossSiteLoadsWithLinkDecorationForTesting):
(WebKit::WebsiteDataStore::deleteCookiesForTesting):
(WebKit::WebsiteDataStore::hasLocalStorageForTesting const):
(WebKit::WebsiteDataStore::hasIsolatedSessionForTesting const):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldDowngradeReferrerForTesting):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldBlockThirdPartyCookiesForTesting):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsFirstPartyWebsiteDataRemovalModeForTesting):
(WebKit::WebsiteDataStore::setCacheMaxAgeCapForPrevalentResources):
(WebKit::WebsiteDataStore::resetCacheMaxAgeCapForPrevalentResources):
(WebKit::WebsiteDataStore::processPools const):
(WebKit::WebsiteDataStore::ensureProcessPools const):
(WebKit::WebsiteDataStore::plugins const):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
(WebKit::WebsiteDataStore::setStatisticsTestingCallback):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsDebugMode):
(WebKit::WebsiteDataStore::isResourceLoadStatisticsEphemeral const):
(WebKit::WebsiteDataStore::clearResourceLoadStatisticsInWebProcesses):
(WebKit::WebsiteDataStore::getLocalStorageDetails):
(WebKit::WebsiteDataStore::resetQuota):
(WebKit::WebsiteDataStore::hasAppBoundSession const):
(WebKit::WebsiteDataStore::setInAppBrowserPrivacyEnabled):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
10:07 AM Changeset in webkit [257854] by dbates@webkit.org
  • 2 edits in trunk/Tools

Should use -bounds instead of -frame in RequestTextInputContext.mm tests
https://bugs.webkit.org/show_bug.cgi?id=208565

Reviewed by Wenson Hsieh.

Pass the bounds of the web view to -synchronouslyRequestTextInputContextsInRect: instead
of its frame as a means to find all the editable elements in the visible content area
of the web view.

Coincidentally this makes no difference to the test results right now because the web view
happens to be located at the origin (0, 0) in the window. However if in the future the
web view would be located at some other point then the tests may fail because the rectangle
passed to -synchronouslyRequestTextInputContextsInRect: would no longer represent the
rectangle for the visible content area.

  • TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:

(TEST):

10:06 AM Changeset in webkit [257853] by dbates@webkit.org
  • 2 edits in trunk/Tools

Organize tests in RequestTextInputContext.mm tests under test name RequestTextInputContext
https://bugs.webkit.org/show_bug.cgi?id=208564

Reviewed by Alex Christensen.

Group the tests in RequestTextInputContext.mm under the test case name RequestTextInputContext
to make it easy to run just these tests.

Currently, the tests are organized under the test case name WebKit. This means you need to
pass run-api-tests the name of each sub-test as there is no easy way to run them all without
also running all the TestWebKitAPI.WebKit sub-tests. Instead organize them under RequestTextInputContext
so that a person can run just these test using:

run-api-tests --debug TestWebKitAPI.RequestTextInputContext

  • TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:

(TEST):

10:05 AM Changeset in webkit [257852] by dbates@webkit.org
  • 4 edits in trunk/Source/WebKit

Implement WKTextSelectionRect in terms of WebCore::SelectionRect and WKTextRange in terms of WKTextSelectionRect
https://bugs.webkit.org/show_bug.cgi?id=208563

Reviewed by Alex Christensen.

It is a layering violation that WebKit2 includes a header from WebKit. Implement
WKTextSelectionRect in terms of WebCore::SelectionRect as a step towards fixing this.
Also avoid the WebCore::SelectionRect -> WebSelectionRect -> WKTextSelectionRect
dance that WKTextRange does so that -[WKTextRange selectionRectsForRange] returns
an array of WKTextSelectionRects by writing WKTextRange in terms of NSArray<WKTextSelectionRect *>*.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _uiTextSelectionRects]):
(-[WKContentView selectedTextRange]):
(-[WKContentView selectionRectsForRange:]):

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

(-[WKTextSelectionRect initWithSelectionRect:]):
(-[WKTextSelectionRect rect]):
(-[WKTextSelectionRect writingDirection]):
(-[WKTextSelectionRect containsStart]):
(-[WKTextSelectionRect containsEnd]):
(-[WKTextSelectionRect isVertical]):
(-[WKTextSelectionRect initWithWebRect:]): Deleted.
(-[WKTextSelectionRect dealloc]): Deleted.
(+[WKTextSelectionRect textSelectionRectsWithWebRects:]): Deleted.

10:04 AM Changeset in webkit [257851] by dbates@webkit.org
  • 4 edits
    2 adds in trunk/Source/WebKit

Move WKTextSelectionRect into its own file
https://bugs.webkit.org/show_bug.cgi?id=208561

Reviewed by Alex Christensen.

WKTextSelectionRect is currently defined in WKContentViewInteraction.mm. Separate it
out into its own file to improve project organization and de-clutter WKContentViewInteraction.mm.

  • SourcesCocoa.txt:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKTextSelectionRect initWithWebRect:]): Deleted.
(-[WKTextSelectionRect dealloc]): Deleted.
(+[WKTextSelectionRect textSelectionRectsWithWebRects:]): Deleted.
(-[WKTextSelectionRect rect]): Deleted.
(-[WKTextSelectionRect writingDirection]): Deleted.
(-[WKTextSelectionRect range]): Deleted.
(-[WKTextSelectionRect containsStart]): Deleted.
(-[WKTextSelectionRect containsEnd]): Deleted.
(-[WKTextSelectionRect isVertical]): Deleted.

  • UIProcess/ios/WKTextSelectionRect.h: Added.
  • UIProcess/ios/WKTextSelectionRect.mm: Added.

(-[WKTextSelectionRect initWithWebRect:]):
(-[WKTextSelectionRect dealloc]):
(+[WKTextSelectionRect textSelectionRectsWithWebRects:]):
(-[WKTextSelectionRect rect]):
(-[WKTextSelectionRect writingDirection]):
(-[WKTextSelectionRect range]):
(-[WKTextSelectionRect containsStart]):
(-[WKTextSelectionRect containsEnd]):
(-[WKTextSelectionRect isVertical]):

  • WebKit.xcodeproj/project.pbxproj:
9:55 AM Changeset in webkit [257850] by Alan Bujtas
  • 3 edits in trunk/LayoutTests

Unreviewed test gardening after r257764.

9:53 AM Changeset in webkit [257849] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION (r257840?) [ Mac wk2 Release ] fast/hidpi/image-srcset-relative-svg-canvas.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208577

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
9:40 AM Changeset in webkit [257848] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[ews] Add build step to create local git commit for commit-queue
https://bugs.webkit.org/show_bug.cgi?id=208539

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(CreateLocalGITCommit): Build step to create local git commit.
(CreateLocalGITCommit.start):
(CreateLocalGITCommit.getResultSummary): Set custom failure message.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Added unit-tests and restructured imports.
  • BuildSlaveSupport/ews-build/factories.py:
8:53 AM Changeset in webkit [257847] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac ] mathml/scripts-removeChild.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208574

Unreviewed test gardening.

  • platform/mac/TestExpectations:
8:34 AM Changeset in webkit [257846] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Avoid full style resolution on Element::focus()
https://bugs.webkit.org/show_bug.cgi?id=208504
<rdar://problem/60035288>

Unreviewed followup.

  • dom/Element.cpp:

(WebCore::Element::resolveComputedStyle):
(WebCore::Element::isVisibleWithoutResolvingFullStyle const):

Emilio spotted that this neeeds to be a composed ancestor walk to match resolveComputedStyle.

8:31 AM Changeset in webkit [257845] by youenn@apple.com
  • 4 edits in trunk/Source/WebKit

WebChromeClient::createImageBuffer should not create a connection to GPU Process if page does not want remote rendering
https://bugs.webkit.org/show_bug.cgi?id=208567
rdar://problem/60020229

Reviewed by Wenson Hsieh.

Manually tested.

  • WebProcess/GPU/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::createImageBuffer):
Minor refactoring to directly take a ShouldAccelerate instead of a RenderingMode.

  • WebProcess/GPU/graphics/RemoteRenderingBackend.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createImageBuffer const):
In case page does not want to do remote rendering, do not create a remote image buffer.
Instead, return null and let the caller create a local image buffer.

8:17 AM Changeset in webkit [257844] by Simon Fraser
  • 11 edits in trunk

(r256513) [ Mac ] fast/scrolling/programmatic-scroll-to-zero-zero.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=207948

Reviewed by Zalan Bujtas.

Source/WebCore:

It was possible for WheelEventTestMonitor to fire the callback before receiving any wheel events, if
no deferral reasons happened before the timer fires. Let's require at least one deferral.

There was no deferral for main-thread iframe wheel event handling, so add that so that tests that
slow-scroll iframes work.

Should de-flake fast/scrolling/programmatic-scroll-to-zero-zero.html and maybe other tests.

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleWheelEvent):

  • page/WheelEventTestMonitor.cpp:

(WebCore::WheelEventTestMonitor::clearAllTestDeferrals):
(WebCore::WheelEventTestMonitor::deferForReason):
(WebCore::WheelEventTestMonitor::triggerTestTimerFired):
(WebCore::operator<<):

  • page/WheelEventTestMonitor.h:

(WebCore::WheelEventTestMonitorCompletionDeferrer::WheelEventTestMonitorCompletionDeferrer):
(WebCore::WheelEventTestMonitorCompletionDeferrer::~WheelEventTestMonitorCompletionDeferrer):

Tools:

EventSendingController needs to trigger layout so that the WebHTMLView is not 0x0,
so that it receives the wheel events.

  • DumpRenderTree/mac/EventSendingController.mm:

(-[EventSendingController mouseScrollByX:andY:withWheel:andMomentumPhases:]):

  • DumpRenderTree/win/EventSender.cpp:

(mouseScrollBy):

LayoutTests:

Remove line for fast/scrolling/programmatic-scroll-to-zero-zero.html.
Skip two Windows tests that, for unknown reasons, no longer get any scrolling
triggers.

  • platform/mac-wk2/TestExpectations:
  • platform/win/TestExpectations:
8:15 AM Changeset in webkit [257843] by Kocsen Chung
  • 1 edit in branches/safari-610.1.6-branch/Source/WebKit/Shared/WebPreferencesDefaultValues.h

Apply Patch. rdar://problem/60019706.

7:52 AM Changeset in webkit [257842] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ iOS ] webrtc/video-replace-track.html has been flaky failing on iOS
https://bugs.webkit.org/show_bug.cgi?id=208573

Unreviewed test gardening

  • platform/ios-wk2/TestExpectations:
7:19 AM Changeset in webkit [257841] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Display::Run::TextContent::expand(unsigned) is called with the value of -1.
https://bugs.webkit.org/show_bug.cgi?id=208558
<rdar://problem/60026658>

Reviewed by Antti Koivisto.

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::TextContent::shrink):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::Run::removeTrailingWhitespace):

6:53 AM Changeset in webkit [257840] by Alan Bujtas
  • 19 edits in trunk

[First paint] Going from visually empty to non-empty should immediately trigger layer unfreezing
https://bugs.webkit.org/show_bug.cgi?id=208385
<rdar://problem/59895900>

Reviewed by Antti Koivisto.
Source/WebCore:

Now that VNE check and layout are decoupled, we should also decouple the VNE layout milestone and
layer unfreezing.
In many cases a style change does not initiate synchronous layout (see Document::updateStyleIfNeeded) which
potentially delays the first paint. This patch ensure that we unfreeze the layer tree and issue paint soon after
the style change produced a VNE content.

  • loader/EmptyFrameLoaderClient.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::didReachVisuallyNonEmptyState):

  • loader/FrameLoader.h:
  • loader/FrameLoaderClient.h:
  • page/FrameView.cpp:

(WebCore::FrameView::styleAndRenderTreeDidChange):
(WebCore::FrameView::checkAndDispatchDidReachVisuallyNonEmptyState):
(WebCore::FrameView::fireLayoutRelatedMilestonesIfNeeded):
(WebCore::FrameView::qualifiesAsVisuallyNonEmpty const): Deleted.

  • page/FrameView.h:

Source/WebKit:

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidReachLayoutMilestone):
(WebKit::WebFrameLoaderClient::dispatchDidReachVisuallyNonEmptyState):

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

(WebKit::WebPage::didCompletePageTransition):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::resetIdempotentTextAutosizingIfNeeded): We don't have this case anymore.

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::scheduleRenderingUpdate):

LayoutTests:

  • fast/scrolling/scroll-animator-overlay-scrollbars-clicked-expected.txt:
  • fast/scrolling/scroll-animator-overlay-scrollbars-clicked.html:
  • fast/scrolling/scroll-animator-overlay-scrollbars-hovered-expected.txt:
  • fast/scrolling/scroll-animator-overlay-scrollbars-hovered.html:
4:11 AM Changeset in webkit [257839] by Antti Koivisto
  • 15 edits
    2 adds in trunk

Avoid full style resolution on Element::focus()
https://bugs.webkit.org/show_bug.cgi?id=208504

Reviewed by Zalan Bujtas.

Source/WebCore:

Element::focus() currently triggers full style resolution both before (to compute element visibility)
and after (for no particular reason).

Resolving style can be costly if there are further DOM mutations that end up invalidating it again.
This patch adds a cheaper single-element way to computing visibility and uses it for focus().

This appears to be 3-4% Speedometer progression.

Test: fast/forms/focus-after-visibility-change.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::focusedUIElementForPage):

AX code assumes renderers have exist for focused element so ensure style is up to date.

  • dom/Document.cpp:

(WebCore::Document::setFocusedElement):

Remove style resolution.

  • dom/Element.cpp:

(WebCore::Element::isFocusable const):

Use isVisibleWithoutResolvingFullStyle helper.

(WebCore::Element::focus):

Avoid style resolution if the element is in a subtree that doesn't have renderers yet.

(WebCore::Element::resolveComputedStyle):

Add a mode where we bail out when we figure out we are in display:none subtree.

(WebCore::Element::hasValidStyle const):

See if we already have valid style.

(WebCore::Element::isVisibleWithoutResolvingFullStyle const):

Use computed style mechanism for subtrees that have no renderers yet.

(WebCore::Element::computedStyle):

  • dom/Element.h:
  • html/HTMLAreaElement.cpp:

(WebCore::HTMLAreaElement::isFocusable const):

Use isVisibleWithoutResolvingFullStyle here too.

  • html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::platformHandleKeydownEvent):
(WebCore::HTMLSelectElement::menuListDefaultEventHandler):

Update style after explicit focus() calls to keep the existing behavior.

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::setRangeText):

Ensure the renderer is created.

  • html/shadow/SpinButtonElement.cpp:

(WebCore::SpinButtonElement::forwardEvent):

Remove unneeded renderer test.

LayoutTests:

  • fast/events/keypress-removed-node-expected.txt:
  • fast/events/keypress-removed-node.html:

Modify the test so it is not sensitive to non-rendered whitespace changes
(caused by timing of render tree updates).

  • fast/forms/autofocus-input-css-style-change.html:

Read the <input autofocus> :focus style in rAF as focusing happens asynchronously. This matches other browsers.

  • fast/forms/focus-after-visibility-change-expected.txt: Added.
  • fast/forms/focus-after-visibility-change.html: Added.

Add a simple test for visibility style change after renderer has already be created.

3:47 AM Changeset in webkit [257838] by Andres Gonzalez
  • 2 edits in trunk/Tools

REGRESSION (r257739): two fast/events/autoscroll test have started to fail
https://bugs.webkit.org/show_bug.cgi?id=208520
<rdar://problem/60000214>

Reviewed by Chris Fleizach.

Calling InjectedBundle::singleton().page()->page() in the constructor
of the AccessibilityController is having this side effect on iOS.
So #if to MAC where it's actually being used.

  • WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:

(WTR::AccessibilityController::AccessibilityController):

12:56 AM Changeset in webkit [257837] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

[GTK][WPE] Use restore view icon for exit fullscreen button in media controls
https://bugs.webkit.org/show_bug.cgi?id=208511

Reviewed by Xabier Rodriguez-Calvar.

We currently use view fullscreen for both entering and leaving.

  • Modules/mediacontrols/mediaControlsAdwaita.css:

(video::-webkit-media-controls-fullscreen-button.exit):
(audio::-webkit-media-controls-fullscreen-button,): Deleted.
(audio::-webkit-media-controls-fullscreen-button.hidden,): Deleted.

  • Modules/mediacontrols/mediaControlsAdwaita.js:

(Controller.prototype.handleFullscreenChange):

12:54 AM Changeset in webkit [257836] by Carlos Garcia Campos
  • 4 edits in trunk

[GTK][WPE] Stop adding volume-box class to volume box element
https://bugs.webkit.org/show_bug.cgi?id=208510

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

The class was removed in r257705 because it's not used by our css.

  • Modules/mediacontrols/mediaControlsAdwaita.js:

(Controller.prototype.createControls):

LayoutTests:

Update expectations of http/tests/media/hls/video-controls-live-stream.html.

  • platform/gtk/http/tests/media/hls/video-controls-live-stream-expected.txt:
Note: See TracTimeline for information about the timeline view.