Timeline



Feb 5, 2019:

11:54 PM Changeset in webkit [241012] by Claudio Saavedra
  • 2 edits in trunk/Source/WebCore

[FreeType] Build fix for Debian stable

Unreviewed build fix.

Debian stable currently has a version of fontconfig that doesn't
yet have FC_COLOR. #ifdef its use to fix the build.

  • platform/graphics/freetype/FontCacheFreeType.cpp:

(WebCore::FontCache::systemFallbackForCharacters):

10:54 PM Changeset in webkit [241011] by Nikita Vasilyev
  • 6 edits in trunk

Web Inspector: Styles: PropertiesChanged shouldn't fire when old and new text are both empty
https://bugs.webkit.org/show_bug.cgi?id=194318

Reviewed by Devin Rousso.

Source/WebInspectorUI:

Previously, WI.CSSStyleDeclaration.Event.PropertiesChanged fired when
old text and new text were empty strings.

  • UserInterface/Models/CSSStyleDeclaration.js:

LayoutTests:

Fix the flaky test on Debug.

  • inspector/css/modify-css-property-race-expected.txt:
  • inspector/css/modify-css-property-race.html:
9:52 PM Changeset in webkit [241010] by Megan Gardner
  • 5 edits
    1 move
    1 add
    3 deletes in trunk/LayoutTests

[iOS] Layout tests editing/pasteboard/smart-paste-007.html and editing/pasteboard/smart-paste-008.html are failing
https://bugs.webkit.org/show_bug.cgi?id=194275

Reviewed by Ryosuke Niwa.

Smart paste tests 7 and 8 were outputting more information that was needed
to verify correct functionality. Also cleaned up test 8 to be more similar to
the other smart copy paste tests.

  • editing/pasteboard/smart-paste-007.html:
  • editing/pasteboard/smart-paste-008.html:
  • platform/ios-wk1/editing/pasteboard/smart-paste-007-expected.txt: Removed.
  • platform/ios-wk1/editing/pasteboard/smart-paste-008-expected.txt: Removed.
  • platform/ios-wk2/editing/pasteboard/smart-paste-008-expected.txt: Removed.
  • platform/ios/editing/pasteboard/smart-paste-007-expected.txt: Renamed from LayoutTests/platform/ios-wk2/editing/pasteboard/smart-paste-007-expected.txt.
  • platform/ios/editing/pasteboard/smart-paste-008-expected.txt: Added.
  • platform/mac/editing/pasteboard/smart-paste-007-expected.txt:
  • platform/mac/editing/pasteboard/smart-paste-008-expected.txt:
8:26 PM Changeset in webkit [241009] by Wenson Hsieh
  • 5 edits in trunk

Rename TestOptions.ignoreSynchronousMessagingTimeoutsForTesting
https://bugs.webkit.org/show_bug.cgi?id=194324

Reviewed by Andy Estes.

Tools:

Rename ignoreSynchronousMessagingTimeoutsForTesting to just ignoreSynchronousMessagingTimeouts. The -ForTesting
part of the name is already implicit, since this is in testing code in TestOptions.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::generateContextConfiguration const):
(WTR::updateTestOptionsFromTestHeader):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

LayoutTests:

  • fast/events/touch/ios/show-modal-alert-during-touch-start.html:
6:10 PM Changeset in webkit [241008] by commit-queue@webkit.org
  • 28 edits in trunk/Source

Stop using blobRegistry in NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=194027

Patch by Alex Christensen <achristensen@webkit.org> on 2019-02-05
Reviewed by Youenn Fablet.

Source/WebCore:

Also stop using NetworkBlobRegistry::singleton.
Instead, have the NetworkProcess own a NetworkBlobRegistry which owns a BlobRegistryImpl.
We now have to resolve all blob file references while we still have a
NetworkConnectionToWebProcess/NetworkProcess/NetworkBlobRegistry/BlobRegistryImpl instead of
using the singleton after we have passed everything to the loading code, but it works the same
as it did before. We must consume the sandbox extension from the BlobRegistryImpl before using
the resolved files, so I pass around a Vector<RefPtr<WebCore::BlobDataFileReference>> so we know
which extensions to revoke.

  • platform/network/BlobRegistryImpl.h:
  • platform/network/FormData.cpp:

(WebCore::appendBlobResolved):
(WebCore::FormData::resolveBlobReferences):

  • platform/network/FormData.h:
  • platform/network/cf/FormDataStreamCFNet.cpp:

(WebCore::createHTTPBodyCFReadStream):

  • platform/network/curl/CurlFormDataStream.cpp:

(WebCore::CurlFormDataStream::CurlFormDataStream):

Source/WebKit:

  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::startDownload):

  • NetworkProcess/Downloads/PendingDownload.cpp:

(WebKit::PendingDownload::PendingDownload):

  • NetworkProcess/Downloads/PendingDownload.h:
  • NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:

(WebKit::NetworkBlobRegistry::registerFileBlobURL):
(WebKit::NetworkBlobRegistry::registerBlobURL):
(WebKit::NetworkBlobRegistry::registerBlobURLOptionallyFileBacked):
(WebKit::NetworkBlobRegistry::registerBlobURLForSlice):
(WebKit::NetworkBlobRegistry::unregisterBlobURL):
(WebKit::NetworkBlobRegistry::blobSize):
(WebKit::NetworkBlobRegistry::writeBlobsToTemporaryFiles):
(WebKit::NetworkBlobRegistry::writeBlobToFilePath):
(WebKit::NetworkBlobRegistry::connectionToWebProcessDidClose):
(WebKit::NetworkBlobRegistry::filesInBlob):
(WebKit::NetworkBlobRegistry::singleton): Deleted.

  • NetworkProcess/FileAPI/NetworkBlobRegistry.h:

(WebKit::NetworkBlobRegistry::blobRegistry):

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::didClose):
(WebKit::NetworkConnectionToWebProcess::resolveBlobReferences):
(WebKit::NetworkConnectionToWebProcess::scheduleResourceLoad):
(WebKit::NetworkConnectionToWebProcess::performSynchronousLoad):
(WebKit::NetworkConnectionToWebProcess::loadPing):
(WebKit::NetworkConnectionToWebProcess::preconnectTo):
(WebKit::NetworkConnectionToWebProcess::registerFileBlobURL):
(WebKit::NetworkConnectionToWebProcess::registerBlobURL):
(WebKit::NetworkConnectionToWebProcess::registerBlobURLFromURL):
(WebKit::NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked):
(WebKit::NetworkConnectionToWebProcess::registerBlobURLForSlice):
(WebKit::NetworkConnectionToWebProcess::unregisterBlobURL):
(WebKit::NetworkConnectionToWebProcess::blobSize):
(WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
(WebKit::NetworkConnectionToWebProcess::filesInBlob):
(WebKit::NetworkConnectionToWebProcess::blobRegistry):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkDataTask.cpp:

(WebKit::NetworkDataTask::create):

  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob):

  • NetworkProcess/NetworkDataTaskBlob.h:
  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::NetworkLoad):
(WebKit::NetworkLoad::initialize):

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::NetworkProcess):
(WebKit::NetworkProcess::removeNetworkConnectionToWebProcess):

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::networkBlobRegistry):

  • NetworkProcess/NetworkProcessPlatformStrategies.cpp:

(WebKit::NetworkProcessPlatformStrategies::createBlobRegistry):

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::m_shouldCaptureExtraNetworkLoadMetrics):
(WebKit::NetworkResourceLoader::startNetworkLoad):

  • NetworkProcess/PreconnectTask.cpp:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:

(WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):

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

Fix a typo in r241006. Substitute Modifier for Modifiers.

  • Shared/mac/NativeWebGestureEventMac.mm:

(WebKit::NativeWebGestureEvent::NativeWebGestureEvent):

5:42 PM Changeset in webkit [241006] by dbates@webkit.org
  • 3 edits in trunk/Source/WebKit

Attempt to fix the build following r241000
(https://bugs.webkit.org/show_bug.cgi?id=194241)

Substitute OptionSet<WebEvent::Modifier> for Modifiers.

  • Shared/mac/NativeWebGestureEventMac.mm:

(WebKit::NativeWebGestureEvent::NativeWebGestureEvent):

  • Shared/mac/WebGestureEvent.h:

(WebKit::WebGestureEvent::WebGestureEvent):

5:02 PM Changeset in webkit [241005] by Truitt Savell
  • 27 edits in trunk/Source

Unreviewed, rolling out r240984.

Revision casued two API timeouts

Reverted changeset:

"Stop using blobRegistry in NetworkProcess"
https://bugs.webkit.org/show_bug.cgi?id=194027
https://trac.webkit.org/changeset/240984

5:01 PM Changeset in webkit [241004] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Lots of time spent updating related resources in ResourceDetailsSidebar when loading a page with lots of resources
https://bugs.webkit.org/show_bug.cgi?id=159577
<rdar://problem/27251461>

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/ResourceDetailsSidebarPanel.js:

(WI.ResourceDetailsSidebarPanel.prototype._refreshRelatedResourcesSection):
(WI.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):

4:55 PM Changeset in webkit [241003] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Elements tab: selection is broken after deleting the selected node
https://bugs.webkit.org/show_bug.cgi?id=194300
<rdar://problem/47829275>

Reviewed by Devin Rousso.

Deleting a TreeElement can cause an IndexSet including indexes
outside the deleted range to be passed to SelectionController,
corrupting the internal selection state.

  • UserInterface/Views/TreeOutline.js:

(WI.TreeOutline.prototype._indexesForSubtree.numberOfElementsInSubtree): Added.
(WI.TreeOutline.prototype._indexesForSubtree):
Finding the last (rightmost leaf) TreeElement in the subtree used
TreeElement.prototype.traverseNextElement to do a depth first traversal.
This method did not stay within the subtree rooted at treeElement.

4:49 PM Changeset in webkit [241002] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

UserMediaPermissionRequestManagerProxy lambdas should check for 'this' being valid
https://bugs.webkit.org/show_bug.cgi?id=194246

Reviewed by Eric Carlson.

With PSON enabled, the manager proxy can be destroyed.
It is thus important for its callbacks to check for 'this' to be valid.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):

4:39 PM Changeset in webkit [241001] by dbates@webkit.org
  • 8 edits in trunk/Source/WebKit

Attempt to fix the build following r241000
(https://bugs.webkit.org/show_bug.cgi?id=194241)

Substitute WebEvent::Modifier::CapsLockKey for WebEvent::CapsLockKey.

  • Shared/gtk/WebEventFactory.cpp:

(WebKit::modifiersForEvent):

  • Shared/mac/WebEventFactory.mm:

(WebKit::modifiersForEvent):

  • UIProcess/API/Cocoa/WKNavigationAction.mm:

(toNSEventModifierFlags):

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::protocolModifierToWebEventModifier):

  • UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:

(WebKit::modifiersToEventState):

  • UIProcess/Automation/mac/WebAutomationSessionMac.mm:

(WebKit::WebAutomationSession::platformSimulateMouseInteraction):

  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::toNSEventModifierFlags):

4:21 PM Changeset in webkit [241000] by dbates@webkit.org
  • 43 edits in trunk/Source/WebKit

Make WebEvent::Modifiers an OptionSet
https://bugs.webkit.org/show_bug.cgi?id=194241

Reviewed by Simon Fraser.

Use an OptionSet to represent the bitmask of keyboard modifier flags. This improves type safety
and makes debugging more enjoyable because our LLDB pretty-printers have built-in support for
OptionSet.

While I am at it, make WebEvent::Modifier an enum class. It is currently an enum. This makes
this enum more closely match WebCore::PlatformEvent::Modifier.

  • Shared/API/c/WKSharedAPICast.h:

(WebKit::toAPI):

  • Shared/NavigationActionData.cpp:

(WebKit::NavigationActionData::encode const):
(WebKit::NavigationActionData::decode):

  • Shared/NavigationActionData.h:
  • Shared/WebEvent.cpp:

(WebKit::WebEvent::WebEvent):

  • Shared/WebEvent.h:

(WebKit::WebEvent::shiftKey const):
(WebKit::WebEvent::controlKey const):
(WebKit::WebEvent::altKey const):
(WebKit::WebEvent::metaKey const):
(WebKit::WebEvent::capsLockKey const):
(WebKit::WebEvent::modifiers const):
(WebKit::WebTouchEvent::WebTouchEvent):

  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):

  • Shared/WebKeyboardEvent.cpp:

(WebKit::WebKeyboardEvent::WebKeyboardEvent):

  • Shared/WebMouseEvent.cpp:

(WebKit::WebMouseEvent::WebMouseEvent):

  • Shared/WebTouchEvent.cpp:

(WebKit::WebTouchEvent::WebTouchEvent):

  • Shared/WebWheelEvent.cpp:

(WebKit::WebWheelEvent::WebWheelEvent):

  • Shared/gtk/WebEventFactory.cpp:

(WebKit::modifiersForEvent):

  • Shared/ios/NativeWebTouchEventIOS.mm:

(WebKit::NativeWebTouchEvent::NativeWebTouchEvent):

  • Shared/ios/WebIOSEventFactory.mm:

(modifiersForEvent):
(WebIOSEventFactory::createWebKeyboardEvent):
(WebIOSEventFactory::createWebMouseEvent):

  • Shared/libwpe/WebEventFactory.cpp:

(WebKit::modifiersForEventModifiers):
(WebKit::WebEventFactory::createWebWheelEvent):
(WebKit::WebEventFactory::createWebTouchEvent):

  • Shared/mac/WebEventFactory.mm:

(WebKit::modifiersForEvent):
(WebKit::WebEventFactory::createWebMouseEvent):
(WebKit::WebEventFactory::createWebWheelEvent):
(WebKit::WebEventFactory::createWebKeyboardEvent):

  • Shared/win/WebEventFactory.cpp:

(WebKit::modifiersForEvent):
(WebKit::modifiersForCurrentKeyState):
(WebKit::WebEventFactory::createWebMouseEvent):
(WebKit::WebEventFactory::createWebWheelEvent):
(WebKit::WebEventFactory::createWebKeyboardEvent):

  • UIProcess/API/APINavigationAction.h:
  • UIProcess/API/APIUIClient.h:

(API::UIClient::mouseDidMoveOverElement):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/Cocoa/WKNavigationAction.mm:

(toNSEventModifierFlags):

  • UIProcess/API/glib/WebKitPrivate.cpp:

(toPlatformModifiers):

  • UIProcess/API/glib/WebKitPrivate.h:
  • UIProcess/API/glib/WebKitUIClient.cpp:
  • UIProcess/API/glib/WebKitWebView.cpp:

(webkitWebViewMouseTargetChanged):

  • UIProcess/API/glib/WebKitWebViewPrivate.h:
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::simulateMouseInteraction):
(WebKit::protocolModifierToWebEventModifier):
(WebKit::WebAutomationSession::performMouseInteraction):

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:

(WebKit::modifiersToEventState):
(WebKit::WebAutomationSession::platformSimulateMouseInteraction):

  • UIProcess/Automation/mac/WebAutomationSessionMac.mm:

(WebKit::WebAutomationSession::platformSimulateMouseInteraction):

  • UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp:

(WebKit::modifiersToEventState):
(WebKit::WebAutomationSession::platformSimulateMouseInteraction):

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

(WebKit::toNSEventModifierFlags):
(WebKit::UIDelegate::UIClient::mouseDidMoveOverElement):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::mouseDidMoveOverElement):

  • WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h:

(API::InjectedBundle::PageUIClient::mouseDidMoveOverElement):

  • WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:

(WebKit::InjectedBundleNavigationAction::modifiersForNavigationAction):

  • WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:

(WebKit::InjectedBundleNavigationAction::modifiers const):

  • WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:

(WebKit::InjectedBundlePageUIClient::mouseDidMoveOverElement):

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

(WebKit::PDFPlugin::showContextMenuAtPoint):

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::createWebEvent const):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::mouseDidMoveOverElement):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::simulateMouseDown):
(WebKit::WebPage::simulateMouseUp):
(WebKit::WebPage::simulateMouseMotion):

3:43 PM Changeset in webkit [240999] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Allow * as platform for builders and workers
https://bugs.webkit.org/show_bug.cgi?id=188533

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/loadConfig.py:

(checkWorkersAndBuildersForConsistency):

3:34 PM Changeset in webkit [240998] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Fix DFG's doesGC() for a few more nodes.
https://bugs.webkit.org/show_bug.cgi?id=194307
<rdar://problem/47832956>

Reviewed by Yusuke Suzuki.

Fix doesGC() for the following nodes:

NumberToStringWithValidRadixConstant:

Calls operationInt32ToStringWithValidRadix(), which calls int32ToString(),
which can allocate a string.
Calls operationInt52ToStringWithValidRadix(), which calls int52ToString(),
which can allocate a string.
Calls operationDoubleToStringWithValidRadix(), which calls numberToString(),
which can allocate a string.

RegExpExecNonGlobalOrSticky: calls createRegExpMatchesArray() which allocates

memory for all kinds of objects.

RegExpMatchFast: calls operationRegExpMatchFastString(), which calls

RegExpObject::execInline() and RegExpObject::matchGlobal(). Both of
these allocates memory for the match result.

RegExpMatchFastGlobal: calls operationRegExpMatchFastGlobalString(), which

calls RegExpObject's collectMatches(), which allocates an array amongst
other objects.

StringFromCharCode:

If the uint32 code to convert is greater than maxSingleCharacterString,
we'll call operationStringFromCharCode(), which calls jsSingleCharacterString(),
which allocates a new string if the code is greater than maxSingleCharacterString.

Also fix SpeculativeJIT::compileFromCharCode() and FTL's compileStringFromCharCode()
to use maxSingleCharacterString instead of a literal constant.

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileFromCharCode):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileStringFromCharCode):

3:33 PM Changeset in webkit [240997] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION (r240947): Resources tab: can't select main frame after refreshing page
https://bugs.webkit.org/show_bug.cgi?id=194254
<rdar://problem/47805023>

Reviewed by Devin Rousso.

  • UserInterface/Views/TreeOutline.js:

(WI.TreeOutline.prototype.selectionControllerSelectionDidChange):
TreeOutline should always call the TreeElement select and deselect
methods while processing selection changes. Having notifications
suppressed by this._suppressNextSelectionDidChangeEvent should only
affect the dispatching of TreeOutline events.

3:17 PM Changeset in webkit [240996] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Add few bots to config.json
https://bugs.webkit.org/show_bug.cgi?id=194304

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/config.json:
3:01 PM Changeset in webkit [240995] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Reproducible crash under WKShareSheet presentWithParameters when cancelling a share
https://bugs.webkit.org/show_bug.cgi?id=194301
<rdar://problem/47719379>

Reviewed by Beth Dakin.

  • UIProcess/Cocoa/WKShareSheet.mm:

(-[WKShareSheet presentWithParameters:completionHandler:]):
NSSharingServicePicker's delegate callbacks can be called synchronously.
We release the WKShareSheet (which holds our reference to the NSSharingServicePicker)
under sharingServicePicker:didChooseSharingService:. On older versions of macOS,
there was nothing keeping the NSSharingServicePicker alive inside
showRelativeToRect:ofView:preferredEdge:, thus the whole chain of references would
fall and result in sending a message to a released NSSharingServicePicker.
To resolve this, keep an extra reference to the WKShareSheet until
presentation is complete.

2:58 PM Changeset in webkit [240994] by Keith Rollin
  • 10 edits
    3 deletes in trunk

Enable the automatic checking and regenerations of .xcfilelists during builds
https://bugs.webkit.org/show_bug.cgi?id=194124
<rdar://problem/47721277>

Reviewed by Tim Horton.

Bug 193790 add a facility for checking -- during build time -- that
any needed .xcfilelist files are up-to-date and for updating them if
they are not. This facility was initially opt-in by setting
WK_ENABLE_CHECK_XCFILELISTS until other pieces were in place and until
the process seemed robust. Its now time to enable this facility and
make it opt-out. If there is a need to disable this facility, set and
export WK_DISABLE_CHECK_XCFILELISTS=1 in your environment before
running make or build-webkit, or before running Xcode from the
command line.

Additionally, remove the step that generates a list of source files
going into the UnifiedSources build step. It's only necessarily to
specify Sources.txt and SourcesCocoa.txt as inputs.

Source/JavaScriptCore:

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • UnifiedSources-input.xcfilelist: Removed.

Source/WebCore:

No new tests since there should be no observable behavior difference.

  • UnifiedSources-input.xcfilelist: Removed.
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

  • UnifiedSources-input.xcfilelist: Removed.
  • WebKit.xcodeproj/project.pbxproj:

Source/WTF:

  • Scripts/generate-unified-source-bundles.rb:

Tools:

  • Scripts/generate-xcfilelists:
2:53 PM Changeset in webkit [240993] by Keith Rollin
  • 6 edits in trunk/Source

Update .xcfilelist files
https://bugs.webkit.org/show_bug.cgi?id=194121
<rdar://problem/47720863>

Reviewed by Tim Horton.

Preparatory to enabling the facility for automatically updating the
.xcfilelist files, check in a freshly-updated set so that not everyone
runs up against having to regenerate them themselves.

Source/JavaScriptCore:

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:

Source/WebCore:

No new tests since there should be no observable behavior difference.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
2:09 PM Changeset in webkit [240992] by andy@vanwagoner.family
  • 3 edits in trunk/Source/JavaScriptCore

[INTL] improve efficiency of Intl.NumberFormat formatToParts
https://bugs.webkit.org/show_bug.cgi?id=185557

Reviewed by Mark Lam.

Since field nesting depth is minimal, this algorithm should be effectively O(n),
where n is the number of characters in the formatted string.
It may be less memory efficient than the previous impl, since the intermediate Vector
is the length of the string, instead of the count of the fields.

  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::formatToParts):

  • runtime/IntlNumberFormat.h:
1:59 PM Changeset in webkit [240991] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Move DFG nodes that clobberize() says will write(Heap) to the doesGC() list that returns true.
https://bugs.webkit.org/show_bug.cgi?id=194298
<rdar://problem/47827555>

Reviewed by Saam Barati.

We do this for 3 reasons:

  1. It's clearer when reading doesGC()'s code that these nodes will return true.
  2. If things change in the future where clobberize() no longer reports these nodes as write(Heap), each node should be vetted first to make sure that it can never GC before being moved back to the doesGC() list that returns false.
  3. This reduces the list of nodes that we need to audit to make sure doesGC() is correct in its claims about the nodes' GCing possibility.

The list of nodes moved are:

ArrayPush
ArrayPop
Call
CallEval
CallForwardVarargs
CallVarargs
Construct
ConstructForwardVarargs
ConstructVarargs
DefineDataProperty
DefineAccessorProperty
DeleteById
DeleteByVal
DirectCall
DirectConstruct
DirectTailCallInlinedCaller
GetById
GetByIdDirect
GetByIdDirectFlush
GetByIdFlush
GetByIdWithThis
GetByValWithThis
GetDirectPname
GetDynamicVar
HasGenericProperty
HasOwnProperty
HasStructureProperty
InById
InByVal
InstanceOf
InstanceOfCustom
LoadVarargs
NumberToStringWithRadix
PutById
PutByIdDirect
PutByIdFlush
PutByIdWithThis
PutByOffset
PutByValWithThis
PutDynamicVar
PutGetterById
PutGetterByVal
PutGetterSetterById
PutSetterById
PutSetterByVal
PutStack
PutToArguments
RegExpExec
RegExpTest
ResolveScope
ResolveScopeForHoistingFuncDeclInEval
TailCall
TailCallForwardVarargsInlinedCaller
TailCallInlinedCaller
TailCallVarargsInlinedCaller
ToNumber
ToPrimitive
ValueNegate

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

1:27 PM Changeset in webkit [240990] by beidson@apple.com
  • 6 edits
    2 adds in trunk/Source/WebKit

Add a new DownloadMap type that manages taking an assertion automatically.
https://bugs.webkit.org/show_bug.cgi?id=194294

Reviewed by Alex Christensen.

If we don't need the download assertion, we use a vanilla HashMap like today.
If we need the download assertion, we use the new DownloadMap class instead.

The new DownloadMap is a wrapper around a HashMap that also creates/destroys the assertion as needed.

  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::dataTaskBecameDownloadTask):
(WebKit::DownloadManager::downloadFinished):

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/Downloads/DownloadMap.cpp: Added.

(WebKit::DownloadMap::get const):
(WebKit::DownloadMap::isEmpty const):
(WebKit::DownloadMap::size const):
(WebKit::DownloadMap::contains const):
(WebKit::DownloadMap::add):
(WebKit::DownloadMap::remove):

  • NetworkProcess/Downloads/DownloadMap.h: Added.
  • Sources.txt:
  • UIProcess/ios/ProcessAssertionIOS.mm:

(WebKit::ProcessAssertion::ProcessAssertion):

  • WebKit.xcodeproj/project.pbxproj:
12:35 PM Changeset in webkit [240989] by Nikita Vasilyev
  • 3 edits in trunk/LayoutTests

Web Inspector: Fix modify-css-property-race.html test failures
https://bugs.webkit.org/show_bug.cgi?id=194282

Reviewed by Matt Baker.

Fix test failures introduced by r240946 by providing a message for expectGreaterThan assert,
so it doesn't log the actual values.

  • inspector/css/modify-css-property-race-expected.txt:
  • inspector/css/modify-css-property-race.html:
12:30 PM Changeset in webkit [240988] by andy@vanwagoner.family
  • 4 edits in trunk/LayoutTests

REGRESSION(r238848): ICU upgrade broke jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout
https://bugs.webkit.org/show_bug.cgi?id=193620

Reviewed by Michael Catanzaro.

Update NumberFormat tests to be more tolerant of ICU version differences.

  • js/intl-numberformat-expected.txt:
  • js/script-tests/intl-numberformat.js:
  • platform/gtk/TestExpectations:
12:28 PM Changeset in webkit [240987] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[GTK][WPE] force libpsl build to use ICU in jhbuild
https://bugs.webkit.org/show_bug.cgi?id=194288

Patch by Olivier Blin <Olivier Blin> on 2019-02-05
Reviewed by Philippe Normand.

In jhbuild, libpsl depends on ICU, but its configure script may decide to use libidn instead of ICU.
This can cause build failures if libidn is detected but libunistring is not available.

Make sure that ICU is used for runtime and builtin PSL data.

  • gtk/jhbuild.modules:
  • wpe/jhbuild.modules:
12:19 PM Changeset in webkit [240986] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[ews-app] Modified timestamp should be updated on updating data
https://bugs.webkit.org/show_bug.cgi?id=194295

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/models/build.py:
  • BuildSlaveSupport/ews-app/ews/models/buildermapping.py:
  • BuildSlaveSupport/ews-app/ews/models/step.py:
11:11 AM Changeset in webkit [240985] by beidson@apple.com
  • 2 edits in trunk/Source/WebKit

Fix iOS simulator build after r240954

Unreviewed.

  • UIProcess/ios/ProcessAssertionIOS.mm:

(WebKit::ProcessAssertion::ProcessAssertion): Implement the new constructor.

10:58 AM Changeset in webkit [240984] by achristensen@apple.com
  • 27 edits in trunk/Source

Stop using blobRegistry in NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=194027

Reviewed by Youenn Fablet.

Source/WebCore:

Also stop using NetworkBlobRegistry::singleton.
Instead, have the NetworkProcess own a NetworkBlobRegistry which owns a BlobRegistryImpl.
We now have to resolve all blob file references while we still have a
NetworkConnectionToWebProcess/NetworkProcess/NetworkBlobRegistry/BlobRegistryImpl instead of
using the singleton after we have passed everything to the loading code, but it works the same
as it did before. We must consume the sandbox extension from the BlobRegistryImpl before using
the resolved files, so I pass around a Vector<RefPtr<WebCore::BlobDataFileReference>> so we know
which extensions to revoke.

  • platform/network/BlobRegistryImpl.h:
  • platform/network/FormData.cpp:

(WebCore::appendBlobResolved):
(WebCore::FormData::resolveBlobReferences):

  • platform/network/FormData.h:
  • platform/network/cf/FormDataStreamCFNet.cpp:

(WebCore::createHTTPBodyCFReadStream):

  • platform/network/curl/CurlFormDataStream.cpp:

(WebCore::CurlFormDataStream::CurlFormDataStream):

Source/WebKit:

  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::startDownload):

  • NetworkProcess/Downloads/PendingDownload.cpp:

(WebKit::PendingDownload::PendingDownload):

  • NetworkProcess/Downloads/PendingDownload.h:
  • NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:

(WebKit::NetworkBlobRegistry::registerFileBlobURL):
(WebKit::NetworkBlobRegistry::registerBlobURL):
(WebKit::NetworkBlobRegistry::registerBlobURLOptionallyFileBacked):
(WebKit::NetworkBlobRegistry::registerBlobURLForSlice):
(WebKit::NetworkBlobRegistry::unregisterBlobURL):
(WebKit::NetworkBlobRegistry::blobSize):
(WebKit::NetworkBlobRegistry::writeBlobsToTemporaryFiles):
(WebKit::NetworkBlobRegistry::writeBlobToFilePath):
(WebKit::NetworkBlobRegistry::connectionToWebProcessDidClose):
(WebKit::NetworkBlobRegistry::filesInBlob):
(WebKit::NetworkBlobRegistry::singleton): Deleted.

  • NetworkProcess/FileAPI/NetworkBlobRegistry.h:

(WebKit::NetworkBlobRegistry::blobRegistry):

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::didClose):
(WebKit::NetworkConnectionToWebProcess::resolveBlobReferences):
(WebKit::NetworkConnectionToWebProcess::scheduleResourceLoad):
(WebKit::NetworkConnectionToWebProcess::performSynchronousLoad):
(WebKit::NetworkConnectionToWebProcess::loadPing):
(WebKit::NetworkConnectionToWebProcess::preconnectTo):
(WebKit::NetworkConnectionToWebProcess::registerFileBlobURL):
(WebKit::NetworkConnectionToWebProcess::registerBlobURL):
(WebKit::NetworkConnectionToWebProcess::registerBlobURLFromURL):
(WebKit::NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked):
(WebKit::NetworkConnectionToWebProcess::registerBlobURLForSlice):
(WebKit::NetworkConnectionToWebProcess::unregisterBlobURL):
(WebKit::NetworkConnectionToWebProcess::blobSize):
(WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
(WebKit::NetworkConnectionToWebProcess::filesInBlob):
(WebKit::NetworkConnectionToWebProcess::blobRegistry):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkDataTask.cpp:

(WebKit::NetworkDataTask::create):

  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob):

  • NetworkProcess/NetworkDataTaskBlob.h:
  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::NetworkLoad):
(WebKit::NetworkLoad::initialize):

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::NetworkProcess):
(WebKit::NetworkProcess::removeNetworkConnectionToWebProcess):

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::networkBlobRegistry):

  • NetworkProcess/NetworkProcessPlatformStrategies.cpp:

(WebKit::NetworkProcessPlatformStrategies::createBlobRegistry):

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::m_shouldCaptureExtraNetworkLoadMetrics):
(WebKit::NetworkResourceLoader::startNetworkLoad):

  • NetworkProcess/PreconnectTask.cpp:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:

(WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):

10:39 AM Changeset in webkit [240983] by Ryan Haddad
  • 16 edits in trunk

Unreviewed, rolling out r240742.

Causes crashes on iOS simulator.

Reverted changeset:

"[iOS] Keyups for non-modifier keys identified as "Dead" when
not focused in a content-editable element"
https://bugs.webkit.org/show_bug.cgi?id=192824
https://trac.webkit.org/changeset/240742

10:33 AM Changeset in webkit [240982] by Jonathan Bedard
  • 3 edits in trunk/Tools

run-webkit-tests emits message "...running None" when running tests
https://bugs.webkit.org/show_bug.cgi?id=194133
<rdar://problem/47724738>

Reviewed by Lucas Forschler.

  • Scripts/webkitpy/xcode/device_type.py:

(DeviceType.str): Use both version mapping tables and use just the variant
name if no version name is available.

  • Scripts/webkitpy/xcode/device_type_unittest.py:

(DeviceTypeTest):
(DeviceTypeTest.test_unmapped_version): Test case where the version does not have
an associated named.

10:28 AM Changeset in webkit [240981] by ysuzuki@apple.com
  • 11 edits in trunk/Source

[JSC] Shrink sizeof(UnlinkedCodeBlock)
https://bugs.webkit.org/show_bug.cgi?id=194281

Reviewed by Michael Saboff.

Source/JavaScriptCore:

This patch first attempts to reduce the size of UnlinkedCodeBlock in a relatively simpler way. Reordering members, remove unused member, and
move rarely used members to RareData. This changes sizeof(UnlinkedCodeBlock) from 312 to 256.

Still we have several chances to reduce sizeof(UnlinkedCodeBlock). Making more Vectors to RefCountedArrays can be done with some restructuring
of generatorification phase. It would be possible to remove m_sourceURLDirective and m_sourceMappingURLDirective from UnlinkedCodeBlock since
they should be in SourceProvider and that should be enough. These changes require some intrusive modifications and we make them as a future work.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::bitVectors const): Deleted.

  • bytecode/CodeType.h:
  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::UnlinkedCodeBlock::shrinkToFit):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::bitVector):
(JSC::UnlinkedCodeBlock::addBitVector):
(JSC::UnlinkedCodeBlock::addSetConstant):
(JSC::UnlinkedCodeBlock::constantRegisters):
(JSC::UnlinkedCodeBlock::numberOfConstantIdentifierSets const):
(JSC::UnlinkedCodeBlock::constantIdentifierSets):
(JSC::UnlinkedCodeBlock::codeType const):
(JSC::UnlinkedCodeBlock::didOptimize const):
(JSC::UnlinkedCodeBlock::setDidOptimize):
(JSC::UnlinkedCodeBlock::usesGlobalObject const): Deleted.
(JSC::UnlinkedCodeBlock::setGlobalObjectRegister): Deleted.
(JSC::UnlinkedCodeBlock::globalObjectRegister const): Deleted.
(JSC::UnlinkedCodeBlock::bitVectors const): Deleted.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitLoad):
(JSC::BytecodeGenerator::emitLoadGlobalObject): Deleted.

  • bytecompiler/BytecodeGenerator.h:
  • runtime/CachedTypes.cpp:

(JSC::CachedCodeBlockRareData::encode):
(JSC::CachedCodeBlockRareData::decode const):
(JSC::CachedCodeBlock::scopeRegister const):
(JSC::CachedCodeBlock::codeType const):
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::CachedCodeBlock<CodeBlockType>::decode const):
(JSC::CachedCodeBlock<CodeBlockType>::encode):
(JSC::CachedCodeBlock::globalObjectRegister const): Deleted.

Source/WTF:

  • wtf/TriState.h:
10:23 AM Changeset in webkit [240980] by Kocsen Chung
  • 2 edits in tags/Safari-608.1.5/Source/WebCore

Revert r240738. rdar://problem/47810351

10:00 AM Changeset in webkit [240979] by Kocsen Chung
  • 1 copy in tags/Safari-608.1.5

Tag Safari-608.1.5.

9:44 AM Changeset in webkit [240978] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[WPE] require python3-setuptools for meson build in jhbuild
https://bugs.webkit.org/show_bug.cgi?id=194287

Patch by Olivier Blin <Olivier Blin> on 2019-02-05
Reviewed by Philippe Normand.

python3-setuptools is needed to build meson in jhbuild.
It is already required by the GTK port.

  • wpe/install-dependencies:
9:21 AM Changeset in webkit [240977] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-app] Add method to save BuilderMapping to database
https://bugs.webkit.org/show_bug.cgi?id=194264

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/models/buildermapping.py:

(BuilderMapping.str):
(BuilderMapping):
(BuilderMapping.save_mapping):
(BuilderMapping.update_mapping):
(BuilderMapping.get_existing_mapping):
(BuilderMapping.is_valid_mapping):

9:19 AM Changeset in webkit [240976] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-app] Add timestamp fields for BuilderMappings
https://bugs.webkit.org/show_bug.cgi?id=194266

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/models/buildermapping.py:

(BuilderMapping):

8:01 AM Changeset in webkit [240975] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] collectInlineContent should use pre-computed margins, paddings and borders
https://bugs.webkit.org/show_bug.cgi?id=194269

Reviewed by Antti Koivisto.

In this patch we pre-compute the margins padding and borders for formatting context roots, replaced boxes and non-replaced containers.
These property values are input to collectInlineContent's inline item detaching logic.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::nextInPreOrder):
(WebCore::Layout::InlineFormattingContext::layout const):
(WebCore::Layout::InlineFormattingContext::computeMarginBorderAndPadding const):
(WebCore::Layout::InlineFormattingContext::collectInlineContent const):

  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/layouttree/LayoutBox.h: ran out bits.
7:38 AM Changeset in webkit [240974] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Protect globalWebSocketStreamMap with a Lock
https://bugs.webkit.org/show_bug.cgi?id=194224
<rdar://problem/47581081>

Reviewed by Ryosuke Niwa.

  • WebProcess/Network/WebSocketStream.cpp:

(WebKit::WebSocketStream::streamWithIdentifier):
(WebKit::WebSocketStream::networkProcessCrashed):
(WebKit::WebSocketStream::WebSocketStream):
(WebKit::WebSocketStream::~WebSocketStream):

7:36 AM Changeset in webkit [240973] by achristensen@apple.com
  • 9 edits
    2 adds in trunk/Source/WebKit

Add Networking Daemon skeleton
https://bugs.webkit.org/show_bug.cgi?id=194278

Reviewed by Zalan Bujtas.

Daemon skeletons? This is spooky stuff.

  • NetworkProcess/EntryPoint/Cocoa/Daemon/DaemonEntryPoint.h: Added.
  • NetworkProcess/EntryPoint/Cocoa/Daemon/DaemonEntryPoint.mm: Added.

(WebKit::DaemonMain):

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::restrictRequestReferrerToOriginIfNeeded):

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

(WKDaemonMain):

  • Shared/EntryPointUtilities/Cocoa/AuxiliaryProcessMain.cpp:

(main):

  • SourcesCocoa.txt:
  • UnifiedSources-input.xcfilelist:
  • WebKit.xcodeproj/project.pbxproj:
6:45 AM Changeset in webkit [240972] by dinfuehr@igalia.com
  • 2 edits in trunk/JSTests

[ARM] Test running out of executable memory
https://bugs.webkit.org/show_bug.cgi?id=194285

Unreviewed. Do no execute test with LLInt disabled, test runs out of
executable memory otherwise.

  • stress/class-subclassing-function.js:
5:16 AM Changeset in webkit [240971] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

REGRESSION (r240579): com.apple.WebKit.WebContent at WebCore: WebCore::Document::absoluteEventRegionForNode
https://bugs.webkit.org/show_bug.cgi?id=194284
<rdar://problem/47774298>

Patch by Antoine Quint <Antoine Quint> on 2019-02-05
Reviewed by Antti Koivisto.

The m_touchActionElements list needs to be HashSet<RefPtr<Element>> instead of HashSet<Element*>. It was initially storing raw pointers based on m_touchEventTargets
which is an EventTargetSet (typedef’d to HashCountedSet<Node*>), but that's because these nodes have an event listener registered for them and as such are kept alive,
whereas elements with a touch-action property aren’t. Elements are removed from this list from Document::nodeWillBeRemoved() and from Document::updateTouchActionElements(),
the latter being called from Style::TreeResolver::resolveElement().

  • dom/Document.cpp:

(WebCore::Document::updateTouchActionElements):

  • dom/Document.h:

(WebCore::Document::touchActionElements const):

3:18 AM Changeset in webkit [240970] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles: remove harmless "property was unlocked" asserts
https://bugs.webkit.org/show_bug.cgi?id=194262

Reviewed by Matt Baker.

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype.remove):
(WI.SpreadsheetStyleProperty.prototype.update):
(WI.SpreadsheetStyleProperty.prototype._handleNameChange):
(WI.SpreadsheetStyleProperty.prototype._handleValueChange):

2:49 AM Changeset in webkit [240969] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WTF

[GLib] Stop URI-escaping file system representations
https://bugs.webkit.org/show_bug.cgi?id=194213

Reviewed by Carlos Garcia Campos.

Stop URI-escaping of file representation strings in
FileSystem::stringFromFileSystemRepresentation(), and URI-unescaping
of strings in FileSystem::fileSystemRepresentation().

This behavior deviates from POSIX and CF implementations and is
currently breaking IndexedDB-specific calculation of database sizes due
to directory components used in that process that are URL-based and are
as such URI-escaped. When unescaped, those single directory components
explode into multiple directory components, leading to incorrect total
database size calculation when iterating the database directory.

FileSystem::stringFromFileSystemRepresentation() now retrieves GLib's
filename charsets and in worst case converts the filesystem
representation to UTF-8 before String::fromUTF8() is used.
FileSystem::fileSystemRepresentation() reverses that process, taking
String's UTF-8 data and converting it to target charset if necessary.

Other FileSystem functions are adjusted to convert passed-in String
objects to filesystem representations.

  • wtf/glib/FileSystemGlib.cpp:

(WTF::FileSystemImpl::stringFromFileSystemRepresentation):
(WTF::FileSystemImpl::fileSystemRepresentation):
(WTF::FileSystemImpl::validRepresentation):
(WTF::FileSystemImpl::filenameForDisplay):
(WTF::FileSystemImpl::fileExists):
(WTF::FileSystemImpl::deleteFile):
(WTF::FileSystemImpl::deleteEmptyDirectory):
(WTF::FileSystemImpl::getFileStat):
(WTF::FileSystemImpl::getFileLStat):
(WTF::FileSystemImpl::makeAllDirectories):
(WTF::FileSystemImpl::createSymbolicLink):
(WTF::FileSystemImpl::pathGetFileName):
(WTF::FileSystemImpl::getVolumeFreeSpace):
(WTF::FileSystemImpl::directoryName):
(WTF::FileSystemImpl::listDirectory):
(WTF::FileSystemImpl::openFile):
(WTF::FileSystemImpl::moveFile):
(WTF::FileSystemImpl::hardLinkOrCopyFile):
(WTF::FileSystemImpl::getFileDeviceId): Align with POSIX implementation
and treat input CString as an existing filesystem representation.
(WTF::FileSystemImpl::unescapedFilename): Deleted.

12:52 AM Changeset in webkit [240968] by benjamin@webkit.org
  • 4 edits in trunk/Source/WebCore

Hit testing functions optimizations
https://bugs.webkit.org/show_bug.cgi?id=194073
<rdar://problem/47692312>

Reviewed by Zalan Bujtas.

This patch implements some easy optimizations that speed up
hit testing without changing the algorithms.

  • page/FrameViewLayoutContext.h:

The code for:

view().frameView().layoutContext().isPaintOffsetCacheEnabled()

followed by:

view().frameView().layoutContext().layoutState()

was loading all the intermediate values twice and calling layoutState()
twice.

By marking the function as pure, Clang can CSE the whole thing and
remove the duplicated code.

  • platform/graphics/LayoutRect.h:

(WebCore::LayoutRect::isInfinite const):
That one is pretty funny.

Since LayoutRect::isInfinite() was implemented before operator==() is
declared, the compiler was falling back to the implicit convertion to FloatRect()
before doing any comparison.

This explains a bunch of the convertions to float when using LayoutRect.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::mapLocalToContainer const):
Just reoder to make the register nice and clean for the optimization described above.

Feb 4, 2019:

11:48 PM Changeset in webkit [240967] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught Exception: undefined is not an object (evaluating 'classes.includes')
https://bugs.webkit.org/show_bug.cgi?id=194280
<rdar://problem/47811159>

Reviewed by Matt Baker.

  • UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:

(WI.GeneralStyleDetailsSidebarPanel.prototype._populateClassToggles):
Add a fallback value in case the class attribute isn't specified for the selected node.

10:51 PM Changeset in webkit [240966] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, add missing exception checks after r240637
https://bugs.webkit.org/show_bug.cgi?id=193546

  • tools/JSDollarVM.cpp:

(JSC::functionShadowChickenFunctionsOnStack):

10:32 PM Changeset in webkit [240965] by ysuzuki@apple.com
  • 70 edits
    1 copy in trunk/Source

[JSC] Shrink size of VM by lazily allocating IsoSubspaces for non-common types
https://bugs.webkit.org/show_bug.cgi?id=193993

Reviewed by Keith Miller.

Source/JavaScriptCore:

JSC::VM has a lot of IsoSubspaces, and each takes 504B. This unnecessarily makes VM so large.
And some of them are rarely used. We should allocate it lazily.

In this patch, we make some IsoSubspaces std::unique_ptr<IsoSubspace>. And we add ensureXXXSpace
functions which allocate IsoSubspaces lazily. This function is used by subspaceFor<> in each class.
And we also add subspaceForConcurrently<> function, which is called from concurrent JIT tiers. This
returns nullptr if the subspace is not allocated yet. JSCell::subspaceFor now takes second template
parameter which tells the function whether subspaceFor is concurrently done. If the IsoSubspace is
lazily created, we may return nullptr for the concurrent access. We ensure the space's initialization
by using WTF::storeStoreFence when lazily allocating it.

In GC's constraint solving, we may touch these lazily allocated spaces. At that time, we check the
existence of the space before touching this. This is not racy because the main thread is stopped when
the constraint solving is working.

This changes sizeof(VM) from 64736 to 56472.

Another interesting thing is that we removed PreventCollectionScope preventCollectionScope(heap); in
Subspace::initialize. This is really dangerous API since it easily causes dead-lock between the
collector and the mutator if IsoSubspace is dynamically created. We do want to make IsoSubspaces
dynamically-created ones since the requirement of the pre-allocation poses a scalability problem
of IsoSubspace adoption because IsoSubspace is large. Registered Subspace is only touched in the
EndPhase, and the peripheries should be stopped when running EndPhase. Thus, as long as the main thread
can run this IsoSubspace code, the collector is never EndPhase. So this is safe.

  • API/JSCallbackFunction.h:
  • API/ObjCCallbackFunction.h:

(JSC::ObjCCallbackFunction::subspaceFor):

  • API/glib/JSCCallbackFunction.h:
  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::visitChildren):
(JSC::CodeBlock::finalizeUnconditionally):

  • bytecode/CodeBlock.h:
  • bytecode/EvalCodeBlock.h:
  • bytecode/ExecutableToCodeBlockEdge.h:
  • bytecode/FunctionCodeBlock.h:
  • bytecode/ModuleProgramCodeBlock.h:
  • bytecode/ProgramCodeBlock.h:
  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::unlinkedCodeBlockFor):

  • bytecode/UnlinkedFunctionExecutable.h:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::emitAllocateRawObject):
(JSC::DFG::SpeculativeJIT::compileMakeRope):
(JSC::DFG::SpeculativeJIT::compileNewObject):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileMakeRope):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedCell):

  • heap/Heap.cpp:

(JSC::Heap::finalizeUnconditionalFinalizers):
(JSC::Heap::deleteAllCodeBlocks):
(JSC::Heap::deleteAllUnlinkedCodeBlocks):
(JSC::Heap::addCoreConstraints):

  • heap/Subspace.cpp:

(JSC::Subspace::initialize):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::emitAllocateJSObjectWithKnownSize):
(JSC::AssemblyHelpers::emitAllocateVariableSizedCell):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_new_object):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_new_object):

  • runtime/DirectArguments.h:
  • runtime/DirectEvalExecutable.h:
  • runtime/ErrorInstance.h:

(JSC::ErrorInstance::subspaceFor):

  • runtime/ExecutableBase.h:
  • runtime/FunctionExecutable.h:
  • runtime/IndirectEvalExecutable.h:
  • runtime/InferredValue.cpp:

(JSC::InferredValue::visitChildren):

  • runtime/InferredValue.h:
  • runtime/InferredValueInlines.h:

(JSC::InferredValue::finalizeUnconditionally):

  • runtime/InternalFunction.h:
  • runtime/JSAsyncFunction.h:
  • runtime/JSAsyncGeneratorFunction.h:
  • runtime/JSBoundFunction.h:
  • runtime/JSCell.h:

(JSC::subspaceFor):
(JSC::subspaceForConcurrently):

  • runtime/JSCellInlines.h:

(JSC::allocatorForNonVirtualConcurrently):

  • runtime/JSCustomGetterSetterFunction.h:
  • runtime/JSDestructibleObject.h:
  • runtime/JSFunction.h:
  • runtime/JSGeneratorFunction.h:
  • runtime/JSImmutableButterfly.h:
  • runtime/JSLexicalEnvironment.h:

(JSC::JSLexicalEnvironment::subspaceFor):

  • runtime/JSNativeStdFunction.h:
  • runtime/JSSegmentedVariableObject.h:
  • runtime/JSString.h:
  • runtime/ModuleProgramExecutable.h:
  • runtime/NativeExecutable.h:
  • runtime/ProgramExecutable.h:
  • runtime/PropertyMapHashTable.h:
  • runtime/ProxyRevoke.h:
  • runtime/ScopedArguments.h:
  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::clearCode):
(JSC::ScriptExecutable::installCode):

  • runtime/Structure.h:
  • runtime/StructureRareData.h:
  • runtime/SubspaceAccess.h: Copied from Source/JavaScriptCore/runtime/InferredValueInlines.h.
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

(JSC::VM::SpaceAndSet::SpaceAndSet):
(JSC::VM::SpaceAndSet::setFor):
(JSC::VM::forEachScriptExecutableSpace):
(JSC::VM::SpaceAndFinalizerSet::SpaceAndFinalizerSet): Deleted.
(JSC::VM::SpaceAndFinalizerSet::finalizerSetFor): Deleted.
(JSC::VM::ScriptExecutableSpaceAndSet::ScriptExecutableSpaceAndSet): Deleted.
(JSC::VM::ScriptExecutableSpaceAndSet::clearableCodeSetFor): Deleted.
(JSC::VM::UnlinkedFunctionExecutableSpaceAndSet::UnlinkedFunctionExecutableSpaceAndSet): Deleted.
(JSC::VM::UnlinkedFunctionExecutableSpaceAndSet::clearableCodeSetFor): Deleted.

  • runtime/WeakMapImpl.h:

(JSC::WeakMapImpl::subspaceFor):

  • wasm/js/JSWebAssemblyCodeBlock.h:
  • wasm/js/JSWebAssemblyMemory.h:
  • wasm/js/WebAssemblyFunction.h:
  • wasm/js/WebAssemblyWrapperFunction.h:

Source/WebCore:

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):

  • bridge/runtime_method.h:

Source/WebKit:

  • WebProcess/Plugins/Netscape/JSNPMethod.h:
  • WebProcess/Plugins/Netscape/JSNPObject.h:
10:19 PM Changeset in webkit [240964] by Jonathan Bedard
  • 4 edits
    35 adds in trunk/LayoutTests

[iPad] Initial test gardening (Part 1)
https://bugs.webkit.org/show_bug.cgi?id=193767
<rdar://problem/47515175>

Unreviewed test gardening.

A number of tests need to be re-baselined when run on iPad because of the larger screen.

  • fast/canvas/canvas-too-large-to-draw.html: iOS userAgent regex should match iPhones and iPads.
  • fast/events/touch/ios/target-taller-than-view.html: Move event listener since tabpPointY is the value we should compare against.
  • fast/visual-viewport/ios/min-scale-greater-than-one.html: expectedTop depends on the screen size of the device.
  • platform/ipad/fast/events: Added.
  • platform/ipad/fast/events/ios: Added.
  • platform/ipad/fast/events/ios/keyboard-should-not-trigger-resize-expected.txt: Added.
  • platform/ipad/fast/events/ios/rotation: Added.
  • platform/ipad/fast/events/ios/rotation/zz-no-rotation-expected.txt: Added.
  • platform/ipad/fast/events/touch: Added.
  • platform/ipad/fast/events/touch/ios: Added.
  • platform/ipad/fast/events/touch/ios/target-taller-than-view-expected.txt: Added.
  • platform/ipad/fast/scrolling: Added.
  • platform/ipad/fast/scrolling/ios: Added.
  • platform/ipad/fast/scrolling/ios/clipping-ancestor-with-accelerated-scrolling-ancestor-expected.txt: Added.
  • platform/ipad/fast/scrolling/ios/overflow-scrolling-ancestor-clip-expected.txt: Added.
  • platform/ipad/fast/scrolling/ios/overflow-scrolling-ancestor-clip-size-expected.txt: Added.
  • platform/ipad/fast/scrolling/ios/scrolling-content-clip-to-viewport-expected.txt: Added.
  • platform/ipad/fast/scrolling/ios/subpixel-overflow-scrolling-with-ancestor-expected.txt: Added.
  • platform/ipad/fast/scrolling/ios/touch-stacking-expected.txt: Added.
  • platform/ipad/fast/viewport/ios: Added.
  • platform/ipad/fast/viewport/ios/device-width-viewport-after-changing-view-scale-expected.txt: Added.
  • platform/ipad/fast/viewport/ios/initial-scale-after-changing-view-scale-expected.txt: Added.
  • platform/ipad/fast/viewport/ios/use-minimum-device-width-for-page-without-viewport-meta-expected.txt: Added.
  • platform/ipad/fast/viewport/ios/width-is-device-width-expected.txt: Added.
  • platform/ipad/fast/viewport/ios/width-is-device-width-overflowing-body-overflow-hidden-expected.txt: Added.
  • platform/ipad/fast/viewport/ios/width-is-device-width-overflowing-body-overflow-hidden-tall-expected.txt: Added.
  • platform/ipad/fast/viewport/ios/width-is-device-width-overflowing-expected.txt: Added.
  • platform/ipad/fast/viewport/ios/width-is-device-width-overflowing-no-shrink-to-fit-expected.txt: Added.
  • platform/ipad/platform: Added.
  • platform/ipad/platform/ios: Added.
  • platform/ipad/platform/ios/ios: Added.
  • platform/ipad/platform/ios/ios/fast: Added.
  • platform/ipad/platform/ios/ios/fast/text: Added.
  • platform/ipad/platform/ios/ios/fast/text/opticalFontWithTextStyle-expected.txt: Added.
  • platform/ipad/scrollingcoordinator: Added.
  • platform/ipad/scrollingcoordinator/ios: Added.
  • platform/ipad/scrollingcoordinator/ios/sync-layer-positions-after-scroll-expected.txt: Added.
  • platform/ipad/scrollingcoordinator/ios/ui-scrolling-tree-expected.txt: Added.
9:30 PM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
8:34 PM Changeset in webkit [240963] by Simon Fraser
  • 10 edits
    4 moves in trunk/Source

Move some macOS/iOS scrolling code into the scrolling/cocoa directory
https://bugs.webkit.org/show_bug.cgi?id=194245

Reviewed by Zalan Bujtas.

Source/WebCore:

ScrollingTreeFixedNode and ScrollingTreeStickyNode are used on iOS and macOS, so move them to the cocoa
directory.

Standardize on the ordering of ENABLE(ASYNC_SCROLLING) && PLATFORM(MAC).

Stop building ScrollingThread for iOS (it's never used), and stub out some functions so things build.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/scrolling/ScrollingThread.cpp:

(WebCore::ScrollingThread::initializeRunLoop):
(WebCore::ScrollingThread::wakeUpRunLoop):
(WebCore::ScrollingThread::threadRunLoopSourceCallback):

  • page/scrolling/cocoa/ScrollingTreeFixedNode.h: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h.
  • page/scrolling/cocoa/ScrollingTreeFixedNode.mm: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm.
  • page/scrolling/cocoa/ScrollingTreeStickyNode.h: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h.
  • page/scrolling/cocoa/ScrollingTreeStickyNode.mm: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm.
  • page/scrolling/mac/ScrollingThreadMac.mm:
  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h:
  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

Source/WebKit:

Use PLATFORM(MAC), not !PLATFORM(IOS_FAMILY).

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
8:04 PM Changeset in webkit [240962] by Michael Catanzaro
  • 21 edits
    7 adds in trunk

[GTK][WPE] Need a function to convert internal URI to display ("pretty") URI
https://bugs.webkit.org/show_bug.cgi?id=174816

Patch by Ms2ger <Ms2ger@igalia.com> on 2019-02-04
Reviewed by Michael Catanzaro.

Source/WebCore:

Tests: enabled fast/url/user-visible/.

  • testing/Internals.cpp:

(WebCore::Internals::userVisibleString): Enable method on all platforms.

Source/WebKit:

Add webkit_uri_for_display for GTK and WPE.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • UIProcess/API/glib/WebKitURIUtilities.cpp: Added.

(webkit_uri_for_display):

  • UIProcess/API/gtk/WebKitURIUtilities.h: Added.
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
  • UIProcess/API/gtk/webkit2.h:
  • UIProcess/API/wpe/WebKitURIUtilities.h: Added.
  • UIProcess/API/wpe/docs/wpe-0.1-sections.txt:
  • UIProcess/API/wpe/docs/wpe-docs.sgml:
  • UIProcess/API/wpe/webkit.h:

Source/WTF:

Translate userVisibleString and dependent code into platform-neutral C++
in wtf/URLHelpers.{h,cpp}.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/URLHelpers.cpp: Added.

(WTF::URLHelpers::loadIDNScriptWhiteList):
(WTF::URLHelpers::isArmenianLookalikeCharacter):
(WTF::URLHelpers::isArmenianScriptCharacter):
(WTF::URLHelpers::isASCIIDigitOrValidHostCharacter):
(WTF::URLHelpers::isLookalikeCharacter):
(WTF::URLHelpers::whiteListIDNScript):
(WTF::URLHelpers::initializeDefaultIDNScriptWhiteList):
(WTF::URLHelpers::allCharactersInIDNScriptWhiteList):
(WTF::URLHelpers::isSecondLevelDomainNameAllowedByTLDRules):
(WTF::URLHelpers::isRussianDomainNameCharacter):
(WTF::URLHelpers::allCharactersAllowedByTLDRules):
(WTF::URLHelpers::mapHostName):
(WTF::URLHelpers::collectRangesThatNeedMapping):
(WTF::URLHelpers::applyHostNameFunctionToMailToURLString):
(WTF::URLHelpers::applyHostNameFunctionToURLString):
(WTF::URLHelpers::mapHostNames):
(WTF::URLHelpers::createStringWithEscapedUnsafeCharacters):
(WTF::URLHelpers::toNormalizationFormC):
(WTF::URLHelpers::userVisibleURL):

  • wtf/URLHelpers.h: Added.
  • wtf/cocoa/NSURLExtras.mm:

(WTF::URLHelpers::loadIDNScriptWhiteList):
(WTF::decodePercentEscapes):
(WTF::decodeHostName):
(WTF::encodeHostName):
(WTF::URLWithUserTypedString):
(WTF::userVisibleString):

Tools:

Add tests for webkit_uri_for_display().

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitURIUtilities.cpp: Added.

(testURIForDisplayUnaffected):
(testURIForDisplayAffected):
(beforeAll):
(afterAll):

  • TestWebKitAPI/glib/CMakeLists.txt:

LayoutTests:

7:24 PM Changeset in webkit [240961] by ddkilzer@apple.com
  • 2 edits
    1 add in trunk/Source/ThirdParty/libwebrtc

vp8e_mr_alloc_mem() leaks LOWER_RES_FRAME_INFO if second memory allocation fails
<https://webkit.org/b/194265>

Reviewed by Youenn Fablet.

  • Source/third_party/libvpx/source/libvpx/vp8/vp8_cx_iface.c:

(vp8e_mr_alloc_mem):

  • Initialize res to VPX_CODEC_OK instead of 0.
  • Return early if first calloc() fails instead of trying the second calloc(). The function would crash dereferencing nullptr in shared_mem_loc->mb_info otherwise.
  • Call free(shared_mem_loc) if the second call to calloc() fails. This fixes the leak.
  • WebKit/0003-libwebrtc-fix-vp8e_mr_alloc_mem-leak.diff: Add.
7:23 PM Changeset in webkit [240960] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Change llint operand macros to inline functions
https://bugs.webkit.org/show_bug.cgi?id=194248

Reviewed by Mark Lam.

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::getNonConstantOperand):
(JSC::LLInt::getOperand):
(JSC::LLInt::llint_trace_value):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::getByVal):
(JSC::LLInt::genericCall):
(JSC::LLInt::varargsSetup):
(JSC::LLInt::commonCallEval):

5:36 PM Changeset in webkit [240959] by rmorisset@apple.com
  • 3 edits
    1 add in trunk

when lowering AssertNotEmpty, create the value before creating the patchpoint
https://bugs.webkit.org/show_bug.cgi?id=194231

Reviewed by Saam Barati.

JSTests:

This test is painfully fragile: it tries to test that AssertNotEmpty on a constant produces valid B3 IR.
The problem is that AssertNotEmpty is only created by DFGConstantFolding when it can simplify a CheckStructure, and constant folding is a bit capricious (https://bugs.webkit.org/show_bug.cgi?id=133947)
So even tiny changes to this test can change the path code taken.

  • stress/assert-not-empty.js: Added.

(foo):

Source/JavaScriptCore:

This is a very simple change: we should never generate B3 IR where an instruction depends on a value that comes later in the instruction stream.
AssertNotEmpty was generating some such IR, it probably slipped through until now because it is a rather rare and tricky instruction to generate.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileAssertNotEmpty):

5:34 PM Changeset in webkit [240958] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore
[curl] ASSERTION FAILED: !m_didNotifyResponse
m_multipartHandle

https://bugs.webkit.org/show_bug.cgi?id=190895

Reviewed by Ross Kirsling.

An assertion was failing in CurlRequest::invokeDidReceiveResponse
because DidReceiveResponse was already dispatched. This condition
was met if CurlRequestScheduler::completeTransfer is called while
waiting for the reply for the first DidReceiveResponse.

No new tests, covered by existing tests.

  • platform/network/curl/CurlRequest.h:

(WebCore::CurlRequest::needToInvokeDidReceiveResponse const):
Return true if m_didNotifyResponse is false disregard to
m_didReturnFromNotify.

5:31 PM Changeset in webkit [240957] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[iOS Simulator] pageoverlay/overlay tests are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=153337

Unreviewed test gardening.

Patch by Shawn Roberts <Shawn Roberts> on 2019-02-04

  • platform/ios/TestExpectations:
5:31 PM Changeset in webkit [240956] by achristensen@apple.com
  • 5 edits
    3 adds in trunk/Source/WebKit

Move XPCService main to a shared file calling a C function
https://bugs.webkit.org/show_bug.cgi?id=194256

Reviewed by Brady Eidson.

This not only reduces a few kilobytes of duplicated binary from the XPCService executables,
It will allow me to introduce a new kind of executable which will need to parse argv and call a different C function.
This is similar to r236075 but more general.

  • Shared/API/Cocoa/WKMain.h: Added.
  • Shared/API/Cocoa/WKMain.mm: Added.

(WKXPCServiceMain):

  • Shared/EntryPointUtilities/Cocoa/AuxiliaryProcessMain.cpp: Added.

(main):

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:

(main): Deleted.

  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
5:30 PM Changeset in webkit [240955] by achristensen@apple.com
  • 32 edits in trunk/Source/WebKit

Make MessageSender functions const
https://bugs.webkit.org/show_bug.cgi?id=194247

Reviewed by Brady Eidson.

  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::messageSenderConnection const):
(WebKit::Download::messageSenderDestinationID const):
(WebKit::Download::messageSenderConnection): Deleted.
(WebKit::Download::messageSenderDestinationID): Deleted.

  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/PendingDownload.cpp:

(WebKit::PendingDownload::messageSenderConnection const):
(WebKit::PendingDownload::messageSenderDestinationID const):
(WebKit::PendingDownload::messageSenderConnection): Deleted.
(WebKit::PendingDownload::messageSenderDestinationID): Deleted.

  • NetworkProcess/Downloads/PendingDownload.h:
  • NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:

(WebKit::WebIDBConnectionToClient::messageSenderConnection const):
(WebKit::WebIDBConnectionToClient::messageSenderConnection): Deleted.

  • NetworkProcess/IndexedDB/WebIDBConnectionToClient.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::messageSenderConnection const):
(WebKit::NetworkResourceLoader::messageSenderConnection): Deleted.

  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/NetworkSocketStream.cpp:

(WebKit::NetworkSocketStream::messageSenderConnection const):
(WebKit::NetworkSocketStream::messageSenderDestinationID const):
(WebKit::NetworkSocketStream::messageSenderConnection): Deleted.
(WebKit::NetworkSocketStream::messageSenderDestinationID): Deleted.

  • NetworkProcess/NetworkSocketStream.h:
  • NetworkProcess/ServiceWorker/WebSWServerConnection.h:
  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:

(WebKit::WebSWServerToContextConnection::messageSenderConnection const):
(WebKit::WebSWServerToContextConnection::messageSenderDestinationID const):
(WebKit::WebSWServerToContextConnection::messageSenderConnection): Deleted.
(WebKit::WebSWServerToContextConnection::messageSenderDestinationID): Deleted.

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
  • Platform/IPC/MessageSender.h:
  • Shared/AuxiliaryProcess.cpp:

(WebKit::AuxiliaryProcess::messageSenderConnection const):
(WebKit::AuxiliaryProcess::messageSenderDestinationID const):
(WebKit::AuxiliaryProcess::messageSenderConnection): Deleted.
(WebKit::AuxiliaryProcess::messageSenderDestinationID): Deleted.

  • Shared/AuxiliaryProcess.h:
  • UIProcess/WebConnectionToWebProcess.cpp:

(WebKit::WebConnectionToWebProcess::messageSenderConnection const):
(WebKit::WebConnectionToWebProcess::messageSenderDestinationID const):
(WebKit::WebConnectionToWebProcess::messageSenderConnection): Deleted.
(WebKit::WebConnectionToWebProcess::messageSenderDestinationID): Deleted.

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

(WebKit::WebPageProxy::messageSenderConnection const):
(WebKit::WebPageProxy::messageSenderDestinationID const):
(WebKit::WebPageProxy::messageSenderConnection): Deleted.
(WebKit::WebPageProxy::messageSenderDestinationID): Deleted.

  • UIProcess/WebPageProxy.h:
  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:

(WebKit::WebIDBConnectionToServer::messageSenderConnection const):
(WebKit::WebIDBConnectionToServer::messageSenderConnection): Deleted.

  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::messageSenderConnection const):
(WebKit::WebResourceLoader::messageSenderDestinationID const):
(WebKit::WebResourceLoader::messageSenderConnection): Deleted.
(WebKit::WebResourceLoader::messageSenderDestinationID): Deleted.

  • WebProcess/Network/WebResourceLoader.h:
  • WebProcess/Network/WebSocketStream.cpp:

(WebKit::WebSocketStream::messageSenderConnection const):
(WebKit::WebSocketStream::messageSenderDestinationID const):
(WebKit::WebSocketStream::messageSenderConnection): Deleted.
(WebKit::WebSocketStream::messageSenderDestinationID): Deleted.

  • WebProcess/Network/WebSocketStream.h:
  • WebProcess/Storage/WebSWClientConnection.h:
  • WebProcess/WebConnectionToUIProcess.cpp:

(WebKit::WebConnectionToUIProcess::messageSenderConnection const):
(WebKit::WebConnectionToUIProcess::messageSenderDestinationID const):
(WebKit::WebConnectionToUIProcess::messageSenderConnection): Deleted.
(WebKit::WebConnectionToUIProcess::messageSenderDestinationID): Deleted.

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

(WebKit::WebPage::messageSenderConnection const):
(WebKit::WebPage::messageSenderDestinationID const):
(WebKit::WebPage::messageSenderConnection): Deleted.
(WebKit::WebPage::messageSenderDestinationID): Deleted.

  • WebProcess/WebPage/WebPage.h:
5:27 PM Changeset in webkit [240954] by beidson@apple.com
  • 9 edits in trunk/Source/WebKit

Take additional process assertion while downloading.
<rdar://problem/47741356> and https://bugs.webkit.org/show_bug.cgi?id=194239

Reviewed by Chris Dumez.

When the first download starts, grab this new assertion.
When the last download ends, release it.

  • Configurations/Network-iOS.entitlements:
  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::dataTaskBecameDownloadTask):
(WebKit::DownloadManager::downloadFinished):

  • NetworkProcess/Downloads/DownloadManager.h:
  • Platform/spi/ios/AssertionServicesSPI.h:
  • UIProcess/ProcessAssertion.cpp:

(WebKit::ProcessAssertion::ProcessAssertion):

  • UIProcess/ProcessAssertion.h:

(WebKit::ProcessAssertion::ProcessAssertion):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didSetAssertionState):

  • UIProcess/ios/ProcessAssertionIOS.mm:

(WebKit::flagsForState):
(WebKit::reasonForState):
(WebKit::ProcessAssertion::ProcessAssertion):

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

webkitpy: Precedence of booted devices should match precedence in DEFAULT_DEVICE_TYPES
https://bugs.webkit.org/show_bug.cgi?id=194158
<rdar://problem/47737268>

Rubber-stamped by Aakash Jain.

  • Scripts/webkitpy/port/device_port.py:

(DevicePort.supported_device_types): Sort supported device types by the DEFAULT_DEVICE_TYPES.

5:11 PM Changeset in webkit [240952] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Resources: missing resource data for document on reload
https://bugs.webkit.org/show_bug.cgi?id=194243
<rdar://problem/47559021>

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/ResourceDetailsSidebarPanel.js:

(WI.ResourceDetailsSidebarPanel.prototype.set resource):
(WI.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):

  • UserInterface/Base/Object.js:

(WI.Object.removeEventListener):
Drive-by: there's no need to iterate over the entire table to check if thisObject exists,
as that is handled for us by ListMultimap, which we later call anyways.

5:09 PM Changeset in webkit [240951] by ysuzuki@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

[JSC] ExecutableToCodeBlockEdge should be smaller
https://bugs.webkit.org/show_bug.cgi?id=194244

Reviewed by Michael Saboff.

ExecutableToCodeBlockEdge is allocated so many times. However its memory layout is not efficient.
sizeof(ExecutableToCodeBlockEdge) is 24bytes, but it discards 7bytes due to one bool m_isActive flag.
Because our size classes are rounded by 16bytes, ExecutableToCodeBlockEdge takes 32bytes. So, half of
it is wasted. We should fit it into 16bytes so that we can efficiently allocate it.

In this patch, we leverages TypeInfoMayBePrototype bit in JSTypeInfo. It is a bit special TypeInfo bit
since this is per-cell bit. We rename this to TypeInfoPerCellBit, and use it as a m_isActive mark in
ExecutableToCodeBlockEdge. In JSObject subclasses, we use it as MayBePrototype flag.

Since this flag is not changed in CAS style, we must not change this in concurrent threads. This is OK
for ExecutableToCodeBlockEdge's m_isActive flag since this is touched on the main thread (ScriptExecutable::installCode
does not touch it if it is called in non-main threads).

  • bytecode/ExecutableToCodeBlockEdge.cpp:

(JSC::ExecutableToCodeBlockEdge::finishCreation):
(JSC::ExecutableToCodeBlockEdge::visitChildren):
(JSC::ExecutableToCodeBlockEdge::activate):
(JSC::ExecutableToCodeBlockEdge::deactivate):
(JSC::ExecutableToCodeBlockEdge::isActive const):

  • bytecode/ExecutableToCodeBlockEdge.h:
  • runtime/JSCell.h:
  • runtime/JSCellInlines.h:

(JSC::JSCell::perCellBit const):
(JSC::JSCell::setPerCellBit):
(JSC::JSCell::mayBePrototype const): Deleted.
(JSC::JSCell::didBecomePrototype): Deleted.

  • runtime/JSObject.cpp:

(JSC::JSObject::setPrototypeDirect):

  • runtime/JSObject.h:
  • runtime/JSObjectInlines.h:

(JSC::JSObject::mayBePrototype const):
(JSC::JSObject::didBecomePrototype):

  • runtime/JSTypeInfo.h:

(JSC::TypeInfo::perCellBit):
(JSC::TypeInfo::mergeInlineTypeFlags):
(JSC::TypeInfo::mayBePrototype): Deleted.

5:08 PM Changeset in webkit [240950] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: Resources: WI.TreeOutline assertions when refreshing the page
https://bugs.webkit.org/show_bug.cgi?id=194242
<rdar://problem/47802027>

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/FolderizedTreeElement.js:

(WI.FolderizedTreeElement.prototype.removeChildren):
FolderTreeElements are removed by the base class call to removeChildren.
Calling removeChildren for detached TreeElements is unnecessary.

4:47 PM Changeset in webkit [240949] by Said Abou-Hallawa
  • 14 edits
    3 adds in trunk

[CG] Enable setAdditionalSupportedImageTypes for WK1
https://bugs.webkit.org/show_bug.cgi?id=194190

Reviewed by Tim Horton.

Source/WebCore:

Move the function webCoreStringVectorFromNSStringArray from WebKit to
WebCore so it can be used by both WebKit and WebKitLegacy.

  • platform/mac/StringUtilities.h:
  • platform/mac/StringUtilities.mm:

(WebCore::webCoreStringVectorFromNSStringArray):

Source/WebKit:

Move the function webCoreStringVectorFromNSStringArray from WebKit to
WebCore so it can be used by both WebKit and WebKitLegacy.

  • Platform/mac/StringUtilities.h:
  • Platform/mac/StringUtilities.mm:

(WebKit::webCoreStringVectorFromNSStringArray): Deleted.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

Source/WebKitLegacy/mac:

  1. Define the preferences key AdditionalSupportedImageTypes.
  2. Add additionalSupportedImageTypes as a private preference property.
  3. Define the setter and the getter of the property.
  4. Add function to convert from an id to an array of strings.
  5. Call WebCore::setAdditionalSupportedImageTypes when preferences change.
  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(-[WebPreferences _stringArrayValueForKey:]):
(-[WebPreferences _setStringArrayValueForKey:forKey:]):
(-[WebPreferences setAdditionalSupportedImageTypes:]):
(-[WebPreferences additionalSupportedImageTypes]):

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

(-[WebView _preferencesChanged:]):

Tools:

Add a test similar to the one under WebKit Cocoa but make it create a
WebView instead of a WKWebView.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/mac/100x100-red.tga: Added.
  • TestWebKitAPI/Tests/mac/AdditionalSupportedImageTypes.html: Added.
  • TestWebKitAPI/Tests/mac/AdditionalSupportedImageTypes.mm: Added.

(-[AdditionalSupportedImageTypesTest webView:didFinishLoadForFrame:]):
(TestWebKitAPI::runTest):
(TestWebKitAPI::TEST):

4:28 PM Changeset in webkit [240948] by timothy@apple.com
  • 3 edits in trunk/Source/WebKitLegacy/mac

Add WebView SPI to temporarily force light or dark appearance on a page.
https://bugs.webkit.org/show_bug.cgi?id=194230

Reviewed by Tim Horton.

  • WebView/WebView.mm:

(-[WebView _useDarkAppearance:]): Added.
(-[WebView _setUseDarkAppearance:]): Added.

  • WebView/WebViewPrivate.h:
3:32 PM Changeset in webkit [240947] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: clicking a selected call frame doesn't re-scroll
https://bugs.webkit.org/show_bug.cgi?id=194169
<rdar://problem/47743864>

Reviewed by Devin Rousso.

  • UserInterface/Views/TreeOutline.js:

(WI.TreeOutline.prototype._handleMouseDown):
Add a special case for a single-selection TreeOutline with
allowsRepeatSelection enabled. Since the element is already
selected, bypass the SelectionCongroller and dispatch an
event with event.data.selectedByUser set to true.

3:30 PM Changeset in webkit [240946] by Nikita Vasilyev
  • 8 edits
    2 adds in trunk

Web Inspector: Styles: fix race conditions when editing
https://bugs.webkit.org/show_bug.cgi?id=192739
<rdar://problem/46752925>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

Editing CSS property in the style editor syncronously updates CSSStyleDeclaration on the front-end
and asyncronously updates the backend by calling CSSAgent.setStyleText. After the new style text is applied
on the backend, CSSStyleDeclaration (on the front-end) gets updated.

Unsure there's no race conditions by introducing _updatesInProgressCount:

  • Increment it before calling CSSAgent.setStyleText.
  • Decrement it after CSSAgent.setStyleText is finished.

Prevent updates of CSSStyleDeclaration when _updatesInProgressCount isn't 0.

  • UserInterface/Models/CSSProperty.js:

(WI.CSSProperty.prototype._updateOwnerStyleText):

  • UserInterface/Models/CSSStyleDeclaration.js:

(WI.CSSStyleDeclaration):
(WI.CSSStyleDeclaration.prototype.set text): Removed.
(WI.CSSStyleDeclaration.prototype.setText): Added.
Change the setter to a method since it has side effects including an asynchronous backend call.

  • UserInterface/Models/DOMNodeStyles.js:

(WI.DOMNodeStyles.prototype.changeStyleText):

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype.get nameTextField): Removed.
(WI.SpreadsheetStyleProperty.prototype.get valueTextField): Removed.
Drive-by: remove unused code.

LayoutTests:

  • inspector/css/modify-css-property-expected.txt:
  • inspector/css/modify-css-property-race-expected.txt: Added.
  • inspector/css/modify-css-property-race.html: Added.
  • inspector/css/modify-css-property.html:
3:12 PM Changeset in webkit [240945] by Justin Fan
  • 2 edits in trunk/Source/WebCore

[Web GPU] Code clean-up for RenderPipeline backend
https://bugs.webkit.org/show_bug.cgi?id=194238

Reviewed by Dean Jackson.

Replace dot syntax setters with calls to setter methods, and remove unnecessary setter calls for
the input state's descriptor arrays.

Covered by existing tests; no change in behavior.

  • platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:

(WebCore::tryCreateMtlDepthStencilState): Refactor to use implicit setters rather than dot syntax.
(WebCore::setInputStateForPipelineDescriptor): Ditto, and remove unnecessary setter calls on array objects.

2:30 PM Changeset in webkit [240944] by benjamin@webkit.org
  • 13 edits in trunk/Source

Use deferrable timer to restart the Responsiveness Timer on each wheel event
https://bugs.webkit.org/show_bug.cgi?id=194135
Source/WebCore:

<rdar://problem/47724099>

Reviewed by Simon Fraser.

The original DeferrableOneShotTimer was not really deferrable.
What it allows is to restart the count down from scratch after
firing.

For this optimization, I want to keep the correct timing but avoid
starting a real timer every time.

I renamed DeferrableOneShotTimer to ResettableOneShotTimer and
created a real DeferrableOneShotTimer that support deadlines.

  • css/CSSImageGeneratorValue.cpp:
  • html/HTMLPlugInImageElement.h:
  • loader/cache/CachedResource.h:
  • platform/Timer.cpp:

(WebCore::DeferrableOneShotTimer::startOneShot):
(WebCore::DeferrableOneShotTimer::fired):

  • platform/Timer.h:

(WebCore::TimerBase::nextFireTime const):
(WebCore::ResettableOneShotTimer::ResettableOneShotTimer):
(WebCore::DeferrableOneShotTimer::DeferrableOneShotTimer):
(WebCore::DeferrableOneShotTimer::stop):
(WebCore::DeferrableOneShotTimer::restart): Deleted.

  • platform/graphics/ca/TileController.h:
  • platform/graphics/cg/SubimageCacheWithTimer.h:

Source/WebKit:

Reviewed by Simon Fraser.

Simon Fraser suggested a neat improvement over my previous optimization
of ResponsivenessTimer.

Instead of reseting the deadline with every event, we can let the timer
fire and add the missing time from the last start.

I implemented that behavior in the new Deferrable Timer class and use
it from ResponsivenessTimer.

  • NetworkProcess/watchos/NetworkProximityAssertion.h:
  • UIProcess/ResponsivenessTimer.h:
  • WebProcess/Plugins/PluginView.h:
2:28 PM Changeset in webkit [240943] by graouts@webkit.org
  • 4 edits in trunk/Source/WebCore

Use constants for pointer types
https://bugs.webkit.org/show_bug.cgi?id=194232

Reviewed by Dean Jackson.

We cannot use an enum for the pointer type since a custom pointer type can be created by developers when creating a
pointer event using JavaScript, but we can at least used string constants for the ones created internally.

  • dom/PointerEvent.cpp:

(WebCore::PointerEvent::mousePointerType):
(WebCore::PointerEvent::penPointerType):
(WebCore::PointerEvent::touchPointerType):

  • dom/PointerEvent.h:
  • dom/ios/PointerEventIOS.cpp:
2:19 PM Changeset in webkit [240942] by Alan Bujtas
  • 4 edits
    3 adds in trunk

[First paint] Adjust "finishedParsingMainDocument" flag by taking deferred and async scripts into account.
https://bugs.webkit.org/show_bug.cgi?id=194168

Reviewed by Simon Fraser.

Source/WebCore:

First paint should not be blocked by async or deferred scripts.

  • page/FrameView.cpp:

(WebCore::FrameView::qualifiesAsVisuallyNonEmpty const):

Tools:

Test if the firstVisuallyNoneEmpty milestone fires before the deferred script's post-message.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/FirstVisuallyNonEmptyMilestoneWithDeferredScript.mm: Added.

(-[FirstPaintMessageHandler userContentController:didReceiveScriptMessage:]):
(-[RenderingProgressNavigationDelegate _webView:renderingProgressDidChange:]):
(TEST):

  • TestWebKitAPI/Tests/WebKit/deferred-script-load.html: Added.
  • TestWebKitAPI/Tests/WebKit/deferred-script.js: Added.
1:51 PM Changeset in webkit [240941] by Simon Fraser
  • 14 edits
    6 adds in trunk

Async overflow scroll with border-radius renders incorrectly
https://bugs.webkit.org/show_bug.cgi?id=194205
<rdar://problem/47771668>

Reviewed by Zalan Bujtas.

Source/WebCore:

When an element has composited overflow:scroll and border-radius, we need to make a layer
to clip to the inside of the border radius if necessary.

Existing code simply turned off needsDescendantsClippingLayer for composited scrolling
layers, but now we check to see if the inner border is rounded. If we have both a m_childContainmentLayer
and scrolling layers, we need to adjust the location of the scrolling layers (which are parented
in m_childContainmentLayer).

Also fix offsetFromRenderer for these layers; it's positive for layers inset from the top left
of the border box.

Tests: compositing/clipping/border-radius-async-overflow-clipping-layer.html

compositing/clipping/border-radius-async-overflow-non-stacking.html
compositing/clipping/border-radius-async-overflow-stacking.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateConfiguration):
(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::updateChildClippingStrategy): Layout is always up-to-date now, so remove the comment.

LayoutTests:

New baselines, mostly correcting offsetFromRenderer.

  • compositing/clipping/border-radius-async-overflow-clipping-layer-expected.txt: Added.
  • compositing/clipping/border-radius-async-overflow-clipping-layer.html: Added.
  • compositing/clipping/border-radius-async-overflow-non-stacking-expected.html: Added.
  • compositing/clipping/border-radius-async-overflow-non-stacking.html: Added.
  • compositing/clipping/border-radius-async-overflow-stacking-expected.html: Added.
  • compositing/clipping/border-radius-async-overflow-stacking.html: Added.
  • compositing/scrolling/overflow-scrolling-layers-are-self-painting-expected.txt:
  • platform/ios/compositing/overflow/scrolling-without-painting-expected.txt:
  • platform/ios/compositing/overflow/textarea-scroll-touch-expected.txt: html.css specifies a border-radius on <textarea> for iOS, so we make additional

clipping layers.

  • platform/ios/compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
  • platform/ios/compositing/scrolling/overflow-scrolling-layers-are-self-painting-expected.txt:
1:16 PM Changeset in webkit [240940] by Simon Fraser
  • 30 edits
    3 adds in trunk

PageOverlayController's layers should be created lazily
https://bugs.webkit.org/show_bug.cgi?id=194199
Source/WebCore:

Reviewed by Tim Horton.

Expose PageOverlayController::hasDocumentOverlays() and hasViewOverlays()
and use them to only parent the overlay-hosting layers when necessary.

For document overlays, RenderLayerCompositor::appendDocumentOverlayLayers() can
simply do nothing if there are none. Updates are triggered via Page::installedPageOverlaysChanged(),
which calls FrameView::setNeedsCompositingConfigurationUpdate() to trigger the root layer
compositing updates that parents the layerWithDocumentOverlays().

View overlays are added to the layer tree via the DrawingArea. When we go between having
none and some view overlays, Page::installedPageOverlaysChanged() calls attachViewOverlayGraphicsLayer()
on the ChromeClient, and the DrawingArea responds by calling updateRootLayers() and scheduling a
compositing flush (this has to be done manually because view overlay layers are outside the
subtree managed by RenderLayerCompositor).

Now that GraphicsLayers are ref-counted, we can let the DrawingArea simply retain its m_viewOverlayRootLayer;
there is no need for RenderLayerCompositor::attachRootLayer()/detachRootLayer() to do anything with view
overlay layers. This implies that a page can navigate (new FrameView) and view overlays will persist, without
having to be manually removed and re-added. We can also remove the Frame argument to attachViewOverlayGraphicsLayer().

  • loader/EmptyClients.h:
  • page/ChromeClient.h:
  • page/FrameView.cpp:

(WebCore::FrameView::setNeedsCompositingConfigurationUpdate): These functions need to schedule a compositing flush
because there may be nothing else that does.
(WebCore::FrameView::setNeedsCompositingGeometryUpdate):

  • page/Page.cpp:

(WebCore::Page::installedPageOverlaysChanged):

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

(WebCore::PageOverlayController::hasDocumentOverlays const):
(WebCore::PageOverlayController::hasViewOverlays const):
(WebCore::PageOverlayController::attachViewOverlayLayers): PageOverlayController has the Page so it
might as well be the one to call through the ChromeClient.
(WebCore::PageOverlayController::detachViewOverlayLayers):
(WebCore::PageOverlayController::installPageOverlay):
(WebCore::PageOverlayController::uninstallPageOverlay):

  • page/PageOverlayController.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateCompositingLayers): isFullUpdate is always true; remove it.
(WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
(WebCore::RenderLayerCompositor::attachRootLayer):
(WebCore::RenderLayerCompositor::detachRootLayer):

Source/WebKit:

rdar://problem/46571593

Reviewed by Tim Horton.

Expose PageOverlayController::hasDocumentOverlays() and hasViewOverlays()
and use them to only parent the overlay-hosting layers when necessary.

For document overlays, RenderLayerCompositor::appendDocumentOverlayLayers() can
simply do nothing if there are none. Updates are triggered via Page::installedPageOverlaysChanged(),
which calls FrameView::setNeedsCompositingConfigurationUpdate() to trigger the root layer
compositing updates that parents the layerWithDocumentOverlays().

View overlays are added to the layer tree via the DrawingArea. When we go between having
none and some view overlays, Page::installedPageOverlaysChanged() calls attachViewOverlayGraphicsLayer()
on the ChromeClient, and the DrawingArea responds by calling updateRootLayers() and scheduling a
compositing flush (this has to be done manually because view overlay layers are outside the
subtree managed by RenderLayerCompositor).

Now that GraphicsLayers are ref-counted, we can let the DrawingArea simply retain its m_viewOverlayRootLayer;
there is no need for RenderLayerCompositor::attachRootLayer()/detachRootLayer() to do anything with view
overlay layers. This implies that a page can navigate (new FrameView) and view overlays will persist, without
having to be manually removed and re-added. We can also remove the Frame argument to attachViewOverlayGraphicsLayer().

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::attachViewOverlayGraphicsLayer):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/AcceleratedDrawingArea.cpp:

(WebKit::AcceleratedDrawingArea::attachViewOverlayGraphicsLayer):

  • WebProcess/WebPage/AcceleratedDrawingArea.h:
  • WebProcess/WebPage/DrawingArea.h:

(WebKit::DrawingArea::attachViewOverlayGraphicsLayer):

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

(WebKit::RemoteLayerTreeDrawingArea::attachViewOverlayGraphicsLayer):

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::attachViewOverlayGraphicsLayer):
(WebKit::TiledCoreAnimationDrawingArea::mainFrameContentSizeChanged):

Source/WebKitLegacy/mac:

rdar://problem/46571593

Reviewed by Tim Horton.

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::attachViewOverlayGraphicsLayer):

Source/WebKitLegacy/win:

rdar://problem/46571593

Reviewed by Tim Horton.

Expose PageOverlayController::hasDocumentOverlays() and hasViewOverlays()
and use them to only parent the overlay-hosting layers when necessary.

For document overlays, RenderLayerCompositor::appendDocumentOverlayLayers() can
simply do nothing if there are none. Updates are triggered via Page::installedPageOverlaysChanged(),
which calls FrameView::setNeedsCompositingConfigurationUpdate() to trigger the root layer
compositing updates that parents the layerWithDocumentOverlays().

View overlays are added to the layer tree via the DrawingArea. When we go between having
none and some view overlays, Page::installedPageOverlaysChanged() calls attachViewOverlayGraphicsLayer()
on the ChromeClient, and the DrawingArea responds by calling updateRootLayers() and scheduling a
compositing flush (this has to be done manually because view overlay layers are outside the
subtree managed by RenderLayerCompositor).

Now that GraphicsLayers are ref-counted, we can let the DrawingArea simply retain its m_viewOverlayRootLayer;
there is no need for RenderLayerCompositor::attachRootLayer()/detachRootLayer() to do anything with view
overlay layers. This implies that a page can navigate (new FrameView) and view overlays will persist, without
having to be manually removed and re-added. We can also remove the Frame argument to attachViewOverlayGraphicsLayer().

  • WebCoreSupport/WebChromeClient.cpp:

(WebChromeClient::attachViewOverlayGraphicsLayer):

  • WebCoreSupport/WebChromeClient.h:

LayoutTests:

rdar://problem/46571593

Reviewed by Tim Horton.

  • pageoverlay/overlay-remove-reinsert-view-expected.txt: We no longer unparent the overlays

on view removal, so new results.

  • platform/ios-wk2/TestExpectations: Unskip some iOS tests.
  • platform/ios-wk2/pageoverlay/overlay-installation-expected.txt: Added.
  • platform/ios-wk2/pageoverlay/overlay-large-document-expected.txt: Added.
  • platform/ios-wk2/pageoverlay/overlay-large-document-scrolled-expected.txt: Added.
  • platform/ios/TestExpectations: Unskip some iOS tests.
1:03 PM Changeset in webkit [240939] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Source/WebCore:
When performing Increment or Decrement on sliders, check to see if the slider is disabled.
https://bugs.webkit.org/show_bug.cgi?id=173497

Patch by Eric Liang <ericliang@apple.com> on 2019-02-04
Reviewed by Chris Fleizach.

Test: accessibility/set-value-not-work-for-disabled-sliders.html

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::alterSliderValue):

LayoutTests:
Check if slider value changed after calling AX Increment or Decrement on disabled sliders.
https://bugs.webkit.org/show_bug.cgi?id=193497

Patch by Eric Liang <ericliang@apple.com> on 2019-02-04
Reviewed by Chris Fleizach.

  • accessibility/set-value-not-work-for-disabled-sliders.html: Added.
1:02 PM Changeset in webkit [240938] by ysuzuki@apple.com
  • 14 edits in trunk/Source/JavaScriptCore

[JSC] Shrink size of FunctionExecutable
https://bugs.webkit.org/show_bug.cgi?id=194191

Reviewed by Michael Saboff.

This patch reduces the size of FunctionExecutable. Since it is allocated in IsoSubspace, reducing the size directly
improves the allocation efficiency.

  1. ScriptExecutable (base class of FunctionExecutable) has several members, but it is meaningful only in FunctionExecutable. We remove this from ScriptExecutable, and move it to FunctionExecutable.
  1. FunctionExecutable has several data which are rarely used. One for FunctionOverrides functionality, which is typically used for JSC debugging purpose, and another is TypeSet and offsets for type profiler. We move them to RareData and reduce the size of FunctionExecutable in the common case.

This patch changes the size of FunctionExecutable from 176 to 144.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpSource):
(JSC::CodeBlock::finishCreation):

  • dfg/DFGNode.h:

(JSC::DFG::Node::OpInfoWrapper::as const):

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::Frame::computeLineAndColumn const):

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

(JSC::FunctionExecutable::FunctionExecutable):
(JSC::FunctionExecutable::ensureRareDataSlow):

  • runtime/FunctionExecutable.h:
  • runtime/Intrinsic.h:
  • runtime/ModuleProgramExecutable.cpp:

(JSC::ModuleProgramExecutable::ModuleProgramExecutable):

  • runtime/ProgramExecutable.cpp:

(JSC::ProgramExecutable::ProgramExecutable):

  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::ScriptExecutable):
(JSC::ScriptExecutable::overrideLineNumber const):
(JSC::ScriptExecutable::typeProfilingStartOffset const):
(JSC::ScriptExecutable::typeProfilingEndOffset const):

  • runtime/ScriptExecutable.h:

(JSC::ScriptExecutable::firstLine const):
(JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::hasOverrideLineNumber const): Deleted.
(JSC::ScriptExecutable::overrideLineNumber const): Deleted.
(JSC::ScriptExecutable::typeProfilingStartOffset const): Deleted.
(JSC::ScriptExecutable::typeProfilingEndOffset const): Deleted.

  • runtime/StackFrame.cpp:

(JSC::StackFrame::computeLineAndColumn const):

  • tools/JSDollarVM.cpp:

(JSC::functionReturnTypeFor):

12:49 PM Changeset in webkit [240937] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit

Unreviewed, improve preprocessor guard
https://bugs.webkit.org/show_bug.cgi?id=194166
<rdar://problem/47694328>

AC mode is only optional in GTK port. Requested by Zan.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

11:49 AM Changeset in webkit [240936] by dean_johnson@apple.com
  • 2 edits in trunk/Tools

REGRESSION (r237269): webkit-patch what-broke is broken
https://bugs.webkit.org/show_bug.cgi?id=193025

Reviewed by Aakash Jain.

  • Scripts/webkitpy/common/host.py:

(Host.buildbot):
(Host.bugzilla): Renamed to 'buildbot'.

10:59 AM Changeset in webkit [240935] by Alan Coon
  • 7 edits in tags/Safari-608.1.4.1/Source

Versioning.

10:59 AM Changeset in webkit [240934] by Wenson Hsieh
  • 2 edits in trunk/Tools

[iOS] API test WKAttachmentTests.InsertAndRemoveDuplicateAttachment is failing after r240902
https://bugs.webkit.org/show_bug.cgi?id=194207

Reviewed by Tim Horton.

Fix this API test by making it robust against smart paste on iOS. Currently, this test pastes an attachment
element and assumes that the pasted attachment is adjacent to the original one. However, after enabling smart
paste, we now insert an extra space in between. Instead of executing "DeleteBackward" twice to test removing the
attachment elements, we delete backwards once to remove the pasted attachment, and move the selection to the
start and delete forwards to remove the original attachment.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(TestWebKitAPI::TEST):

10:57 AM Changeset in webkit [240933] by Alan Coon
  • 1 copy in tags/Safari-608.1.4.1

New tag.

10:55 AM Changeset in webkit [240932] by Jon Davis
  • 1 edit
    15 adds in trunk/Websites/webkit.org

Add demos for Intersection Observer API
https://bugs.webkit.org/show_bug.cgi?id=194219

Reviewed by Simon Fraser.

  • demos/intersection-observer/lazy-image-load/index.html: Added.
  • demos/intersection-observer/lazy-image-load/scripts.js: Added.

(ImageLoader):
(ImageLoader.prototype.findImages):
(ImageLoader.prototype.smallURLForImage):
(ImageLoader.prototype.largeURLForImage):
(ImageLoader.prototype.setupObserver):
(ImageLoader.prototype.intersectionsChanged):

  • demos/intersection-observer/lazy-image-load/style.css: Added.

(body):
(section):
(header):
(.main):
(.main img):
(.stories):
(.world, .local):
(.world):
(.local):
(.ad):
(.contents):
(.sidebar):
(.links):
(.main-story):
(.main-story img):
(.top-story):
(.top-story img):
(.mid-story img):
(.link-group):
(.link-group img):
(.link-group ul):
(.link-group li):
(footer):
(footer ul):
(footer a):
(.footer-col):

  • demos/intersection-observer/simple/script.js: Added.

(addToLog):
(clearLog):
(stringFromRect):
(intersectedCallback):

  • demos/intersection-observer/simple/simple-observer-iframe.html: Added.
  • demos/intersection-observer/simple/simple-observer-root-margin.html: Added.
  • demos/intersection-observer/simple/simple-observer.html: Added.
  • demos/intersection-observer/simple/styles.css: Added.

(body):
(.results):
(.results button):
(h2):
(#logging):

  • demos/intersection-observer/triggered-animation/index.html: Added.
  • demos/intersection-observer/triggered-animation/script.js: Added.

(AnimationManager):
(AnimationManager.prototype.setupObserver):
(AnimationManager.prototype.intersectionsChanged):

  • demos/intersection-observer/triggered-animation/style.css: Added.

(body):
(p):
(.animation-container h1):
(.animation-container):
(.animation-container .box):
(.slide.box):
(.animation-container.visible > .slide.box):
(.slide.animation-container div:nth-of-type(1)):
(.slide.animation-container div:nth-of-type(2)):
(.slide.animation-container div:nth-of-type(3)):
(.spin):
(.animation-container.visible .spin):
(@keyframes spin):
(to):
(.animation-container.svg):
(.animation-container.svg path):
(.animation-container.svg.visible):
(@keyframes stroke-move):
(.animation-container.svg circle):
(.animation-container.svg.visible circle):
(.animation-container.svg circle:nth-of-type(2)):
(.animation-container.svg circle:nth-of-type(3)):
(.animation-container.svg circle:nth-of-type(4)):
(.animation-container.svg circle:nth-of-type(5)):
(@keyframes circle-scale):

10:51 AM Changeset in webkit [240931] by sihui_liu@apple.com
  • 9 edits in trunk/Source

IndexedDB: leak WebIDBConnectionToServer in layout tests
https://bugs.webkit.org/show_bug.cgi?id=193688
<rdar://problem/47353263>

Reviewed by Geoffrey Garen.

Source/WebCore:

Let IDBConnectionToServer keep a WeakPtr of IDBConnectionToServerDelegate.

  • Modules/indexeddb/client/IDBConnectionToServer.cpp:

(WebCore::IDBClient::IDBConnectionToServer::IDBConnectionToServer):

  • Modules/indexeddb/client/IDBConnectionToServer.h:
  • Modules/indexeddb/client/IDBConnectionToServerDelegate.h:

Source/WebKit:

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::didClose):
(WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):
(WebKit::NetworkConnectionToWebProcess::removeIDBConnectionToServer): Deleted.

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:

(WebKit::WebIDBConnectionToServer::~WebIDBConnectionToServer):

10:47 AM Changeset in webkit [240930] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

Make sure to remove the device observer in AVVideoCaptureSource
https://bugs.webkit.org/show_bug.cgi?id=194181
<rdar://problem/47739247>

Reviewed by Eric Carlson.

Make sure to remove the device observer when the observer is destroyed.
To simplify things, add the observer in AVVideoCaptureSource constructor and remove it in the destructor.

Make also sure the session observer is also removed whenever the session is released by AVVideoCaptureSource.

Covered by manual test.

  • platform/mediastream/mac/AVVideoCaptureSource.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
(WebCore::AVVideoCaptureSource::~AVVideoCaptureSource):
(WebCore::AVVideoCaptureSource::initializeSession):
(WebCore::AVVideoCaptureSource::clearSession):
(WebCore::AVVideoCaptureSource::stopProducingData):
(WebCore::AVVideoCaptureSource::setupSession):

10:19 AM Changeset in webkit [240929] by graouts@webkit.org
  • 2 edits in trunk/Source/WebKit

<rdar://problem/47788802>

Unreviewed build fix.

  • Platform/spi/ios/UIKitSPI.h:
9:37 AM Changeset in webkit [240928] by youenn@apple.com
  • 12 edits
    2 adds in trunk

Capture state should be managed consistently when doing process swapping
https://bugs.webkit.org/show_bug.cgi?id=194122
<rdar://problem/47609293>

Reviewed by Eric Carlson.

Source/WebKit:

When doing PSON, WebPageProxy::resetState is called.
It resets the media state, but does not call the client delegates.
Instead of directly updating the media state, call the routine used to update it so that client delegates are called.

Covered by new API test and layout test.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _mediaCaptureState]):

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

(WebKit::WebPageProxy::resetState):
(WebKit::WebPageProxy::isPlayingMediaDidChange):
(WebKit::WebPageProxy::updatePlayingMediaDidChange):

  • UIProcess/WebPageProxy.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

(-[GetUserMediaUIDelegate _webView:requestUserMediaAuthorizationForDevices:url:mainFrameURL:decisionHandler:]):
(-[GetUserMediaUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]):
(-[GetUserMediaUIDelegate _webView:mediaCaptureStateDidChange:]):

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

(WTR::TestRunner::isDoingMediaCapture const):

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

(WTR::TestController::isDoingMediaCapture const):

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

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::isDoingMediaCapture const):

8:22 AM Changeset in webkit [240927] by commit-queue@webkit.org
  • 12 edits
    1 add in trunk/Source

Use a dedicated type instead of int32_t for pointer identifiers
https://bugs.webkit.org/show_bug.cgi?id=194217

Patch by Antoine Quint <Antoine Quint> on 2019-02-04
Reviewed by Antti Koivisto.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:
  • dom/PointerEvent.h:
  • dom/PointerID.h: Added.
  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::setPointerCapture):
(WebCore::PointerCaptureController::releasePointerCapture):
(WebCore::PointerCaptureController::hasPointerCapture):
(WebCore::PointerCaptureController::touchEndedOrWasCancelledForIdentifier):
(WebCore::PointerCaptureController::hasCancelledPointerEventForIdentifier):
(WebCore::PointerCaptureController::cancelPointer):

  • page/PointerCaptureController.h:

Source/WebKit:

  • Scripts/webkit/messages.py:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::cancelPointer):

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

(WebKit::WebPage::cancelPointer):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
8:05 AM Changeset in webkit [240926] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

[iOS] Unable to make a selection in jsfiddle.net using arrow keys when requesting desktop site
Followup to https://bugs.webkit.org/show_bug.cgi?id=193758

Reviewed by Daniel Bates.

Put the iOS-specific behavior behind an EditingBehavior check, rather than a compile-time guard. No change in
behavior.

  • editing/EditingBehavior.h:

(WebCore::EditingBehavior::shouldMoveSelectionToEndWhenFocusingTextInput const):

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::setDefaultSelectionAfterFocus):

8:02 AM Changeset in webkit [240925] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit

Unreviewed, avoid -Wswitch warnings introduced in r240880
https://bugs.webkit.org/show_bug.cgi?id=193740
<rdar://problem/47527267>

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse):

7:49 AM Changeset in webkit [240924] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Make InlineFormattingContext::collectInlineContent non-recursive.
https://bugs.webkit.org/show_bug.cgi?id=194210

Reviewed by Antti Koivisto.

Use iterative algorithm to collect inline content (and add breaking rules).
This is in preparation for fixing the inline preferred width computation.

  • layout/Verification.cpp:

(WebCore::Layout::resolveForRelativePositionIfNeeded):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::addDetachingRules):
(WebCore::Layout::createAndAppendInlineItem):
(WebCore::Layout::InlineFormattingContext::collectInlineContent const):
(WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const): Deleted.

  • layout/inlineformatting/InlineFormattingContext.h:
7:48 AM Changeset in webkit [240923] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix unused variable warnings introduced in r240912
https://bugs.webkit.org/show_bug.cgi?id=194198
<rdar://problem/47776051>

  • page/FrameView.cpp:

(WebCore::FrameView::setNeedsCompositingConfigurationUpdate):
(WebCore::FrameView::setNeedsCompositingGeometryUpdate):

7:47 AM Changeset in webkit [240922] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK] Allow pinch zoom on touchpad
https://bugs.webkit.org/show_bug.cgi?id=194201

Patch by Alexander Mikhaylenko <exalm7659@gmail.com> on 2019-02-04
Reviewed by Michael Catanzaro.

Enable touchpad events for WebkitWebViewBase, then feed touchpad
pinch events to GestureController.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseRealize): Added GDK_TOUCHPAD_GESTURE_MASK to event mask.
(webkitWebViewBaseEvent): Added.
(webkit_web_view_base_class_init): Override event vfunc.

7:39 AM Changeset in webkit [240921] by commit-queue@webkit.org
  • 6 edits
    2 adds in trunk

[css-scroll-snap] scroll-snap-align not honored on child with non-visible overflow
https://bugs.webkit.org/show_bug.cgi?id=191816

Patch by Frederic Wang <fwang@igalia.com> on 2019-02-04
Reviewed by Wenson Hsieh.

Source/WebCore:

This patch fixes a bug that prevents children of a scroll container to create snap positions
when they have non-visible overflow. This happens because for such a child, the function
RenderBox::findEnclosingScrollableContainer() will return the child itself rather than the
scroll container. To address that issue, we introduce a new
RenderObject::enclosingScrollableContainerForSnapping() helper function that ensures that
a real RenderBox ancestor is returned.

Test: css3/scroll-snap/scroll-snap-children-with-overflow.html

  • page/scrolling/AxisScrollSnapOffsets.cpp:

(WebCore::updateSnapOffsetsForScrollableArea): Use enclosingScrollableContainerForSnapping()
so that we don't skip children with non-visible overflow.

  • rendering/RenderLayerModelObject.cpp:

(WebCore::RenderLayerModelObject::styleDidChange): Ditto. The new function calls
enclosingBox().

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::enclosingScrollableContainerForSnapping const): Return
the scrollable container of the enclosing box. If it is actually the render object itself
then start the search from the parent box instead.

  • rendering/RenderObject.h: Declare enclosingScrollableContainerForSnapping().

LayoutTests:

Add a test to verify that children with non-visible overflow create snap offsets.

  • css3/scroll-snap/scroll-snap-children-with-overflow-expected.txt: Added.
  • css3/scroll-snap/scroll-snap-children-with-overflow.html: Added.
7:36 AM Changeset in webkit [240920] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit

Unreviewed, only force settings.acceleratedCompositingEnabled() to true for Cocoa ports
https://bugs.webkit.org/show_bug.cgi?id=194166
<rdar://problem/47694328>

Accelerated compositing is broken for me at least. We're a long way from being able to force
it.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

7:00 AM Changeset in webkit [240919] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit

[GTK] Remove last python2 dependency from CMake build process
https://bugs.webkit.org/show_bug.cgi?id=194218

Patch by Abderrahim Kitouni <akitouni@gnome.org> on 2019-02-04
Reviewed by Michael Catanzaro.

  • InspectorGResources.cmake:
4:48 AM Changeset in webkit [240918] by Antti Koivisto
  • 14 edits in trunk/Source

Source/WebCore:
Rename GraphicsLayer and PlatformCALayer scrolling layer type enum values to be less ambiguous
https://bugs.webkit.org/show_bug.cgi?id=194215

Reviewed by Frédéric Wang.

GraphicsLayer::Type::Scrolling -> GraphicsLayer::Type::ScrollContainer
PlatformCALayer::LayerTypeScrollingLayer -> PlatformCALayer::LayerTypeScrollContainerLayer

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::supportsLayerType):

  • platform/graphics/GraphicsLayer.h:
  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayer::supportsLayerType):
(WebCore::GraphicsLayerCA::initialize):

  • platform/graphics/ca/PlatformCALayer.cpp:

(WebCore::operator<<):

  • platform/graphics/ca/PlatformCALayer.h:
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
(WebCore::PlatformCALayerCocoa::commonInit):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateScrollingLayers):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::ensureRootLayer):

Source/WebKit:
Rename GraphicsLayer and PlatformCALayer type enum values to match "scroll container layer" convention
https://bugs.webkit.org/show_bug.cgi?id=194215

Reviewed by Frédéric Wang.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::drawInContext):

  • UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:

(WebKit::RemoteLayerTreeHost::makeNode):

  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:

(WebKit::RemoteLayerTreeHost::makeNode):

12:15 AM Changeset in webkit [240917] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

DFG's doesGC() is incorrect about the SameValue node's behavior.
https://bugs.webkit.org/show_bug.cgi?id=194211
<rdar://problem/47608913>

Reviewed by Saam Barati.

Only the DoubleRepUse case is guaranteed to not GC. The other case may GC because
it calls operationSameValue() which may allocate memory for resolving ropes.

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

Feb 3, 2019:

11:49 PM Changeset in webkit [240916] by Antti Koivisto
  • 16 edits in trunk

[iOS] Tiles not created in large scrollable iframes
https://bugs.webkit.org/show_bug.cgi?id=193665

Reviewed by Simon Fraser.

Source/WebCore:

We are not syncing scroll position back to the graphics layer tree correctly.

Test by Frédéric Wang.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
(WebCore::AsyncScrollingCoordinator::reconcileScrollingState):
(WebCore::AsyncScrollingCoordinator::reconcileScrollPosition):

Factor setting and syncing scrolling layer positions into a function.
Use bounds.origin scrolling mechanic when scrollContainerLayer is present.

(WebCore::AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange):
(WebCore::AsyncScrollingCoordinator::setSynchronousScrollingReasons):
(WebCore::AsyncScrollingCoordinator::updateScrollLayerPosition): Deleted.

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

(WebCore::ScrollingCoordinator::scrollContainerLayerForFrameView):
(WebCore::ScrollingCoordinator::scrolledContentsLayerForFrameView):
(WebCore::ScrollingCoordinator::scrollLayerForFrameView): Deleted.

  • page/scrolling/ScrollingCoordinator.h:
  • rendering/RenderLayerCompositor.cpp:

Rename scrollLayer to scrolledContentsLayer according to out preferred naming scheme and use it in that role only.
Add scrollContainerLayer as a separate layer. It is only constructed when using async scrolling on iOS.

(WebCore::RenderLayerCompositor::~RenderLayerCompositor):
(WebCore::RenderLayerCompositor::customPositionForVisibleRectComputation const):
(WebCore::RenderLayerCompositor::visibleRectForLayerFlushing const):
(WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
(WebCore::RenderLayerCompositor::frameViewDidChangeSize):
(WebCore::RenderLayerCompositor::updateScrollLayerPosition):
(WebCore::RenderLayerCompositor::frameViewDidScroll):
(WebCore::RenderLayerCompositor::updateLayerForTopOverhangArea):
(WebCore::RenderLayerCompositor::updateLayerForBottomOverhangArea):
(WebCore::RenderLayerCompositor::updateLayerForHeader):
(WebCore::RenderLayerCompositor::updateLayerForFooter):
(WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
(WebCore::RenderLayerCompositor::ensureRootLayer):
(WebCore::RenderLayerCompositor::destroyRootLayer):
(WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):

  • rendering/RenderLayerCompositor.h:

Source/WebKit:

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:

(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateBeforeChildren):

We now use scrollContainerLayer consistently so remove the special cases.

LayoutTests:

Test by Frédéric Wang.

  • fast/scrolling/ios/scroll-iframe-expected.html:
  • fast/scrolling/ios/scroll-iframe.html:
  • platform/ios-wk2/compositing/iframes/scrolling-iframe-expected.txt:
  • platform/ios-wk2/compositing/tiling/tiled-drawing-async-frame-scrolling-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt:
11:13 PM Changeset in webkit [240915] by ysuzuki@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

[JSC] UnlinkedMetadataTable assumes that MetadataTable is destroyed before it is destructed, but order of destruction of JS heap cells are not guaranteed
https://bugs.webkit.org/show_bug.cgi?id=194031

Reviewed by Saam Barati.

UnlinkedMetadataTable assumes that MetadataTable linked against this UnlinkedMetadataTable is already destroyed when UnlinkedMetadataTable is destroyed.
This means that UnlinkedCodeBlock is destroyed after all the linked CodeBlocks are destroyed. But this assumption is not valid since GC's finalizer
sweeps objects without considering the dependencies among swept objects. UnlinkedMetadataTable can be destroyed even before linked MetadataTable is
destroyed if UnlinkedCodeBlock is destroyed before linked CodeBlock is destroyed.

To make the above assumption valid, we make UnlinkedMetadataTable RefCounted object, and make MetadataTable hold the strong ref to UnlinkedMetadataTable.
This ensures that UnlinkedMetadataTable is destroyed after all the linked MetadataTables are destroyed.

  • bytecode/MetadataTable.cpp:

(JSC::MetadataTable::MetadataTable):
(JSC::MetadataTable::~MetadataTable):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::UnlinkedCodeBlock::visitChildren):
(JSC::UnlinkedCodeBlock::estimatedSize):
(JSC::UnlinkedCodeBlock::setInstructions):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::metadata):
(JSC::UnlinkedCodeBlock::metadataSizeInBytes):

  • bytecode/UnlinkedMetadataTable.h:

(JSC::UnlinkedMetadataTable::create):

  • bytecode/UnlinkedMetadataTableInlines.h:

(JSC::UnlinkedMetadataTable::UnlinkedMetadataTable):

  • runtime/CachedTypes.cpp:

(JSC::CachedMetadataTable::decode const):
(JSC::CachedCodeBlock::metadata const):
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::CachedCodeBlock<CodeBlockType>::decode const):
(JSC::CachedCodeBlock<CodeBlockType>::encode):

6:15 PM Changeset in webkit [240914] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[curl] [WebKit] Assertion failures of missing networkStorageSession for storage/indexeddb tests
https://bugs.webkit.org/show_bug.cgi?id=194141

Reviewed by Ross Kirsling.

Implemented WebKit::NetworkProcess::switchToNewTestingSession and
WebKit::NetworkProcess::ensureSession for curl port.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::switchToNewTestingSession):
(WebKit::NetworkProcess::ensureSession):

6:11 PM Changeset in webkit [240913] by Fujii Hironori
  • 2 edits in trunk/Tools

[Win] WebKitTestRunners is failing to create the IndexedDB directory.
https://bugs.webkit.org/show_bug.cgi?id=194142

Reviewed by Ross Kirsling.

There three 'separator' variables in TestController.cpp. Renamed
it 'pathSeparator', and unified them.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::generateContextConfiguration const):
(WTR::createTestURL):
(WTR::TestController::platformAdjustContext):

5:48 PM Changeset in webkit [240912] by Simon Fraser
  • 19 edits in trunk

Make setNeedsLayout on the root more explicitly about triggering its side-effects
https://bugs.webkit.org/show_bug.cgi?id=194198

Reviewed by Antti Koivisto.

Source/WebCore:

Calling setNeedsLayout() on the FrameView or RenderView is an odd concept; the render tree
generally manages its own dirty state.

Most callers of setNeedsLayout() on the root are really trying to trigger the side-effects
of layout, like compositing updates, which are required when view configuration state, like
headers, footers and transparency, change. These dependencies are currently implicit and
poorly defined.

Renaming "setNeedsLayout" on FrameView is a step towards being more explicit about pure
rendering updates, vs updates of downstream data strutures like compositing. It's now called
setNeedsLayoutAfterViewConfigurationChange(). In addition, expose
setNeedsCompositingConfigurationUpdate() and setNeedsCompositingGeometryUpdate() so callers
can trigger the appropriate types of compositing updates on the root layer.

In addition, FrameViewLayoutContext::setNeedsLayoutAfterViewConfigurationChange() schedules a
layout. Withtout this, some callers would dirty the RenderView's layout but rely on some
other trigger to make the layout happen.

This cleanup was prompted by noticing that FrameView::setHeaderHeight() dirtied layout
but never scheduled it, making banner insertion in MiniBrowser unreliable.

This patch also removes the aliasing of headerHeight/footerHeight between Page and
FrameView. Banners are a property of Page, so FrameView fetches the banner heights
from Page.

  • page/FrameView.cpp:

(WebCore::FrameView::headerHeight const):
(WebCore::FrameView::footerHeight const):
(WebCore::FrameView::availableContentSizeChanged):
(WebCore::FrameView::setNeedsLayoutAfterViewConfigurationChange):
(WebCore::FrameView::setNeedsCompositingConfigurationUpdate):
(WebCore::FrameView::setNeedsCompositingGeometryUpdate):
(WebCore::FrameView::scheduleSelectionUpdate):
(WebCore::FrameView::setTransparent):
(WebCore::FrameView::setBaseBackgroundColor):
(WebCore::FrameView::setAutoSizeFixedMinimumHeight):
(WebCore::FrameView::enableAutoSizeMode):
(WebCore::FrameView::setHeaderHeight): Deleted.
(WebCore::FrameView::setFooterHeight): Deleted.
(WebCore::FrameView::setNeedsLayout): Deleted.

  • page/FrameView.h:
  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::setNeedsLayoutAfterViewConfigurationChange):
(WebCore::FrameViewLayoutContext::setNeedsLayout): Deleted.

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

(WebCore::Page::setPageScaleFactor):
(WebCore::Page::setHeaderHeight):
(WebCore::Page::setFooterHeight):
(WebCore::Page::addHeaderWithHeight): Deleted.
(WebCore::Page::addFooterWithHeight): Deleted.

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

(WebCore::RenderLayerCompositor::updateBacking):

  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setHeaderHeight):
(WebCore::Internals::setFooterHeight):

Source/WebKit:

Call the newly named functions.

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::updateScrollbars):

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::didInitializePlugin):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setHeaderBannerHeightForTesting):
(WebKit::WebPage::setFooterBannerHeightForTesting):

  • WebProcess/WebPage/mac/PageBannerMac.mm:

(WebKit::PageBanner::addToPage):
(WebKit::PageBanner::detachFromPage):
(WebKit::PageBanner::hide):

Source/WebKitLegacy/mac:

Call the newly named functions.

  • WebView/WebFrame.mm:

(-[WebFrame setNeedsLayout]):

  • WebView/WebHTMLView.mm:

(-[WebHTMLView setNeedsLayout:]):

Tools:

No need to set the banner heights on navigation now, since Page stores them.

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController webView:didFinishNavigation:]):

4:44 PM Changeset in webkit [240911] by wilander@apple.com
  • 7 edits
    4 adds in trunk

Parse and handle Ad Click Attribution attributes in HTMLAnchorElement::handleClick()
https://bugs.webkit.org/show_bug.cgi?id=194104
<rdar://problem/47649991>

Reviewed by Chris Dumez, Daniel Bates, and Darin Adler.

Source/WebCore:

Test: http/tests/adClickAttribution/anchor-tag-attributes-validation.html

This patch adds parsing and validation of the two new Ad Click Attribution
attributes in anchor elements: adcampaignid and addestination. The data is
not yet forwarded into the loader.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::parseAdClickAttribution const):
(WebCore::HTMLAnchorElement::handleClick):

Now calls HTMLAnchorElement::parseAdClickAttribution().

  • html/HTMLAnchorElement.h:
  • loader/AdClickAttribution.h:

Made WebCore::AdClickAttribution copyable since it's needed to have it be
WTF::Optional. Also made AdClickAttribution::MaxEntropy public. Changed
numeric types from unsigned short to uint32_t.

(WebCore::AdClickAttribution::Campaign::isValid const):
(WebCore::AdClickAttribution::Conversion::isValid const):

Tools:

  • TestWebKitAPI/Tests/WebCore/AdClickAttribution.cpp:

(TestWebKitAPI::TEST):

Changed numeric types from unsigned short to uint32_t.

LayoutTests:

This test case makes sure invalid data triggers console warnings.

  • http/tests/adClickAttribution/anchor-tag-attributes-validation-expected.txt: Added.
  • http/tests/adClickAttribution/anchor-tag-attributes-validation.html: Added.
  • platform/ios-wk2/http/tests/adClickAttribution/anchor-tag-attributes-validation-expected.txt: Added.

Console line numbers are not emitted when running iOS tests so this -expected.txt file doesn't have them.

3:43 PM Changeset in webkit [240910] by bshafiei@apple.com
  • 7 edits in branches/safari-607-branch/Source

Versioning.

2:48 PM Changeset in webkit [240909] by rniwa@webkit.org
  • 29 edits in trunk/Source

Validate navigation policy decisions to avoid crashes in continueLoadAfterNavigationPolicy
https://bugs.webkit.org/show_bug.cgi?id=194189

Reviewed by Geoffrey Garen.

Source/WebCore:

Introduced PolicyCheckIdentifier to pair each navigation policy check request with a decision,
and deployed it in PolicyChecker. The identifier is passed from WebContent process to UI process
in WebKit2, and passed it back with the policy decision.

Because PolicyCheckIdentifier embeds the process identifier from which a navigation policy is checked,
we would be able to detect when UI process had sent the decision to a wrong WebContent process.

This patch also adds release assertions to make sure history().provisionalItem() is set whenever
we're requesting a navigation policy check.

These code changes should either:

  1. Fix crashes in FrameLoader::continueLoadAfterNavigationPolicy where isBackForwardLoadType would return true yet history().provisionalItem() is null.
  2. Detect a bug that UI process can send a navigation policy decision to a wrong WebContent process.
  3. Rule out the possibility that (2) exists.
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::responseReceived):

  • loader/EmptyClients.cpp:

(WebCore::EmptyFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebCore::EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

  • loader/EmptyFrameLoaderClient.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::checkContentPolicy):
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::load):
(WebCore::FrameLoader::loadWithDocumentLoader):
(WebCore::FrameLoader::loadPostRequest):

  • loader/FrameLoader.h:
  • loader/FrameLoaderClient.h:
  • loader/FrameLoaderTypes.h:

(WebCore::PolicyCheckIdentifier): Added.
(WebCore::PolicyCheckIdentifier::operator== const): Added.
(WebCore::PolicyCheckIdentifier::PolicyCheckIdentifier): Added.
(WebCore::PolicyCheckIdentifier::encode const): Added.
(WebCore::PolicyCheckIdentifier::decode): Added.

  • loader/PolicyChecker.cpp:

(WebCore::PolicyCheckIdentifier::generate):
(WebCore::PolicyCheckIdentifier::isValidFor): Returns true if the identifer matches. Also release asserts
that the process ID is same, and that m_check is always not zero (meaning it's a generated value).
The failure of these release assertions would indicate that there is a bug in UI process, which results in
a policy decision response being sent to a wrong Web process.
(WebCore::PolicyChecker::checkNavigationPolicy): Exit early if isValidFor fails.
(WebCore::PolicyChecker::checkNewWindowPolicy):

Source/WebKit:

Pass the policy check identifier around functions and store it in PolicyDecisionSender
so that we can send it back to WebCore with the navigation policy decision.

We also store it in WebFrame in the case the policy decision had to be invalidated
before the decision was received (via WebFrame::invalidatePolicyListener).

  • Scripts/webkit/messages.py:
  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
(WebKit::ProvisionalPageProxy::decidePolicyForResponse):

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

(WebKit::WebPageProxy::PolicyDecisionSender): Added PolicyCheckIdentifier as a member.
(WebKit::WebPageProxy::PolicyDecisionSender::create):
(WebKit::WebPageProxy::PolicyDecisionSender::send):
(WebKit::WebPageProxy::PolicyDecisionSender::PolicyDecisionSender):
(WebKit::WebPageProxy::receivedNavigationPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
(WebKit::WebPageProxy::decidePolicyForResponseShared):

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

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::setUpPolicyListener):
(WebKit::WebFrame::invalidatePolicyListener):
(WebKit::WebFrame::didReceivePolicyDecision):

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

(WebKit::WebPage::didReceivePolicyDecision):

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

Source/WebKitLegacy/mac:

Pass the policy check identifier around functions and store it in WebFramePolicyListener
so that we can send it back to WebCore with the navigation policy decision.

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
(WebFrameLoaderClient::dispatchWillSubmitForm):
(WebFrameLoaderClient::setUpPolicyListener):
(-[WebFramePolicyListener initWithFrame:identifier:policyFunction:defaultPolicy:]):
(-[WebFramePolicyListener initWithFrame:identifier:policyFunction:defaultPolicy:appLinkURL:]):
(-[WebFramePolicyListener invalidate]):
(-[WebFramePolicyListener dealloc]):
(-[WebFramePolicyListener receivedPolicyDecision:]):
(-[WebFramePolicyListener initWithFrame:policyFunction:defaultPolicy:]): Deleted.
(-[WebFramePolicyListener initWithFrame:policyFunction:defaultPolicy:appLinkURL:]): Deleted.

Source/WebKitLegacy/win:

Pass the policy check identifier around functions and store it in WebFramePolicyListener
so that we can send it back to WebCore with the navigation policy decision.

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
(WebFrameLoaderClient::dispatchWillSubmitForm):
(WebFrameLoaderClient::setUpPolicyListener):

  • WebCoreSupport/WebFrameLoaderClient.h:
1:17 PM Changeset in webkit [240908] by bshafiei@apple.com
  • 7 edits in tags/Safari-608.1.3.0.2/Source

Versioning.

1:10 PM Changeset in webkit [240907] by bshafiei@apple.com
  • 1 copy in tags/Safari-608.1.3.0.2

Tag Safari-608.1.3.0.2.

1:02 PM Changeset in webkit [240906] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Don't include ScrollCoordinator.h from Element.h
https://bugs.webkit.org/show_bug.cgi?id=194206

Reviewed by Daniel Bates.

  • dom/Element.h:
12:52 PM Changeset in webkit [240905] by Wenson Hsieh
  • 4 edits
    2 adds in trunk

Unable to move selection into editable roots with 0 height
https://bugs.webkit.org/show_bug.cgi?id=194143
<rdar://problem/47767284>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Currently, positions inside editable elements of height 0 are not considered to be candidates when
canonicalizing a position to its visible counterpart. This prevents us from moving the selection into these
editable roots at all. To fix this, we relax this constraint by allowing positions anchored by root editable
elements to be candidates.

Test: editing/selection/insert-text-in-empty-content-editable.html

  • dom/Position.cpp:

(WebCore::Position::isCandidate const):

LayoutTests:

Add a new layout test that executes editing commands in a contenteditable element of height 0, and adjust an
existing layout test that copies and pastes an image element to wait until the image has loaded.

  • editing/pasteboard/styled-element-markup.html:
  • editing/selection/insert-text-in-empty-content-editable-expected.txt: Added.
  • editing/selection/insert-text-in-empty-content-editable.html: Added.
11:46 AM Changeset in webkit [240904] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Tidyup of Pagination and FrameView m_mediaType initialization
https://bugs.webkit.org/show_bug.cgi?id=194203

Reviewed by Darin Adler.

Fix post-commit feedback on lines around code changed in r240901.

  • page/FrameView.cpp:

(WebCore::FrameView::FrameView):

  • page/FrameView.h:
  • rendering/Pagination.h:

(WebCore::Pagination::operator!= const):

5:53 AM Changeset in webkit [240903] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

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

"Fixes leaks, but is probably not the correct fix." (Requested
by ddkilzer on #webkit).

Reverted changeset:

"Leak of WTF::StringImpl under SymbolImpl::createNullSymbol()
(48 bytes) in com.apple.WebKit.WebContent running layout
tests"
https://bugs.webkit.org/show_bug.cgi?id=193291
https://trac.webkit.org/changeset/240896

1:05 AM Changeset in webkit [240902] by Megan Gardner
  • 26 edits
    3 copies
    10 adds in trunk

Turn on Smart Paste
https://bugs.webkit.org/show_bug.cgi?id=193786

Reviewed by Ryosuke Niwa.

Source/WebCore:

Turned on a modified tests:
LayoutTests/editing/pasteboard/smart-paste-001.html
LayoutTests/editing/pasteboard/smart-paste-002.html
LayoutTests/editing/pasteboard/smart-paste-003.html
LayoutTests/editing/pasteboard/smart-paste-004.html
LayoutTests/editing/pasteboard/smart-paste-005.html
LayoutTests/editing/pasteboard/smart-paste-006.html
LayoutTests/editing/pasteboard/smart-paste-007.html
LayoutTests/editing/pasteboard/smart-paste-008.html

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::canSmartReplace):
Turn on smart replace.

Source/WebKit:

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/ios/TextCheckerIOS.mm:

(WebKit::TextChecker::isSmartInsertDeleteEnabled):
Use the flag from UIKit to determine if smart copy paste should be
turned on.

LayoutTests:

Rebaselined many tests and/or added iOS specific expectations to
correctly reflect smart copy paste behavior.

  • editing/editing.js:

(runEditingTestWithCallbackLogging):
(runDumpAsTextEditingTest):
Added ability to handle async functions.

  • editing/pasteboard/smart-paste-001.html:
  • editing/pasteboard/smart-paste-002.html:
  • editing/pasteboard/smart-paste-003.html:
  • editing/pasteboard/smart-paste-004.html:
  • editing/pasteboard/smart-paste-005.html:
  • editing/pasteboard/smart-paste-006.html:
  • editing/pasteboard/smart-paste-007.html:
  • editing/pasteboard/smart-paste-008.html:
  • platform/ios-wk2/editing/pasteboard/smart-paste-007-expected.txt:
  • platform/ios-wk2/editing/pasteboard/smart-paste-008-expected.txt:
  • platform/ios/TestExpectations:
  • platform/ios/editing/pasteboard/smart-paste-001-expected.txt: Added.
  • platform/ios/editing/pasteboard/smart-paste-002-expected.txt: Added.
  • platform/ios/editing/pasteboard/smart-paste-003-expected.txt: Added.
  • platform/ios/editing/pasteboard/smart-paste-004-expected.txt: Added.
  • platform/ios/editing/pasteboard/smart-paste-005-expected.txt: Added.
  • platform/ios/editing/pasteboard/smart-paste-006-expected.txt: Added.
  • resources/ui-helper.js:

(window.UIHelper.doubleClickAt):
(window.UIHelper.async.selectWordByDoubleTapOrClick):
Added helper functions to allow for selecting a word by double tap or click.

Feb 2, 2019:

4:16 PM Changeset in webkit [240901] by Simon Fraser
  • 11 edits in trunk/Source

Tidy up data memebers of FrameView and related classes to shrink class sizes
https://bugs.webkit.org/show_bug.cgi?id=194197

Reviewed by Zalan Bujtas.

Source/WebCore:

Make various enums 8-bit. Re-order data members of FrameView, FrameViewLayoutContext, Widget
and ScrollView to optimize padding.

Use more data member initializers.

This shrinks FrameView from 1168 (144 padding bytes) to 1096 (96 padding bytes).

  • dom/Element.h:
  • page/FrameView.cpp:

(WebCore::FrameView::FrameView):

  • page/FrameView.h:
  • page/FrameViewLayoutContext.h:
  • platform/ScrollTypes.h:
  • platform/ScrollView.h: Data members should come after member functions.
  • platform/Widget.h:
  • rendering/Pagination.h:

(WebCore::Pagination::Pagination): Deleted.

Source/WebKit:

  • UIProcess/PageClient.h: Declare enum size.
12:20 PM Changeset in webkit [240900] by ddkilzer@apple.com
  • 2 edits in trunk/Tools

Leak of NSArray (4.25 Kbytes) in com.apple.WebKit.WebContent running WebKit layout tests on iOS Simulator
<https://webkit.org/b/194178>
<rdar://problem/47753473>

Reviewed by Alexey Proskuryakov.

  • WebKitTestRunner/InjectedBundle/cocoa/ActivateFontsCocoa.mm:

(WTR::uninstallFakeHelvetica): Pass nullptr into
CTFontManagerUnregisterFontsForURLs() to ignore any errors.

12:05 PM Changeset in webkit [240899] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Rename "scrollingLayer" in RenderLayerBacking to "scrollContainerLayer" for clarity
https://bugs.webkit.org/show_bug.cgi?id=194194

Rubber-stampted by Antti Koivisto.

Our desired terminology is "scrollContainerLayer" for the outer, clipping layer
for scrolling, and "scrolledContentsLayer" for the contents that move when you scroll.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateDebugIndicators):
(WebCore::RenderLayerBacking::destroyGraphicsLayers):
(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::setLocationOfScrolledContents):
(WebCore::RenderLayerBacking::updateAfterDescendants):
(WebCore::RenderLayerBacking::updateInternalHierarchy):
(WebCore::RenderLayerBacking::updateDrawsContent):
(WebCore::RenderLayerBacking::updateScrollingLayers):

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

(WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
(WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):
(WebCore::LegacyWebKitScrollingLayerCoordinator::registerAllViewportConstrainedLayers):
(WebCore::LegacyWebKitScrollingLayerCoordinator::updateScrollingLayer):
(WebCore::LegacyWebKitScrollingLayerCoordinator::unregisterAllScrollingLayers):
(WebCore::LegacyWebKitScrollingLayerCoordinator::removeScrollingLayer):

11:53 AM Changeset in webkit [240898] by Justin Fan
  • 12 edits
    3 copies in trunk

Source/WebCore:
[Web GPU] Fix GPURenderPassEncoder::setVertexBuffers and allow overlapping indices with GPUBindGroups
https://bugs.webkit.org/show_bug.cgi?id=194125

Reviewed by Myles C. Maxfield.

GPURenderPassEncoder::setVertexBuffers is now actually written to set all buffers provided. In addition,
shift vertex input buffer indices so that any resource bindings can bind vertex buffer resources to the same indices.

Existing tests cover setVertexBuffers. Updated buffer-resource-triangles to assign bind groups and vertex buffers to the same index.

  • Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.cpp: Added.

(WebCore::WHLSL::Metal::calculateVertexBufferIndex): Simple shifting function for vertex input buffer indices.

  • Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.h: Added.
  • Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:

(WebCore::WebGPUProgrammablePassEncoder::setBindGroup const): Limit maximum bind group indices to 0 to 3.

  • Modules/webgpu/WebGPURenderPassEncoder.cpp:

(WebCore::WebGPURenderPassEncoder::setVertexBuffers): Limit vertex input indices to 0 to 15.

  • Modules/webgpu/WebGPURenderPassEncoder.h: Move IDL/bindings bug note to IDL file.
  • Modules/webgpu/WebGPURenderPassEncoder.idl: Ditto.
  • platform/graphics/gpu/GPULimits.h: Added. Home for Web GPU limits constants shared between files.
  • platform/graphics/gpu/GPURenderPassEncoder.h: Change IDL/bindings bug workaround to unsigned long long to prevent narrowing compared to spec.
  • platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:

(WebCore::GPURenderPassEncoder::setVertexBuffers): Now properly calls Metal's setVertexBuffers.

  • platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:

(WebCore::setInputStateForPipelineDescriptor): Fix validation checks for vertex attribute numbers and vertex buffer indices.

Add symbols to project:

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

LayoutTests:
[WebGPU] Fix GPURenderPassEncoder::setVertexBuffers and allow overlapping indices with GPUBindGroups
https://bugs.webkit.org/show_bug.cgi?id=194125

Reviewed by Myles C. Maxfield.

Updated buffer-resource-triangles to assign bind groups and vertex buffers to the same index.

  • webgpu/buffer-resource-triangles.html:
11:09 AM Changeset in webkit [240897] by Simon Fraser
  • 6 edits in trunk/Source/WebCore

Async overflow scroll is jumpy on macOS if the main thread is busy
https://bugs.webkit.org/show_bug.cgi?id=194184
<rdar://problem/47758655>

Reviewed by Antti Koivisto.

This change extends to macOS some existing overflow-scroll functionality for iOS.
When an async scroll is in process in the scroll thread (or UI process), we periodically
message back to the web process main thread with scroll position updates. These
can trigger post-scroll compositing updates, but we need to ensure that this update
doesn't clobber the scroll position of the native layers, which would trigger
stutters.

To do this we have the notion of a scroll position "sync" (ScrollingLayerPositionAction::Sync) which
pokes the new value into the GraphicsLayer (hence making visible rect computations work), but doesn't
propagate it to the platform layer. This patch wires up syncs for macOS during async overflow scrolling,
coming out of AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll().

In RenderLayerBacking, m_scrollingContentsLayer is renamed to m_scrolledContentsLayer, and I added
updateScrollOffset() and setLocationOfScrolledContents() to handle the set vs. sync, and to keep
the iOS vs macOS differences in one function. This allows for more code sharing in RenderLayerBacking::updateGeometry().

There's a confusing bit in the m_childClippingMaskLayer code (trac.webkit.org/178029) where the setOffsetFromRenderer()
just looks wrong; it should match m_scrollingLayer. This code is never hit for Cocoa, which never has m_childClippingMaskLayer.

  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:

(WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollPosition): Logging
(WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollLayerPosition): Logging

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::scrollTo):

  • rendering/RenderLayer.h: Rename m_requiresScrollBoundsOriginUpdate to m_requiresScrollPositionReconciliation

and make it available on all platforms. Just reorder m_adjustForIOSCaretWhenScrolling to reduce #ifdef nesting confusion.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateDebugIndicators):
(WebCore::RenderLayerBacking::destroyGraphicsLayers):
(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::setLocationOfScrolledContents):
(WebCore::RenderLayerBacking::updateScrollOffset):
(WebCore::RenderLayerBacking::updateDrawsContent):
(WebCore::RenderLayerBacking::updateScrollingLayers):
(WebCore::RenderLayerBacking::paintingPhaseForPrimaryLayer const):
(WebCore::RenderLayerBacking::parentForSublayers const):
(WebCore::RenderLayerBacking::setContentsNeedDisplay):
(WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):
(WebCore::RenderLayerBacking::paintContents):
(WebCore::RenderLayerBacking::backingStoreMemoryEstimate const):

  • rendering/RenderLayerBacking.h:
10:35 AM Changeset in webkit [240896] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WTF

Leak of WTF::StringImpl under SymbolImpl::createNullSymbol() (48 bytes) in com.apple.WebKit.WebContent running layout tests
<https://webkit.org/b/193291>
<rdar://problem/46655953>

Reviewed by Keith Miller.

  • wtf/text/SymbolImpl.h:

(WTF::SymbolImpl::~SymbolImpl): Fix the leak by implementing the
class destructor that calls StringImpl::deref() on m_owner.
Two of the three constructors leak the StringImpl when setting
m_owner, so we need to balance that by manually calling
deref().

8:32 AM Changeset in webkit [240895] by Alan Bujtas
  • 7 edits in trunk

[LFC] Initialize ICB's style with fixed width/height.
https://bugs.webkit.org/show_bug.cgi?id=194188

Reviewed by Antti Koivisto.

Source/WebCore:

Let's set ICB's logical width/height to Fixed so that it's available when we try to resolve a box's height
in FormattingContext::Geometry::computedHeightValue() by using the containing block's height (ICB in this case).

  • layout/LayoutState.cpp:

(WebCore::Layout::LayoutState::LayoutState):

  • layout/LayoutState.h:
  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createLayoutTree):

Tools:

  • LayoutReloaded/misc/LFC-passing-tests.txt:
8:26 AM Changeset in webkit [240894] by Alan Bujtas
  • 5 edits
    2 adds in trunk

[LFC] Add missing case to out-of-flow non-replaced horizontal used margin value computation
https://bugs.webkit.org/show_bug.cgi?id=194185

Reviewed by Antti Koivisto.

Source/WebCore:

If none of horizontal values (left, right, width, margin-left/right) are auto, then usedHorizontalMarginValues = computedHorizontalMarginValues.

Test: fast/block/block-only/absolute-position-left-right-margin.html

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):

Tools:

  • LayoutReloaded/misc/LFC-passing-tests.txt:

LayoutTests:

  • fast/block/block-only/absolute-position-left-right-margin-expected.html: Added.
  • fast/block/block-only/absolute-position-left-right-margin.html: Added.

Feb 1, 2019:

11:15 PM Changeset in webkit [240893] by ysuzuki@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

[JSC] Decouple JIT related data from CodeBlock
https://bugs.webkit.org/show_bug.cgi?id=194187

Patch by Yusuke Suzuki <ysuzuki@apple.com> on 2019-02-01
Reviewed by Saam Barati.

CodeBlock holds bunch of data which is only used after JIT starts compiling it.
We have three types of data in CodeBlock.

  1. The data which is always used. CodeBlock needs to hold it.
  2. The data which is touched even in LLInt, but it is only meaningful in JIT tiers. The example is profiling.
  3. The data which is used after the JIT compiler starts running for the given CodeBlock.

This patch decouples (3) from CodeBlock as CodeBlock::JITData. Even if we have bunch of CodeBlocks, only small
number of them gets JIT compilation. Always allocating (3) data enlarges the size of CodeBlock, leading to the
memory waste. Potentially we can decouple (2) in another data structure, but we first do (3) since (3) is beneficial
in both non-JIT and *JIT* modes.

JITData is created only when JIT compiler wants to use it. So it can be concurrently created and used, so it is guarded
by the lock of CodeBlock.

The size of CodeBlock is reduced from 512 to 352.

This patch improves memory footprint and gets 1.1% improvement in RAMification.

Footprint geomean: 36696503 (34.997 MB)
Peak Footprint geomean: 38595988 (36.808 MB)
Score: 37634263 (35.891 MB)

Footprint geomean: 37172768 (35.451 MB)
Peak Footprint geomean: 38978288 (37.173 MB)
Score: 38064824 (36.301 MB)

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::~CodeBlock):
(JSC::CodeBlock::propagateTransitions):
(JSC::CodeBlock::ensureJITDataSlow):
(JSC::CodeBlock::finalizeBaselineJITInlineCaches):
(JSC::CodeBlock::getICStatusMap):
(JSC::CodeBlock::addStubInfo):
(JSC::CodeBlock::addJITAddIC):
(JSC::CodeBlock::addJITMulIC):
(JSC::CodeBlock::addJITSubIC):
(JSC::CodeBlock::addJITNegIC):
(JSC::CodeBlock::findStubInfo):
(JSC::CodeBlock::addByValInfo):
(JSC::CodeBlock::addCallLinkInfo):
(JSC::CodeBlock::getCallLinkInfoForBytecodeIndex):
(JSC::CodeBlock::addRareCaseProfile):
(JSC::CodeBlock::rareCaseProfileForBytecodeOffset):
(JSC::CodeBlock::rareCaseProfileCountForBytecodeOffset):
(JSC::CodeBlock::resetJITData):
(JSC::CodeBlock::stronglyVisitStrongReferences):
(JSC::CodeBlock::shrinkToFit):
(JSC::CodeBlock::linkIncomingCall):
(JSC::CodeBlock::linkIncomingPolymorphicCall):
(JSC::CodeBlock::unlinkIncomingCalls):
(JSC::CodeBlock::updateAllPredictionsAndCountLiveness):
(JSC::CodeBlock::dumpValueProfiles):
(JSC::CodeBlock::setPCToCodeOriginMap):
(JSC::CodeBlock::findPC):
(JSC::CodeBlock::dumpMathICStats):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::ensureJITData):
(JSC::CodeBlock::setJITCodeMap):
(JSC::CodeBlock::jitCodeMap):
(JSC::CodeBlock::likelyToTakeSlowCase):
(JSC::CodeBlock::couldTakeSlowCase):
(JSC::CodeBlock::lazyOperandValueProfiles):
(JSC::CodeBlock::stubInfoBegin): Deleted.
(JSC::CodeBlock::stubInfoEnd): Deleted.
(JSC::CodeBlock::callLinkInfosBegin): Deleted.
(JSC::CodeBlock::callLinkInfosEnd): Deleted.
(JSC::CodeBlock::jitCodeMap const): Deleted.
(JSC::CodeBlock::numberOfRareCaseProfiles): Deleted.

  • bytecode/MethodOfGettingAValueProfile.cpp:

(JSC::MethodOfGettingAValueProfile::emitReportValue const):
(JSC::MethodOfGettingAValueProfile::reportValue):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):

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

(JSC::tryGetByValOptimize):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::privateCompileGetByVal):
(JSC::JIT::privateCompilePutByVal):

8:05 PM Changeset in webkit [240892] by Darin Adler
  • 25 edits in trunk

Convert additional String::format clients to alternative approaches
https://bugs.webkit.org/show_bug.cgi?id=192746

Reviewed by Alexey Proskuryakov.

Source/JavaScriptCore:

  • inspector/agents/InspectorConsoleAgent.cpp:

(Inspector::InspectorConsoleAgent::stopTiming): Use makeString
and FormattedNumber::fixedWidth.

Source/WebCore:

This round of conversions covers less-trivial cases such as floating
point numerals and hexadecimal. Not yet taking on pointer serialization
("%p") or padding with spaces of zero digits, so call sites using those
have been left untouched.

In some cases these new idioms are a bit clumsy, and we could follow up
with additional convenience functions to make them more elegant.

  • Modules/indexeddb/IDBKeyData.cpp:

(WebCore::IDBKeyData::loggingString const): Use more ASCIILiteral and
more appendLiteral for efficiency. Use upperNibbleToLowercaseASCIIHexDigit,
lowerNibbleToLowercaseASCIIHexDigit, and also makeString and FormattedNumber.

  • css/MediaQueryEvaluator.cpp:

(WebCore::aspectRatioValueAsString): Use makeString and FormattedNumber.
Doing it this way makes it a little clearer that we have an unpleasant
use of fixed 6-digit precision here.

  • html/FTPDirectoryDocument.cpp:

(WebCore::processFilesizeString): Use makeString and FormattedNumber.

  • html/track/VTTCue.cpp:

(WebCore::VTTCueBox::applyCSSProperties): Ditto.

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::CaptionUserPreferencesMediaAF::windowRoundedCornerRadiusCSS const): Ditto.

  • page/History.cpp:

(WebCore::History::stateObjectAdded): Ditto.

  • page/cocoa/ResourceUsageOverlayCocoa.mm:

(WebCore::formatByteNumber): Ditto.
(WebCore::gcTimerString): Use String::number.
(WebCore::ResourceUsageOverlay::platformDraw): Use makeString and FormattedNumber.

  • page/scrolling/AxisScrollSnapOffsets.cpp:

(WebCore::snapOffsetsToString): Removed some unnecessary copying in the for loop,
use appendLiteral, and use appendFixedWidthNumber.
(WebCore::snapOffsetRangesToString): Ditto.
(WebCore::snapPortOrAreaToString): Use makeString and FormattedNumber.

  • platform/animation/TimingFunction.cpp:

(WebCore::TimingFunction::cssText const): Use makeString.

  • platform/cocoa/KeyEventCocoa.mm:

(WebCore::keyIdentifierForCharCode): Use makeString and the ASCIIHexDigit
functions.

  • platform/graphics/Color.cpp:

(WebCore::Color::nameForRenderTreeAsText const): Ditto.

  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::drawText): Use makeString and FormattedNumber.

  • platform/text/PlatformLocale.cpp:

(WebCore::DateTimeStringBuilder::visitField): Use String::numberToStringFixedWidth.

Source/WebCore/PAL:

  • pal/FileSizeFormatter.cpp:

(fileSizeDescription): Use makeString and FormattedNumber.

Source/WebKit:

  • UIProcess/Cocoa/ViewGestureController.cpp:

(WebKit::ViewGestureController::SnapshotRemovalTracker::startWatchdog):
Use makeString and FormattedNumber.

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticator::getAssertion): Added a comment about an
incorrect format specifier and left this code as is for now.

Source/WTF:

  • wtf/JSONValues.cpp:

(WTF::appendDoubleQuotedStringEscapedCharacter): Renamed from
escapeChar and reordered arguments to make sense as an append function.
(WTF::appendDoubleQuotedString): Renamed from doubleQuoteString,
reordered arguments to make sense as an append function, take a
StringView instead of a String, used early exit to make the code
a bit easier to read. Use the ASCIIHexDigit functions to construct
a hex number a nibble at a time rather than using String::format.
(WTF::JSONImpl::Value::writeJSON const): Update for name change.
(WTF::JSONImpl::ObjectBase::writeJSON const): Ditto.

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::originUserVisibleName): Use makeString and reduce the use of std::string
as an intermediate in code that ultimately constructs a WTF::String.
(WTR::userMediaOriginHash): Use makeString.
(WTR::TestController::didNavigateWithNavigationData): More of the same.
(WTR::TestController::didPerformClientRedirect): Ditto.
(WTR::TestController::didPerformServerRedirect): Ditto.
(WTR::TestController::didUpdateHistoryTitle): Ditto.

6:30 PM Changeset in webkit [240891] by Simon Fraser
  • 8 edits in trunk/Source/WebCore

Remove the unused layerForScrolling()
https://bugs.webkit.org/show_bug.cgi?id=194180

Reviewed by Zalan Bujtas.

Remove ScrollableArea::layerForScrolling() and derivations. This was unused.

  • page/FrameView.cpp:

(WebCore::FrameView::layerForScrolling const): Deleted.

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

(WebCore::ScrollingCoordinator::scrollLayerForScrollableArea): Deleted.

  • page/scrolling/ScrollingCoordinator.h:
  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::layerForScrolling const): Deleted.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects const):

  • rendering/RenderLayer.h:
6:19 PM Changeset in webkit [240890] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Add unit test to verify builder keys
https://bugs.webkit.org/show_bug.cgi?id=194152

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/loadConfig_unittest.py:

(ConfigDotJSONTest.test_builder_keys): Added unit-test.

4:45 PM Changeset in webkit [240889] by ddkilzer@apple.com
  • 5 edits
    1 move in trunk/Source

Move soft-linking of TelephonyUtilities.framework out of TUCallSPI.h
<https://webkit.org/b/193866>

Reviewed by Alex Christensen.

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/PlatformMac.cmake:
  • Update for rename of TUCallSPI.h to TelephonyUtilitiesSPI.h.
  • pal/spi/mac/TelephonyUtilitiesSPI.h: Rename from Source/WebCore/PAL/pal/spi/mac/TUCallSPI.h.
  • Remove soft-linking code from header.

Source/WebKit:

  • Platform/mac/MenuUtilities.mm:
  • Update for rename of TUCallSPI.h to TelephonyUtilitiesSPI.h.
  • Add soft-linking code formerly in TUCallSPI.h.
4:24 PM Changeset in webkit [240888] by ysuzuki@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Remove some of IsoSubspaces for JSFunction subclasses
https://bugs.webkit.org/show_bug.cgi?id=194177

Reviewed by Saam Barati.

JSGeneratorFunction, JSAsyncFunction, and JSAsyncGeneratorFunction do not add any fields / classInfo methods.
We can share the IsoSubspace for JSFunction.

  • runtime/JSAsyncFunction.h:
  • runtime/JSAsyncGeneratorFunction.h:
  • runtime/JSGeneratorFunction.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
3:59 PM Changeset in webkit [240887] by Alan Bujtas
  • 2 edits in trunk/Tools

[LFC] Expand tests coverage (12 new tests -> 787)

Unreviewed test gardening.

  • LayoutReloaded/misc/LFC-passing-tests.txt:
3:54 PM Changeset in webkit [240886] by Alan Bujtas
  • 4 edits in trunk

[LFC] Fix statically positioned replaced out-of-flow horizontal geometry
https://bugs.webkit.org/show_bug.cgi?id=194163

Reviewed by Simon Fraser.

Source/WebCore:

Fix a typo.

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):

Tools:

775

  • LayoutReloaded/misc/LFC-passing-tests.txt:
3:32 PM Changeset in webkit [240885] by achristensen@apple.com
  • 6 edits
    4 moves
    1 add in trunk/Source/WebKit

Move XPCService entry points from mac directory to new Cocoa directory
https://bugs.webkit.org/show_bug.cgi?id=194129

Reviewed by Chris Dumez.

  • Configurations/NetworkService.xcconfig:
  • Configurations/PluginService.64.xcconfig:
  • Configurations/WebContentService.xcconfig:
  • NetworkProcess/EntryPoint/Cocoa: Copied from Source/WebKit/NetworkProcess/EntryPoint/mac.
  • NetworkProcess/EntryPoint/mac: Removed.
  • PluginProcess/EntryPoint/Cocoa: Copied from Source/WebKit/PluginProcess/EntryPoint/mac.
  • PluginProcess/EntryPoint/mac: Removed.
  • Shared/EntryPointUtilities/Cocoa: Copied from Source/WebKit/Shared/EntryPointUtilities/mac.
  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:
  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.mm:
  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
  • Shared/EntryPointUtilities/mac: Removed.
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/EntryPoint/Cocoa: Copied from Source/WebKit/WebProcess/EntryPoint/mac.
  • WebProcess/EntryPoint/mac: Removed.
3:29 PM Changeset in webkit [240884] by Devin Rousso
  • 5 edits
    4 adds in trunk/Source/WebInspectorUI

Web Inspector: create icons for media event types instead of using a blue circle
https://bugs.webkit.org/show_bug.cgi?id=190381
<rdar://problem/45507995>

Reviewed by Brian Burg.

  • UserInterface/Models/DOMNode.js:

(WI.DOMNode.isPlayEvent): Added.
(WI.DOMNode.isPauseEvent): Added.
(WI.DOMNode.isStopEvent): Added.

  • UserInterface/Views/DOMEventsBreakdownView.js:

(WI.DOMEventsBreakdownView.prototype.layout):

  • UserInterface/Views/DOMEventsBreakdownView.css:

(.dom-events-breakdown tr > :matches(th, td)):
(.dom-events-breakdown .graph):
(.dom-events-breakdown .graph > :matches(img, .area)): Added.
(.dom-events-breakdown .graph > img): Added.
(.dom-events-breakdown .inherited > .name, .dom-events-breakdown .inherited > .graph > img): Added.
(.dom-events-breakdown .graph > :matches(.point, .area)): Deleted.
(.dom-events-breakdown .graph > .point): Deleted.
(.dom-events-breakdown .inherited > .name, .dom-events-breakdown .inherited > .graph > .point): Deleted.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype._populateWaterfallGraph.createDOMEventLine):

  • UserInterface/Images/EventPause.svg: Added.
  • UserInterface/Images/EventPlay.svg: Added.
  • UserInterface/Images/EventProcessing.svg: Added.
  • UserInterface/Images/EventStop.svg: Added.
3:27 PM Changeset in webkit [240883] by Megan Gardner
  • 14 edits in trunk/LayoutTests

Rewrite and rebaseline smart copy paste tests to work on iOS and MacOS
https://bugs.webkit.org/show_bug.cgi?id=194175

Reviewed by Megan Gardner.

Using the functions committed in 194070 Ryosuke wrote, make the
smart copy paste tests run on both iOS and MacOS.
These tests will be turned on in 193786.

  • editing/editing.js:

(runEditingTestWithCallbackLogging):
(runDumpAsTextEditingTest):

  • editing/pasteboard/smart-paste-001.html:
  • editing/pasteboard/smart-paste-002-expected.txt:
  • editing/pasteboard/smart-paste-002.html:
  • editing/pasteboard/smart-paste-003.html:
  • editing/pasteboard/smart-paste-004.html:
  • editing/pasteboard/smart-paste-005-expected.txt:
  • editing/pasteboard/smart-paste-005.html:
  • editing/pasteboard/smart-paste-006-expected.txt:
  • editing/pasteboard/smart-paste-006.html:
  • editing/pasteboard/smart-paste-007.html:
  • editing/pasteboard/smart-paste-008.html:
  • platform/mac/editing/pasteboard/smart-paste-008-expected.txt:
3:12 PM Changeset in webkit [240882] by Wenson Hsieh
  • 20 edits
    2 adds in trunk

[iOS] Consistent 1 sec hang when triggering modal alerts while handling synchronous touch events
https://bugs.webkit.org/show_bug.cgi?id=194140
<rdar://problem/47728098>

Reviewed by Tim Horton.

Source/WebKit:

Currently, the UI process hangs when attempting to synchronously present modal UI from the web process while the
UI process is waiting for sync IPC in the web process. While we have logic to generally mitigate IPC deadlock in
this scenario by dispatching the web process' sync IPC immediately with the intention of allowing the web
process to finish processing sync IPC (and consequently unblock the UI process), this fails in the case where
the sync IPC message from the web process to the UI process requires main thread execution for an arbitrary
amount of time (for instance, modal alert dialogs). In this case, we'll end up in a state where we've handled
the web process' sync IPC in the UI process, yet we can't resume execution since the web process is still
blocked.

By far the most egregious scenario in which this manifests is during synchronous gesture recognizer IPC, i.e.
grabbing position information from the UI process, and handling touch events synchronously. Luckily, these are
also cases where (1) we know sync IPC may safely time out, and (2) the presentation of modal UI from the web
process should cause the gesture recognizers to fail anyways. As such, we can mitigate these scenarios in the
web process by responding to the these pending sync IPC messages *before* sending our own sync IPC to the UI
process.

Test: fast/events/touch/ios/show-modal-alert-during-touch-start.html

  • Shared/ios/InteractionInformationAtPosition.h:

(WebKit::InteractionInformationAtPosition::invalidInformation):

  • Shared/ios/InteractionInformationAtPosition.mm:

(WebKit::InteractionInformationAtPosition::encode const):
(WebKit::InteractionInformationAtPosition::decode):

Add a new flag to indicate whether an interaction information response can be valid. Interaction information
cannot be valid in the case where the interaction information request was interrupted by certain sync IPC
messages from the web process.

  • UIProcess/API/C/WKContextConfigurationRef.cpp:

(WKContextConfigurationIgnoreSynchronousMessagingTimeoutsForTesting):
(WKContextConfigurationSetIgnoreSynchronousMessagingTimeoutsForTesting):

Add some testing SPI to ignore sync IPC timeouts, for the purposes of testing. Rather than use the existing
Objective-C SPI in WKWebProcessPoolConfiguration, I decided to add C API plumbing for this flag, so that other
non-Cocoa ports may also support the new layout test option to ignore sync IPC timeouts.

  • UIProcess/API/C/WKContextConfigurationRef.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView ensurePositionInformationIsUpToDate:]):
(-[WKContentView _positionInformationDidChange:]):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::runBeforeUnloadConfirmPanel):
(WebKit::WebChromeClient::runJavaScriptAlert):
(WebKit::WebChromeClient::runJavaScriptConfirm):
(WebKit::WebChromeClient::runJavaScriptPrompt):
(WebKit::WebChromeClient::print):
(WebKit::WebChromeClient::exceededDatabaseQuota):
(WebKit::WebChromeClient::reachedApplicationCacheOriginQuota):

Cancel any pending sync IPC replies prior to sending sync IPC messages to the UI process which may result in
sync IPC deadlock, by using the new helper method, sendSyncWithDelayedReply, instead of just sendSync.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::cancelGesturesBlockedOnSynchronousReplies):

Add a helper to cancel pending sync messages coming in from the UI process that are being called from within
gesture recognizer delegate hooks.

(WebKit::WebPage::touchEventSync):

  • WebProcess/WebPage/WebPage.h:

Add a new helper, sendSyncWithDelayedReply, to be used when sending a sync IPC message to the UI process that
cannot be immediately completed upon arrival. Importantly, this cancels pending sync replies, and also passes
IPC::SendSyncOption::InformPlatformProcessWillSuspend.

  • WebProcess/WebPage/WebPage.messages.in:

Change these from LegacySync to Delayed messages.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getPositionInformation):

Make this sync IPC handler (as well as WebPage::touchEventSync) store the IPC reply during the scope of the
method, and invoke the stored reply at the end of the method if it wasn't interrupted due to something calling
cancelGesturesBlockedOnSynchronousReplies().

(WebKit::WebPage::positionInformation):

Refactor getPositionInformation by pulling out the logic for building an InteractionInformationAtPosition into
a separate helper.

(WebKit::WebPage::requestPositionInformation):

Tools:

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

(WTR::TestRunner::setShouldDismissJavaScriptAlertsAsynchronously):

Add a new TestRunner hook to make modal JavaScript alerts dismiss asynchronously. This is used by the new layout
test to induce an IPC deadlock when presenting a modal alert during touch start.

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

(WTR::runJavaScriptAlert):

Add a client callback function for running JavaScript alerts.

(WTR::TestController::createOtherPage):
(WTR::TestController::generateContextConfiguration const):

Add a test option to disable IPC timeouts for a layout test. This forces the test to reliably time out without
the fix in this patch.

(WTR::TestController::createWebViewWithOptions):

Plumb TestOptions to generateContextConfiguration.

(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::TestController::resetStateToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):
(WTR::TestController::setShouldDismissJavaScriptAlertsAsynchronously):
(WTR::TestController::handleJavaScriptAlert):

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

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

LayoutTests:

Add a test that induces sync IPC deadlock by presenting a modal alert while handling touch start. This test
forces sync IPC timeouts to be disabled, and passes if we do not time out while handling a touch.

  • fast/events/touch/ios/show-modal-alert-during-touch-start-expected.txt: Added.
  • fast/events/touch/ios/show-modal-alert-during-touch-start.html: Added.
3:08 PM Changeset in webkit [240881] by david_quesada@apple.com
  • 2 edits in trunk/Source/WebKit

Network Process crash when resuming downloads: '-[NSDictionaryI setObject:forKey:]: unrecognized selector sent to instance %p'
https://bugs.webkit.org/show_bug.cgi?id=194144
rdar://problem/47553456

Reviewed by Geoffrey Garen.

  • NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:

(WebKit::Download::resume):

Make a mutable copy of the root object decoded from the resume data.
It might have been originally encoded as an immutable dictionary.

2:52 PM Changeset in webkit [240880] by Chris Dumez
  • 13 edits in trunk

REGRESSION: Flaky ASSERTION FAILED: m_uncommittedState.state == State::Committed on http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html
https://bugs.webkit.org/show_bug.cgi?id=193740
<rdar://problem/47527267>

Reviewed by Alex Christensen.

Source/WebCore:

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::continueAfterContentPolicy):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::loadWithDocumentLoader):
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):

  • loader/FrameLoader.h:
  • loader/FrameLoaderTypes.h:
  • loader/PolicyChecker.cpp:

(WebCore::PolicyChecker::checkNavigationPolicy):
(WebCore::PolicyChecker::checkNewWindowPolicy):

  • loader/PolicyChecker.h:

Source/WebKit:

The issue was happening when the page is triggering a cross-site navigation while in the middle of parsing. This would cause us to
start a new provisional load in a new process before the previous process sends the DidFinishLoadForFrame() IPC to the UIProcess.
Getting such IPC after a provisional load has started would mess up our state machine and trip assertions.

This patch restores non-PSON behavior which is that the previous load in the old process now gets stopped so that no DidFinishLoadForFrame()
/ DidFailLoadForFrame() gets sent. To achieve this behavior, I introduced a new "StopAllLoads" PolicyAction that we now send the old
process when the load is continuing in a new process, instead of sending it "Ignore".

  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(toNSURLSessionResponseDisposition):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::receivedNavigationPolicyDecision):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
2:49 PM Changeset in webkit [240879] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed build fix; Respect the 'condition:' field in the WebPreferences.yaml when generating
WebPreferencesStoreDefaultsMap.cpp.

  • page/SettingsBase.h:
2:47 PM Changeset in webkit [240878] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Remove invalid assertion in DFG's compileDoubleRep().
https://bugs.webkit.org/show_bug.cgi?id=194130
<rdar://problem/47699474>

Reviewed by Saam Barati.

JSTests:

  • stress/constant-fold-double-rep-into-double-constant.js: Added.

Source/JavaScriptCore:

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileDoubleRep):

2:07 PM Changeset in webkit [240877] by Alan Coon
  • 7 edits in tags/Safari-608.1.3.0.1/Source

Versioning.

2:04 PM Changeset in webkit [240876] by Alan Coon
  • 1 copy in tags/Safari-608.1.3.0.1

New tag.

1:53 PM Changeset in webkit [240875] by graouts@webkit.org
  • 30 edits
    1 copy
    5 adds in trunk

Dispatch pointercancel events when content is panned or zoomed on iOS
https://bugs.webkit.org/show_bug.cgi?id=193962
<rdar://problem/47629134>

Reviewed by Dean Jackson.

Source/WebCore:

Expose two new methods on PointerCaptureController so that, given a pointer id, it can be established whether this pointer
has been cancelled, which is important because a cancelled pointer should no longer dispatch any further pointer events, and
to cancel a pointer.

Tests: pointerevents/ios/touch-action-pointercancel-pan-x.html

pointerevents/ios/touch-action-pointercancel-pan-y.html
pointerevents/ios/touch-action-pointercancel-pinch-zoom.html

  • WebCore.xcodeproj/project.pbxproj: Make PointerCaptureController.h Private so that it can be imported from WebKit.
  • dom/PointerEvent.h: Remove an unnecessary #if ENABLE(POINTER_EVENTS) since the entire file is already contained in one.

Then we add a new create() method that takes an event type, a pointer id and a pointer type (touch vs. pen) that we use
to create pointercancel events in PointerCaptureController::cancelPointer().

  • page/Page.cpp:

(WebCore::Page::Page): Pass the Page as a parameter when creating the PointerCaptureController.

  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::PointerCaptureController): Add a Page reference to the constructor since we'll need
the page to access its main frame's EventHandler to perform hit testing in case we do not have a capture target override
in cancelPointer().
(WebCore::PointerCaptureController::releasePointerCapture): Drive-by, remove the the implicit parameter since on iOS we
don't need to differentiate. We'll bring this back for the macOS work.
(WebCore::PointerCaptureController::hasCancelledPointerEventForIdentifier): New method we'll use when dispatching pointer
events to identify whether a pointer id has already been cancelled which will allow for _not_ dispatching any further
pointer events for this pointer id.
(WebCore::PointerCaptureController::pointerEventWillBeDispatched): Keep track of the pointer type so we can preserve it
when dispatching pointercancel events for a given pointer id.
(WebCore::PointerCaptureController::cancelPointer): Dispatch a pointercancel for the provided pointer id, using the capture
target override as the event's target, if there is one, and otherwise hit-testing at the provided location to figure out
what the target should be.

  • page/PointerCaptureController.h: Switch the target overrides from Element* to RefPtr<Element> to ensure it may not be

deleted while we still need them. Existing code already ensures these get set to nullptr.

Source/WebKit:

When a user-agent-provided interaction, such as panning or zooming on iOS, uses a set of touches, we should dispatch a pointercancel
event for the pointer ids of the touches involved. To facilitate this, we add a new method on WKContentView to cancel all the pointers
matching active touches for a provided UIGestureRecognizer through an async IPC call into the Web process using the new method
PointerCaptureController::cancelPointer().

  • Platform/spi/ios/UIKitSPI.h: Add the necessary forward declaration for a necessary UIKit SPI allowing us to get the set of last-seen

UITouches by the identifier generated for the matching WebKit touch.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView scrollViewWillBeginZooming:withView:]): Dispatch touchcancel events for all pointers involved in a pinch gesture on the
top-level UIScrollView.
(-[WKWebView _scrollView:adjustedOffsetForOffset:translation:startPoint:locationInView:horizontalVelocity:verticalVelocity:]): Dispatch
touchcancel events for all pointers involved in a pan gesture on the top-level UIScrollView. We can infer this by looking at whether the
adjusted content offset, after accounting for the permitted touch actions, is different from the original content offset.

  • UIProcess/PageClient.h: Expose a new virtual cancelPointersForGestureRecognizer() method which will allow the iOS implementation to

forward the call to WKContentViewInteraction.
(WebKit::PageClient::cancelPointersForGestureRecognizer):

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h: Expose the WebPageProxy such that we may access it to cancel pointers for

a given gesture recognizer from within ScrollingTreeScrollingNodeDelegateIOS.
(WebKit::RemoteScrollingCoordinatorProxy::webPageProxy const):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(-[WKScrollingNodeScrollViewDelegate _scrollView:adjustedOffsetForOffset:translation:startPoint:locationInView:horizontalVelocity:verticalVelocity:]):
Dispatch touchcancel events for all pointers involved in a pan gesture on a nested UIScrollView. We can infer this by looking at
whether the adjusted content offset, after accounting for the permitted touch actions, is different from the original content offset.
(-[WKScrollingNodeScrollViewDelegate scrollViewWillBeginZooming:withView:]): Dispatch touchcancel events for all pointers involved in a
pinch gesture on a nested UIScrollView.
(-[WKScrollingNodeScrollViewDelegate cancelPointersForGestureRecognizer:]):
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::cancelPointersForGestureRecognizer):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::cancelPointer):

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

(WebKit::PageClientImpl::cancelPointersForGestureRecognizer):

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

(-[WKContentView cancelPointersForGestureRecognizer:]): Obtain all active UITouch objects for the view and dispatch a pointercancel event,
through the WebPageProxy, for all touches associated with the provided gesture recognizer.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::cancelPointer):

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

LayoutTests:

Adding a few tests for "pointercancel" and adding "touch-action: none" on tests that would now be affected by canceling pointers. We also unflake a few tests.

  • pointerevents/ios/pointer-events-implicit-capture.html:
  • pointerevents/ios/pointer-events-is-primary.html:
  • pointerevents/ios/touch-action-pan-x-pan-y.html:
  • pointerevents/ios/touch-action-pan-x.html:
  • pointerevents/ios/touch-action-pan-y-expected.txt:
  • pointerevents/ios/touch-action-pan-y.html:
  • pointerevents/ios/touch-action-pinch-zoom-allows-zooming.html:
  • pointerevents/ios/touch-action-pointercancel-pan-x-expected.txt: Added.
  • pointerevents/ios/touch-action-pointercancel-pan-x.html: Added.
  • pointerevents/ios/touch-action-pointercancel-pan-y-expected.txt: Added.
  • pointerevents/ios/touch-action-pointercancel-pan-y.html: Added.
  • pointerevents/ios/touch-action-pointercancel-pinch-zoom-expected.txt: Added.
  • pointerevents/ios/touch-action-pointercancel-pinch-zoom.html: Added.
1:48 PM Changeset in webkit [240874] by jer.noble@apple.com
  • 6 edits in trunk/Source

Make the WebKit default for media source based on the WebCore default.
https://bugs.webkit.org/show_bug.cgi?id=194172

Reviewed by Eric Carlson.

Source/WebCore:

  • page/SettingsBase.h:

Source/WebKit:

  • Shared/WebPreferences.yaml:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _setMediaSourceEnabled:]):
(-[WKPreferences _mediaSourceEnabled]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
1:46 PM Changeset in webkit [240873] by Alan Coon
  • 2 edits in tags/Safari-608.1.4/Source/WebCore

Revert r240738. rdar://problem/47743211

1:40 PM Changeset in webkit [240872] by Joseph Pecoraro
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Make WI.ColumnChart a WI.View subclass
https://bugs.webkit.org/show_bug.cgi?id=194171

Rubber-stamped by Devin Rousso.

  • UserInterface/Views/CPUTimelineOverviewGraph.js:

(WI.CPUTimelineOverviewGraph):

  • UserInterface/Views/ColumnChart.js:

(WI.ColumnChart):
(WI.ColumnChart.prototype.set size):
(WI.ColumnChart.prototype.layout):
(WI.ColumnChart.prototype.get element): Deleted.
(WI.ColumnChart.prototype.needsLayout): Deleted.
(WI.ColumnChart.prototype.updateLayout): Deleted.

1:24 PM Changeset in webkit [240871] by Joseph Pecoraro
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Make WI.StackedLineChart a WI.View subclass
https://bugs.webkit.org/show_bug.cgi?id=194119

Rubber-stamped by Devin Rousso.

  • UserInterface/Views/LineChart.js:

(WI.LineChart.prototype.layout):
(WI.LineChart):

  • UserInterface/Views/MemoryTimelineOverviewGraph.js:

(WI.MemoryTimelineOverviewGraph):

  • UserInterface/Views/StackedLineChart.js:

(WI.StackedLineChart):
(WI.StackedLineChart.prototype.set size):
(WI.StackedLineChart.prototype.layout):
(WI.StackedLineChart.prototype.get element): Deleted.
(WI.StackedLineChart.prototype.get points): Deleted.
(WI.StackedLineChart.prototype.needsLayout): Deleted.
(WI.StackedLineChart.prototype.updateLayout): Deleted.

1:24 PM Changeset in webkit [240870] by Joseph Pecoraro
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Make WI.CircleChart a WI.View subclass
https://bugs.webkit.org/show_bug.cgi?id=194118

Reviewed by Matt Baker.

  • UserInterface/Views/CircleChart.js:

(WI.CircleChart.prototype.get centerElement):
(WI.CircleChart.prototype.layout):
(WI.CircleChart.prototype.get element): Deleted.
(WI.CircleChart.prototype.needsLayout): Deleted.
(WI.CircleChart.prototype.updateLayout): Deleted.

  • UserInterface/Views/MemoryTimelineView.js:

(WI.MemoryTimelineView):

1:24 PM Changeset in webkit [240869] by Joseph Pecoraro
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Timeline Detail Views do not reset properly when new time range selection contains nothing
https://bugs.webkit.org/show_bug.cgi?id=194115
<rdar://problem/47716693>

Rubber-stamped by Devin Rousso.

  • UserInterface/Views/CPUTimelineView.js:

(WI.CPUTimelineView.prototype.reset):
(WI.CPUTimelineView.prototype.clear):
(WI.CPUTimelineView.prototype.layout):

  • UserInterface/Views/MemoryTimelineView.js:

(WI.MemoryTimelineView.prototype.reset):
(WI.MemoryTimelineView.prototype.clear):
(WI.MemoryTimelineView.prototype.layout):
When there are no visible records in the selected range clear our UI.
Introduce a clear method that clears the UI but keeps
non-range-specific values (e.g. maximums).

1:24 PM Changeset in webkit [240868] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebCore

Web Inspector: Memory timeline starts from zero when both CPU and Memory timeline are enabled
https://bugs.webkit.org/show_bug.cgi?id=194111
<rdar://problem/47714555>

Rubber-stamped by Devin Rousso.

  • page/ResourceUsageThread.cpp:

(WebCore::ResourceUsageThread::waitUntilObservers):
(WebCore::ResourceUsageThread::threadBody):
Wait a short period of time before the first listener registers
and we start sampling. This will allow multiple listeners to
register, each that wants different data.

1:24 PM Changeset in webkit [240867] by Joseph Pecoraro
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Timeline graphs have drawing issues with multiple discontinuities
https://bugs.webkit.org/show_bug.cgi?id=194110
<rdar://problem/47714356>

Reviewed by Devin Rousso.

  • UserInterface/Views/CPUTimelineView.js:

(WI.CPUTimelineView):
(WI.CPUTimelineView.prototype.layout.xScale): Deleted.

  • UserInterface/Views/MemoryTimelineOverviewGraph.js:

(WI.MemoryTimelineOverviewGraph.prototype.layout.insertDiscontinuity):
(WI.MemoryTimelineOverviewGraph.prototype.layout):

  • UserInterface/Views/MemoryTimelineView.js:

(WI.MemoryTimelineView.prototype.layout.xScale):
(WI.MemoryTimelineView.prototype.layout.yScale):
(WI.MemoryTimelineView.prototype.layout):
Handle if multiple discontinuities exist between records.

1:24 PM Changeset in webkit [240866] by Joseph Pecoraro
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Timeline time range selection should show duration alongside start and end
https://bugs.webkit.org/show_bug.cgi?id=194109
<rdar://problem/47714279>

Reviewed by Devin Rousso.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/TimelineRecordingContentView.js:

(WI.TimelineRecordingContentView.prototype._updateTimeRangePathComponents):
Include the duration when not obvious.

1:23 PM Changeset in webkit [240865] by Joseph Pecoraro
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Improve API and documentation of ColumnChart
https://bugs.webkit.org/show_bug.cgi?id=193982

Reviewed by Devin Rousso.

This used to be named "BarChart". Convert remaining instances
of "bar" to "column" and clean up related things.

  • UserInterface/Views/CPUTimelineOverviewGraph.css:

(body[dir=rtl] .timeline-overview-graph.cpu > .column-chart):
(.timeline-overview-graph.cpu > .column-chart > svg > rect):
(body[dir=rtl] .timeline-overview-graph.cpu > .bar-chart): Deleted.
(.timeline-overview-graph.cpu > .bar-chart > svg > rect): Deleted.

  • UserInterface/Views/CPUTimelineOverviewGraph.js:

(WI.CPUTimelineOverviewGraph.prototype.layout):

  • UserInterface/Views/ColumnChart.js:

(WI.ColumnChart):
(WI.ColumnChart.prototype.get columns):
(WI.ColumnChart.prototype.addColumn):
(WI.ColumnChart.prototype.clear):
(WI.ColumnChart.prototype.updateLayout):
(WI.ColumnChart.prototype.get bars): Deleted.
(WI.ColumnChart.prototype.addBar): Deleted.

  • UserInterface/Views/StackedLineChart.js:

(WI.StackedLineChart.prototype.get element):
(WI.StackedLineChart.prototype.get points):

1:14 PM Changeset in webkit [240864] by ysuzuki@apple.com
  • 15 edits in trunk/Source/JavaScriptCore

[JSC] Unify CodeBlock IsoSubspaces
https://bugs.webkit.org/show_bug.cgi?id=194167

Reviewed by Saam Barati.

When we move CodeBlock into its IsoSubspace, we create IsoSubspaces for each subclass of CodeBlock.
But this is not necessary since,

  1. They do not override the classInfo methods.
  2. sizeof(ProgramCodeBlock etc.) == sizeof(CodeBlock) since subclasses adds no additional fields.

Creating IsoSubspace for each subclass is costly in terms of memory. Especially, IsoSubspace for
ProgramCodeBlock is. We typically create only one ProgramCodeBlock, and it means the rest of the
MarkedBlock (16KB - sizeof(footer) - sizeof(ProgramCodeBlock)) is just wasted.

This patch unifies these IsoSubspaces into one.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::destroy):

  • bytecode/CodeBlock.h:
  • bytecode/EvalCodeBlock.cpp:

(JSC::EvalCodeBlock::destroy): Deleted.

  • bytecode/EvalCodeBlock.h: We drop some utility functions in EvalCodeBlock and use UnlinkedEvalCodeBlock's one directly.
  • bytecode/FunctionCodeBlock.cpp:

(JSC::FunctionCodeBlock::destroy): Deleted.

  • bytecode/FunctionCodeBlock.h:
  • bytecode/GlobalCodeBlock.h:
  • bytecode/ModuleProgramCodeBlock.cpp:

(JSC::ModuleProgramCodeBlock::destroy): Deleted.

  • bytecode/ModuleProgramCodeBlock.h:
  • bytecode/ProgramCodeBlock.cpp:

(JSC::ProgramCodeBlock::destroy): Deleted.

  • bytecode/ProgramCodeBlock.h:
  • interpreter/Interpreter.cpp:

(JSC::Interpreter::execute):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

(JSC::VM::forEachCodeBlockSpace):

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

[ews-app] Add display name field to BuilderMapping model
https://bugs.webkit.org/show_bug.cgi?id=194153

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/models/buildermapping.py:

(BuilderMapping):

12:20 PM Changeset in webkit [240862] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Force settings.acceleratedCompositingEnabled() to true for WebKit
https://bugs.webkit.org/show_bug.cgi?id=194166
rdar://problem/47694328

Reviewed by Tim Horton.

WebKit relies on accelerated compositing for its drawing areas to function correctly,
and sometimes clients (*cough* Safari *cough*) have bugs where they clobber the settings,
so force this setting to be always on (and release log if this happens).

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

12:10 PM Changeset in webkit [240861] by Antti Koivisto
  • 27 edits in trunk/Source

Don't use base layer() as the scroll layer in scrolling tree.
https://bugs.webkit.org/show_bug.cgi?id=194160

Reviewed by Simon Fraser.

Source/WebCore:

Maintain scrollContainerLayer() and scrolledContentsLayer() separately in ScrollingTreeScrollingNode.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
(WebCore::AsyncScrollingCoordinator::setNodeLayers):

  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollingCoordinator.h:

(WebCore::ScrollingCoordinator::setNodeLayers):

Turn the long layer parameter list into a struct.

  • page/scrolling/ScrollingStateNode.cpp:

(WebCore::ScrollingStateNode::ScrollingStateNode):
(WebCore::ScrollingStateNode::setAllPropertiesChanged):
(WebCore::ScrollingStateNode::setLayer):

  • page/scrolling/ScrollingStateNode.h:
  • page/scrolling/ScrollingStateScrollingNode.cpp:

(WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode):
(WebCore::ScrollingStateScrollingNode::setAllPropertiesChanged):
(WebCore::ScrollingStateScrollingNode::setScrollContainerLayer):
(WebCore::ScrollingStateScrollingNode::dumpProperties const):

  • page/scrolling/ScrollingStateScrollingNode.h:

(WebCore::ScrollingStateScrollingNode::scrollContainerLayer const):

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::commitTreeState):

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):

  • page/scrolling/ScrollingTreeScrollingNode.h:

(WebCore::ScrollingTreeScrollingNode::scrollContainerLayer const):
(WebCore::ScrollingTreeScrollingNode::scrolledContentsLayer const):

  • page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h:
  • page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm:

(WebCore::ScrollingTreeFrameScrollingNodeIOS::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollPosition const):
(WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollLayerPosition):
(WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollLayer const): Deleted.

  • page/scrolling/mac/ScrollingTreeFixedNode.mm:

(WebCore::ScrollingTreeFixedNode::commitStateBeforeChildren):

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateAfterChildren):
(WebCore::ScrollingTreeFrameScrollingNodeMac::scrollPosition const):
(WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollLayerPosition):
(WebCore::ScrollingTreeFrameScrollingNodeMac::exposedUnfilledArea const):

  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:

(WebCore::ScrollingTreeOverflowScrollingNodeMac::commitStateBeforeChildren):
(WebCore::ScrollingTreeOverflowScrollingNodeMac::scrollPosition const):
(WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollLayerPosition):

  • page/scrolling/mac/ScrollingTreeStickyNode.mm:

(WebCore::ScrollingTreeStickyNode::commitStateBeforeChildren):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
(WebCore::RenderLayerCompositor::updateScrollingNodeForViewportConstrainedRole):
(WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):
(WebCore::RenderLayerCompositor::updateScrollingNodeForFrameHostingRole):

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:

(ArgumentCoder<ScrollingStateNode>::encode):
(ArgumentCoder<ScrollingStateNode>::decode):
(ArgumentCoder<ScrollingStateScrollingNode>::encode):
(ArgumentCoder<ScrollingStateScrollingNode>::decode):
(WebKit::dump):

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:

(WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):

  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:

(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:

(WebKit::ScrollingTreeOverflowScrollingNodeIOS::commitStateBeforeChildren):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateBeforeChildren):
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

11:33 AM Changeset in webkit [240860] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Unreviewed, follow-up after r240859
https://bugs.webkit.org/show_bug.cgi?id=194145

Replace OOB HeapCellType with cellHeapCellType since they are completely the same.
And rename cellDangerousBitsSpace back to cellSpace.

  • runtime/JSCellInlines.h:

(JSC::JSCell::subspaceFor):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
10:59 AM Changeset in webkit [240859] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

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

Reviewed by Mark Lam.

  • runtime/JSObject.h:

(JSC::JSObject::subspaceFor): Deleted.

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
9:49 AM Changeset in webkit [240858] by Michael Catanzaro
  • 10 edits in trunk/Source/WebKit

[SOUP] Improve use of SoupCookiePersistentStorageType
https://bugs.webkit.org/show_bug.cgi?id=194103

Reviewed by Carlos Garcia Campos.

Turn it into an enum class, and stop casting it to and from uint32_t.

  • NetworkProcess/Cookies/WebCookieManager.h:
  • NetworkProcess/Cookies/WebCookieManager.messages.in:
  • NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp:

(WebKit::WebCookieManager::setCookiePersistentStorage):

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::privateSessionParameters):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • Shared/soup/SoupCookiePersistentStorageType.h:

(): Deleted.

  • UIProcess/API/glib/WebKitCookieManager.cpp:
  • UIProcess/WebCookieManagerProxy.h:
  • UIProcess/soup/WebCookieManagerProxySoup.cpp:

(WebKit::WebCookieManagerProxy::setCookiePersistentStorage):
(WebKit::WebCookieManagerProxy::getCookiePersistentStorage const):

9:47 AM Changeset in webkit [240857] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Revert parts of r240811, since it causes kernel panics.
https://bugs.webkit.org/show_bug.cgi?id=194061

Unreviewed crash fix.

  • WebProcess/com.apple.WebProcess.sb.in:
9:45 AM Changeset in webkit [240856] by youenn@apple.com
  • 2 edits in trunk/Tools

API Test broken: TestWebKitAPI.WebKit2.GetUserMediaReprompt
https://bugs.webkit.org/show_bug.cgi?id=194155

Reviewed by Eric Carlson.

  • TestWebKitAPI/Tests/WebKit/getUserMedia.html:

Revert use of async functions as it seems it cannot be evaluated from TestWebKitAPI.
Keep calling enumerateDevices to continue cover https://bugs.webkit.org/show_bug.cgi?id=194106.

9:00 AM Changeset in webkit [240855] by Michael Catanzaro
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/WebKit

Merge r240723 - [GTK][Wayland] REGRESSION(r240712): Clear the GL context if it's the current one on dispose
https://bugs.webkit.org/show_bug.cgi?id=194024

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-01-30
Reviewed by Michael Catanzaro.

Fixes a crash in gdk_gl_context_dispose().

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::~AcceleratedBackingStoreWayland):

9:00 AM Changeset in webkit [240854] by Michael Catanzaro
  • 10 edits in releases/WebKitGTK/webkit-2.22/Source/WebKit

Merge r240712 - [GTK] gdk_cairo_draw_from_gl() in AcceleratedBackingStoreWayland fails in GtkInspector's magnifier
https://bugs.webkit.org/show_bug.cgi?id=193903

Reviewed by Michael Catanzaro.

The problem is that the GL context used by WaylandCompositor can't share resources with the one used by GTK+
when painting with gdk_cairo_draw_from_gl(). Accelerated compositing in Wayland works only because
WaylandCompositor makes the context current only once on initialization. So, when we render the first frame on
accelerated compositing mode, GTK+ is rendering in non-GL mode, and switches to the GL mode when
gdk_cairo_draw_from_gl() is called. Since GTK+ didn't have a GL context yet, the first frame is always rendered
by GTK+ using the software fallback (glReadPixels). The thing is that the first time gdk_cairo_draw_from_gl() is
called, GTK+ creates a GL context for painting that is made current, and it will remain the current one
forever. The first frame fails to render with "GL_INVALID_OPERATION in glBindTexture(non-gen name)" because the
texture created in WaylandCompositor GL context can't be accessed from GTK+ GL context. The following frames are
handled with the GTK+ GL context. I would say this works by casuality and it could be the cause of other
accelerated compositing issues in Wayland.

We need to create our own GdkGLContext for the WebView, and use that in the WaylandCompositor. When the
GdkGLContext is created, the GTK+ GL context for painting is used as a shared context, ensuring that resources
created in the new context will be accessible from the painting one.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseMakeGLContextCurrent): Call AcceleratedBackingStore::makeContextCurrent().

  • UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/gtk/AcceleratedBackingStore.h:

(WebKit::AcceleratedBackingStore::makeContextCurrent): New virtual method only implemented by Wayland backend.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::tryEnsureGLContext): Try to create a GL context with
gdk_window_create_gl_context(), falling back to a WebCore::GLContext if it fails or GTK+ version is not new enough.
(WebKit::AcceleratedBackingStoreWayland::makeContextCurrent): Make the GL context current.
(WebKit::AcceleratedBackingStoreWayland::paint): Check if we have a GdkGLContext before trying to use gdk_cairo_draw_from_gl().
(WebKit::AcceleratedBackingStoreWayland::canGdkUseGL const): Deleted.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.h:
  • UIProcess/gtk/WaylandCompositor.cpp:

(WebKit::WaylandCompositor::Surface::Surface): Move the texture creation to setWebPage(), since we need the
WebView GL context.
(WebKit::WaylandCompositor::Surface::~Surface): Move the code to destroy GL resources to setWebPage().
(WebKit::WaylandCompositor::Surface::setWebPage): Create the texture when a new page is set and destroy GL
resources when unset.
(WebKit::WaylandCompositor::Surface::prepareTextureForPainting): Make WebView GL context current.
(WebKit::WaylandCompositor::Surface::commit): Ditto.
(WebKit::WaylandCompositor::initializeEGL): Use a temporary GLContext.

  • UIProcess/gtk/WaylandCompositor.h:
  • UIProcess/gtk/WebPageProxyGtk.cpp:

(WebKit::WebPageProxy::makeGLContextCurrent): Call webkitWebViewBaseMakeGLContextCurrent().

9:00 AM Changeset in webkit [240853] by Michael Catanzaro
  • 8 edits
    1 move
    1 add in releases/WebKitGTK/webkit-2.22

Merge r237541 - [WPE] Add the WebKitVersion.h header
https://bugs.webkit.org/show_bug.cgi?id=191015

Reviewed by Michael Catanzaro.

Source/WebKit:

Add the WebKitVersion.h API header for the WPE port. As with other
headers providing the GLib API, we have to provide a WPE-specific
version, but the implementation file can be shared with the GTK port,
and is moved under the UIProcess/API/glib/ directory accordingly.

  • PlatformWPE.cmake:
  • SourcesWPE.txt:
  • UIProcess/API/glib/WebKitVersion.cpp: Renamed from Source/WebKit/UIProcess/API/gtk/WebKitVersion.cpp.
  • UIProcess/API/wpe/WebKitVersion.h.in: Added.
  • UIProcess/API/wpe/webkit.h:

Tools:

  • MiniBrowser/wpe/main.cpp:

(automationStartedCallback): Remove the FIXME and finally enable the
webkit_application_info_set_version() call.

  • TestWebKitAPI/Tests/WebKitGLib/TestAutomationSession.cpp: Remove

this FIXME as well and remove the custom WEBKIT_*_VERSION macros.

9:00 AM Changeset in webkit [240852] by Michael Catanzaro
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/WebDriver

Merge r240778 - [GLIB] WebDriver: race condition when session starts
https://bugs.webkit.org/show_bug.cgi?id=194086

Reviewed by Philippe Normand.

This is causing flakiness in the bots, I can only reproduce it locally when my CPUs are at 100%. The thing
is that sometimes we receive an empty target list right after the connection is established because
RemoteInspector::setClient() calls pushListingsSoon() before a target has been registered. Most of the times the
target is registered before the listing is pushed, but it can happen that when pushed, the listing is still
empty. After the target is registered an empty target list means the connection was lost, so we clear the
connection and target. We need to ensure we do that only after the target has been registered.

  • glib/SessionHostGlib.cpp:
9:00 AM Changeset in webkit [240851] by Michael Catanzaro
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/WebCore

Merge r240841 - Race-condition during scrolling thread creation
https://bugs.webkit.org/show_bug.cgi?id=194016

Reviewed by Saam Barati.

There is a threading issue during the initialization
of the scrolling thread caused by createThreadIfNeeded
locking only on the creation of the thread but not on
the initialization of the main loop, making it possible
for a thread to try to spin the main loop before it's
created.

Fix this by unconditionally waiting on the main loop
being created. This makes it necessary to always hold
the lock, even when the thread is already created.

  • page/scrolling/ScrollingThread.cpp:

(WebCore::ScrollingThread::createThreadIfNeeded):

8:51 AM Changeset in webkit [240850] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit

[SOUP] Improve use of PAL::SessionID in WebKitCookieManager
https://bugs.webkit.org/show_bug.cgi?id=194092

Reviewed by Carlos Garcia Campos.

Always get it from the data store instead of assuming the default session ID, and add a
helper function for this.

  • UIProcess/API/glib/WebKitCookieManager.cpp:

(_WebKitCookieManagerPrivate::sessionID const):
(_WebKitCookieManagerPrivate::~_WebKitCookieManagerPrivate):
(webkitCookieManagerCreate):
(webkit_cookie_manager_set_persistent_storage):
(webkit_cookie_manager_set_accept_policy):
(webkit_cookie_manager_get_accept_policy):
(webkit_cookie_manager_add_cookie):
(webkit_cookie_manager_get_cookies):
(webkit_cookie_manager_delete_cookie):

8:45 AM Changeset in webkit [240849] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

REGRESSION (r240698): fast/scrolling/sticky-to-fixed.html can cause a crash
https://bugs.webkit.org/show_bug.cgi?id=194134
rdar://problem/47721210

Reviewed by Daniel Bates.

fast/scrolling/sticky-to-fixed.html changes the scrolling node type, which causes
scrollingCoordinator->insertNode() to return a different ScrollingNodeID to the one
passed in. We have to handle this, removing the node for the nodeID and unregistering
the layer with the old nodeID.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::attachScrollingNode):

8:38 AM WebKitGTK/2.22.x edited by Michael Catanzaro
(diff)
6:36 AM Changeset in webkit [240848] by Carlos Garcia Campos
  • 5 edits in trunk

REGRESSION(r239915): css3/font-feature-font-face-local.html failing on WPE
https://bugs.webkit.org/show_bug.cgi?id=194008

Reviewed by Žan Doberšek.

Source/WebCore:

We need to replace control characters with zero width space too.

  • platform/graphics/freetype/GlyphPageTreeNodeFreeType.cpp:

(WebCore::GlyphPage::fill):

  • platform/text/CharacterProperties.h:

(WebCore::isControlCharacter):

LayoutTests:

Remove test expectation.

  • platform/wpe/TestExpectations:
6:35 AM Changeset in webkit [240847] by Carlos Garcia Campos
  • 4 edits in trunk

[WPE] Enable font variations
https://bugs.webkit.org/show_bug.cgi?id=194148

Reviewed by Žan Doberšek.

.:

Enable variation fonts when required dependencies are available.

  • Source/cmake/OptionsWPE.cmake:

LayoutTests:

  • platform/wpe/TestExpectations:
6:33 AM Changeset in webkit [240846] by Carlos Garcia Campos
  • 4 edits in trunk

ComplexText: Test fast/text/word-space-nbsp.html fails when using complex text path
https://bugs.webkit.org/show_bug.cgi?id=193279

Reviewed by Michael Catanzaro.

Source/WebCore:

The fix applied in r135884 to WidthIterator should also be applied to ComplexTextController.

  • platform/graphics/ComplexTextController.cpp:

(WebCore::ComplexTextController::adjustGlyphsAndAdvances):

LayoutTests:

Remove test expectation.

  • platform/gtk/TestExpectations:
6:31 AM Changeset in webkit [240845] by Alan Bujtas
  • 8 edits in trunk

[LFC] Adjust replaced element's intrinsic ratio
https://bugs.webkit.org/show_bug.cgi?id=194154

Reviewed by Antti Koivisto.

Source/WebCore:

Decouple image and iframe replaced types and set intrinsic ratio accordingly.

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::Box):

  • layout/layouttree/LayoutBox.h:

(WebCore::Layout::Box::isReplaced const):
(WebCore::Layout::Box::isIFrame const):
(WebCore::Layout::Box::isImage const):

  • layout/layouttree/LayoutReplaced.cpp:

(WebCore::Layout::Replaced::hasIntrinsicRatio const):
(WebCore::Layout::Replaced::intrinsicRatio const):
(WebCore::Layout::Replaced::hasAspectRatio const):

  • layout/layouttree/LayoutReplaced.h:
  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createSubTree):

Tools:

761

  • LayoutReloaded/misc/LFC-passing-tests.txt:
6:28 AM Changeset in webkit [240844] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

[WPE] Show test results in minibrowser
https://bugs.webkit.org/show_bug.cgi?id=194150

Reviewed by Žan Doberšek.

  • Scripts/webkitpy/port/wpe.py:

(WPEPort.show_results_html_file):

6:27 AM Changeset in webkit [240843] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

[WPE] MiniBrowser: add ky bindings for back/forward navigation
https://bugs.webkit.org/show_bug.cgi?id=194151

Reviewed by Žan Doberšek.

ALT + <- go back
ALT + -> go forward

  • MiniBrowser/wpe/main.cpp:

(main):

6:15 AM Changeset in webkit [240842] by Alan Bujtas
  • 8 edits in trunk

[LFC] Set intrinsic size on Layout::Replaced
https://bugs.webkit.org/show_bug.cgi?id=194139

Reviewed by Antti Koivisto.

Source/WebCore:

Eventually Layout::Replaced will track intrinsic size internally until then let's query the RenderReplaced.

  • layout/layouttree/LayoutBox.h:

(WebCore::Layout::Box::replaced):

  • layout/layouttree/LayoutReplaced.cpp:

(WebCore::Layout::Replaced::hasIntrinsicWidth const):
(WebCore::Layout::Replaced::hasIntrinsicHeight const):
(WebCore::Layout::Replaced::intrinsicWidth const):
(WebCore::Layout::Replaced::intrinsicHeight const):

  • layout/layouttree/LayoutReplaced.h:

(WebCore::Layout::Replaced::setIntrinsicSize):
(WebCore::Layout::Replaced::setIntrinsicRatio):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createSubTree):

  • rendering/RenderReplaced.h:

Tools:

744

  • LayoutReloaded/misc/LFC-passing-tests.txt:
2:32 AM Changeset in webkit [240841] by Claudio Saavedra
  • 2 edits in trunk/Source/WebCore

Race-condition during scrolling thread creation
https://bugs.webkit.org/show_bug.cgi?id=194016

Reviewed by Saam Barati.

There is a threading issue during the initialization
of the scrolling thread caused by createThreadIfNeeded
locking only on the creation of the thread but not on
the initialization of the main loop, making it possible
for a thread to try to spin the main loop before it's
created.

Fix this by unconditionally waiting on the main loop
being created. This makes it necessary to always hold
the lock, even when the thread is already created.

  • page/scrolling/ScrollingThread.cpp:

(WebCore::ScrollingThread::createThreadIfNeeded):

2:03 AM Changeset in webkit [240840] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

[WPE] MiniBrowser: use g_file_new_for_commandline_arg
https://bugs.webkit.org/show_bug.cgi?id=194146

Reviewed by Xabier Rodriguez-Calvar.

It allows to open relative paths.

  • MiniBrowser/wpe/main.cpp:

(main):

1:48 AM Changeset in webkit [240839] by Carlos Garcia Campos
  • 1 edit
    56 deletes in trunk/LayoutTests

Unreviewed WPE gardening. Remove duplicated expectations.

Remove the platform specific expectations that match the generic ones.

  • platform/wpe/animations/lineheight-animation-expected.txt: Removed.
  • platform/wpe/animations/simultaneous-start-transform-expected.txt: Removed.
  • platform/wpe/animations/width-using-ems-expected.txt: Removed.
  • platform/wpe/fast/events/mouseover-mouseout-expected.txt: Removed.
  • platform/wpe/fast/events/nested-window-event-expected.txt: Removed.
  • platform/wpe/fast/events/window-events-bubble-expected.txt: Removed.
  • platform/wpe/fast/events/window-events-bubble2-expected.txt: Removed.
  • platform/wpe/fast/replaced/008-expected.txt: Removed.
  • platform/wpe/fast/tokenizer/script_extra_close-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-check-initdata-type.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-events-session-closed-event.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-events.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-generate-request-disallowed-input.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-invalid-license.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-keystatuses-multiple-sessions.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-keystatuses.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-destroy-persistent-license.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-license.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-destroy-persistent-license.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-sources.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multisession.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-playback.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-resetting-src.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-at-same-time.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-multiple-times-with-different-mediakeys.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-to-multiple-video-elements.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-syntax-mediakeysession.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-syntax-mediakeysystemaccess.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-update-non-ascii-input.https-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any.worker-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-location-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/security/dangling-markup-mitigation-data-url.tentative.sub-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/pointerevents/extension/pointerevent_touch-action-verification-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/pointerevents/pointerevent_touch-action-illegal-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/pointerevents/pointerevent_touch-action-verification-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/touch-events/historical-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/xhr/formdata-blob-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/xhr/formdata-expected.txt: Removed.
  • platform/wpe/legacy-animation-engine/animations/lineheight-animation-expected.txt: Removed.
  • platform/wpe/legacy-animation-engine/animations/simultaneous-start-transform-expected.txt: Removed.
  • platform/wpe/legacy-animation-engine/animations/width-using-ems-expected.txt: Removed.
  • platform/wpe/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.txt: Removed.
  • platform/wpe/svg/custom/pan-direction-expected.txt: Removed.
  • platform/wpe/tables/mozilla/bugs/bug149275-2-expected.txt: Removed.
  • platform/wpe/webgl/2.0.0/conformance/context/context-attributes-alpha-depth-stencil-antialias-expected.txt: Removed.
  • platform/wpe/webgl/2.0.0/conformance/context/context-hidden-alpha-expected.txt: Removed.
1:44 AM Changeset in webkit [240838] by Carlos Garcia Campos
  • 3 edits in trunk/LayoutTests

Unreviewed WPE gardening. Rebaseline and update expectations after r240774.

  • platform/wpe/TestExpectations:
  • platform/wpe/fast/css/font-weight-1-expected.txt:
12:43 AM Changeset in webkit [240837] by Simon Fraser
  • 8 edits in trunk/Source/WebCore

Use ScrollingNodeID in more places, and improve the name of a ScrollableArea function that returns a ScrollingNodeID
https://bugs.webkit.org/show_bug.cgi?id=194126

Reviewed by Frédéric Wang.

Change uint64_t ScrollableArea::scrollLayerID() to ScrollingNodeID ScrollableArea::scrollingNodeID()
and fix callers.

  • page/FrameView.cpp:

(WebCore::FrameView::scrollingNodeID const):
(WebCore::FrameView::scrollLayerID const): Deleted.

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

(WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
(WebCore::AsyncScrollingCoordinator::updateExpectsWheelEventTestTriggerWithFrameView):
(WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
(WebCore::AsyncScrollingCoordinator::frameViewForScrollingNode const):
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
(WebCore::AsyncScrollingCoordinator::reconcileScrollingState):
(WebCore::AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange):
(WebCore::AsyncScrollingCoordinator::ensureRootStateNodeForFrameView):
(WebCore::AsyncScrollingCoordinator::setSynchronousScrollingReasons):
(WebCore::AsyncScrollingCoordinator::setActiveScrollSnapIndices):
(WebCore::AsyncScrollingCoordinator::updateScrollSnapPropertiesWithFrameView):

  • page/scrolling/ScrollingCoordinatorTypes.h:
  • platform/ScrollTypes.h:
  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::scrollingNodeID const):
(WebCore::ScrollableArea::scrollLayerID const): Deleted.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::parentFrameContentLayers):
(WebCore::RenderLayerCompositor::detachRootLayer):

Note: See TracTimeline for information about the timeline view.