Timeline



Jun 28, 2019:

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

Revise WebContent sandbox based on seed feedback
https://bugs.webkit.org/show_bug.cgi?id=199339
<rdar://problem/49609201>

Reviewed by Alexey Proskuryakov.

Unblock syscall needed by CoreText.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
8:48 PM Changeset in webkit [246948] by timothy_horton@apple.com
  • 8 edits in trunk/Source

iOS WebKit2 find-in-page indicator doesn't move with 'overflow: scroll'
https://bugs.webkit.org/show_bug.cgi?id=175032
<rdar://problem/29346482>

Reviewed by Wenson Hsieh.

Source/WebCore:

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::selectionBounds const):
(WebCore::FrameSelection::revealSelection):

  • editing/FrameSelection.h:

Make selectionBounds' clipToVisibleContent param an enum class.

  • page/TextIndicator.cpp:

(WebCore::initializeIndicator):
Save the un-clipped selection rect; otherwise we'll frequently save 0, 0
here when finding a match that is off-screen.

Source/WebKit:

  • WebProcess/WebPage/FindController.cpp:

(WebKit::FindController::drawRect):
(WebKit::FindController::didScrollAffectingFindIndicatorPosition):
Adopt the macOS code that notices that the find highlight doesn't match
its original position, but instead of hiding the highlight like we do on macOS,
update it. We do this asynchronously to avoid mutating the layer tree
in the middle of painting, which is not /truly/ unsafe, but definitely
non-ideal and causes fun flashes.

  • WebProcess/WebPage/FindController.h:
  • WebProcess/WebPage/ios/FindControllerIOS.mm:

(WebKit::FindController::updateFindIndicator):
Store m_findIndicatorRect when updating the indicator, just like we do on macOS.

4:35 PM Changeset in webkit [246947] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit

Unreviewed build fix attempt after r246928.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _closeAllMediaPresentations]):

4:19 PM Changeset in webkit [246946] by justin_michaud@apple.com
  • 8 edits
    3 adds in trunk

Add b3 macro lowering for CheckMul on arm64
https://bugs.webkit.org/show_bug.cgi?id=199251

Reviewed by Robin Morisset.

JSTests:

  • microbenchmarks/check-mul-constant.js: Added.

(doTest):

  • microbenchmarks/check-mul-no-constant.js: Added.

(doTest):

  • microbenchmarks/check-mul-power-of-two.js: Added.

(doTest):

Source/JavaScriptCore:

  • Lower CheckMul for 32-bit arguments on arm64 into a mul and then an overflow check.
  • Add a new opcode to air on arm64 for smull (multiplySignExtend32).
  • Fuse sign extend 32 + mul into smull (taking two 32-bit arguments and producing 64 bits).
  • 1.25x speedup on power of two microbenchmark, 1.15x speedup on normal constant microbenchmark, and no change on the no-constant benchmark.

Also, skip some of the b3 tests that were failing before this patch so that the new tests can run
to completion.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::multiplySignExtend32):

  • assembler/testmasm.cpp:

(JSC::testMul32SignExtend):
(JSC::run):

  • b3/B3LowerMacros.cpp:
  • b3/B3LowerToAir.cpp:
  • b3/air/AirOpcode.opcodes:
  • b3/testb3.cpp:

(JSC::B3::testMulArgs32SignExtend):
(JSC::B3::testMulImm32SignExtend):
(JSC::B3::testMemoryFence):
(JSC::B3::testStoreFence):
(JSC::B3::testLoadFence):
(JSC::B3::testPinRegisters):
(JSC::B3::run):

3:50 PM Changeset in webkit [246945] by dino@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

unable to build WebRTC for iOS Simulator
https://bugs.webkit.org/show_bug.cgi?id=199337
<rdar://problem/52020841>

Reviewed by Tim Horton.

Run the compiled yasm with DYLD_ROOT_PATH=/
in order to convince dyld that it can load
the simulator binary on macOS.

  • libwebrtc.xcodeproj/project.pbxproj:
3:48 PM Changeset in webkit [246944] by rmorisset@apple.com
  • 2 edits in trunk/Tools

Adding myself as a reviewer in contributors.json.

3:27 PM Changeset in webkit [246943] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[Text autosizing][iPadOS] bing.com is hard to read even with boosted text because of the line height
https://bugs.webkit.org/show_bug.cgi?id=199318
<rdar://problem/51826096>

Reviewed by Wenson Hsieh.

Source/WebCore:

Initial implementation of line height boosting on iPadOs. It enlarges line height in certain cases to improve readability when the text content feels too dense.
It kicks in only for relatively small text (12px) where it slightly (1.25x) changes the line height to widen the gap between lines.

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::adjustRenderStyleForTextAutosizing):

LayoutTests:

  • fast/text-autosizing/ios/idempotentmode/line-height-boosting-expected.txt: Added.
  • fast/text-autosizing/ios/idempotentmode/line-height-boosting.html: Added.
3:24 PM Changeset in webkit [246942] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Make getHostnamesWithCookies more robust
https://bugs.webkit.org/show_bug.cgi?id=199334
<rdar://problem/51860593>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-06-28
Reviewed by Brent Fulgham.

Crash logs suggest either httpCookies is returning a nil cookie or a cookie without a domain.
This should not happen, but if it does we shouldn't crash.

  • platform/network/cocoa/NetworkStorageSessionCocoa.mm:

(WebCore::NetworkStorageSession::getHostnamesWithCookies):

3:21 PM Changeset in webkit [246941] by Chris Fleizach
  • 5 edits in trunk/Source/WebCore

AX: Both convertToNSArray() functions in WebAccessibilityObjectWrapperBase.mm leak every NSMutableArray returned
https://bugs.webkit.org/show_bug.cgi?id=199306

Reviewed by David Kilzer.

Stop leaking every instance of convertToNSArray and return an autoreleased version.
Remove unneeded casts.

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityFindMatchingObjects:]):

  • accessibility/mac/WebAccessibilityObjectWrapperBase.h:
  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(convertToNSArray):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper childrenVectorArray]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):

3:18 PM Changeset in webkit [246940] by wenson_hsieh@apple.com
  • 2 edits in trunk/Source/WebCore

Followup to r246931
https://bugs.webkit.org/show_bug.cgi?id=199331

Reviewed by Tim Horton.

Extend the site-specific quirk added in r246931 to *.sharepoint.com, so that it fixes Word for enterprise
customers as well.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldAvoidResizingWhenInputViewBoundsChange const):

2:53 PM Changeset in webkit [246939] by youenn@apple.com
  • 5 edits in trunk/Source/WebKit

Protect NetworkProcess::m_swServers from bad session IDs
https://bugs.webkit.org/show_bug.cgi?id=199298
<rdar://problem/51859081>

Reviewed by Chris Dumez.

Protect NetworkProcess from receiving bad session IDs in service worker code path by checking for session ID validity whenever interacting with the map.
One of the check is done in WebProcess in which case, if the session ID is bad, the SW connection to NetworkProcess will not be made.
For bad session IDs, this will in that case trigger timing out of service worker operations.

For get/clear data, exit early in case of bad session ID.

Made some refactoring to remove swOriginStoreForSession method.
In the one call site where it is used, the store should already be created so we reuse existingSWOriginStoreForSession.

Added a bunch of additional ASSERTs.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::fetchWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains):
(WebKit::NetworkProcess::registrableDomainsWithWebsiteData):
(WebKit::NetworkProcess::actualPrepareToSuspend):
(WebKit::NetworkProcess::swServerForSession):
(WebKit::NetworkProcess::existingSWOriginStoreForSession const):
(WebKit::NetworkProcess::registerSWServerConnection):

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

(WebKit::NetworkProcessConnection::initializeSWClientConnection):

  • WebProcess/Storage/WebSWClientConnection.cpp:

(WebKit::WebSWClientConnection::WebSWClientConnection):
(WebKit::WebSWClientConnection::initializeConnectionIfNeeded):
(WebKit::WebSWClientConnection::ensureConnectionAndSend):

2:39 PM Changeset in webkit [246938] by timothy@apple.com
  • 31 edits in trunk/Source

Rename effectiveAppearanceIsInactive and useInactiveAppearance to better match UIUserInterfaceLevel.
https://bugs.webkit.org/show_bug.cgi?id=199336
rdar://problem/52348938

Reviewed by Tim Horton.

Source/WebCore:

  • css/StyleColor.h:
  • dom/Document.cpp:

(WebCore::Document::useElevatedUserInterfaceLevel const):
(WebCore::Document::styleColorOptions const):
(WebCore::Document::useInactiveAppearance const): Deleted.

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

(WebCore::Page::effectiveAppearanceDidChange):

  • page/Page.h:

(WebCore::Page::useElevatedUserInterfaceLevel const):
(WebCore::Page::useInactiveAppearance const): Deleted.

  • platform/ios/LocalCurrentTraitCollection.h:

(WebCore::LocalCurrentTraitCollection::usingElevatedUserInterfaceLevel const):
(WebCore::LocalCurrentTraitCollection::usingBaseLevelAppearance const): Deleted.

  • platform/ios/LocalCurrentTraitCollection.mm:

(WebCore::LocalCurrentTraitCollection::LocalCurrentTraitCollection):

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::systemColor const):

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::setUseDarkAppearanceInternal):

Source/WebKit:

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _effectiveUserInterfaceLevelIsElevated]):
(-[WKWebView _effectiveAppearanceIsInactive]): Deleted.

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

(WebKit::WebViewImpl::effectiveUserInterfaceLevelIsElevated):
(WebKit::WebViewImpl::effectiveAppearanceIsInactive): Deleted.

  • UIProcess/PageClient.h:

(WebKit::PageClient::effectiveUserInterfaceLevelIsElevated const):
(WebKit::PageClient::effectiveAppearanceIsInactive const): Deleted.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::useElevatedUserInterfaceLevel const):
(WebKit::WebPageProxy::effectiveAppearanceDidChange):
(WebKit::WebPageProxy::useInactiveAppearance const): Deleted.

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

(WebKit::PageClientImpl::effectiveUserInterfaceLevelIsElevated const):
(WebKit::PageClientImpl::effectiveAppearanceIsInactive const): Deleted.

  • UIProcess/mac/PageClientImplMac.h:
  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::effectiveUserInterfaceLevelIsElevated const):
(WebKit::PageClientImpl::effectiveAppearanceIsInactive const): Deleted.

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

(WKBundlePageSetUseDarkAppearance):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_shrinkToFitContentTimer):
(WebKit::WebPage::effectiveAppearanceDidChange):

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

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView _setUseDarkAppearance:]):
(-[WebView _useElevatedUserInterfaceLevel]):
(-[WebView _setUseElevatedUserInterfaceLevel:]):
(-[WebView _setUseDarkAppearance:useInactiveAppearance:]):
(-[WebView _setUseDarkAppearance:useElevatedUserInterfaceLevel:]):
(-[WebView _effectiveUserInterfaceLevelIsElevated]):
(-[WebView viewDidChangeEffectiveAppearance]):
(-[WebView _useInactiveAppearance]): Deleted.
(-[WebView _setUseInactiveAppearance:]): Deleted.
(-[WebView _effectiveAppearanceIsInactive]): Deleted.

  • WebView/WebViewPrivate.h:
2:01 PM Changeset in webkit [246937] by Alan Coon
  • 3 edits
    2 adds in tags/Safari-608.1.32.1

Cherry-pick r246835. rdar://problem/51787961

[ContentChangeObserver] Dispatch synthetic mouse event asynchronously in completePendingSyntheticClickForContentChangeObserver
https://bugs.webkit.org/show_bug.cgi?id=199220
<rdar://problem/51787961>

Reviewed by Simon Fraser.

Source/WebKit:

WebPage::completePendingSyntheticClickForContentChangeObserver should not dispatch mouse events synchronously.
Mouse events, through style updates could destroy the element that initiated this change.
WebPage::handleSyntheticClick() already implements this pattern.

  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver):

LayoutTests:

  • fast/events/touch/ios/content-observation/animation-end-with-visiblity-change-crash-expected.txt: Added.
  • fast/events/touch/ios/content-observation/animation-end-with-visiblity-change-crash.html: Added.

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

2:01 PM Changeset in webkit [246936] by Alan Coon
  • 3 edits in tags/Safari-608.1.32.1/Source/WebKit

Cherry-pick r246901. rdar://problem/52202948

Regression(r246526): StorageManager thread hangs
https://bugs.webkit.org/show_bug.cgi?id=199278
<rdar://problem/52202948>

Reviewed by Geoffrey Garen.

r246526 adds a lock m_localStorageNamespacesMutex to protect m_localStorageNamespaces, because
m_localStorageNamespaces is destroyed at main thread while accesses to m_localStorageNamespaces happen in the
background thread.
After r246526, getOrCreateLocalStorageNamespace acquires lock m_localStorageNamespacesMutex when
m_localStorageNamespacesMutex is already acquired in cloneSessionStorageNamespace, so the StorageManager thread
hangs.
To solve this issue, we can remove the lock in getOrCreateLocalStorageNamespace, or we can remove the
m_localStorageNamespacesMutex. waitUntilWritesFinished() before ~StorageManager() already guarantees nothing
will be running in the background thread, so it is unlikely we the access to m_localStorageNamespaces in the
background thread would collide with the destruction of m_localStorageNamespaces. Also, we don't need
didDestroyStorageArea as LocalStorageNamespace can hold the last reference of StorageArea after r245881.

  • NetworkProcess/WebStorage/StorageManager.cpp: (WebKit::StorageManager::StorageArea::StorageArea): (WebKit::StorageManager::StorageArea::~StorageArea): (WebKit::StorageManager::LocalStorageNamespace::LocalStorageNamespace): (WebKit::StorageManager::cloneSessionStorageNamespace): (WebKit::StorageManager::getLocalStorageOrigins): (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin): (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince): (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins): (WebKit::StorageManager::getOrCreateLocalStorageNamespace): (WebKit::StorageManager::LocalStorageNamespace::didDestroyStorageArea): Deleted.
  • NetworkProcess/WebStorage/StorageManager.h:

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

2:01 PM Changeset in webkit [246935] by Alan Coon
  • 2 edits in tags/Safari-608.1.32.1/Source/WebKit

Cherry-pick r246859. rdar://problem/51554509

[iPadOS] Fix another crash in -[UIPreviewTarget initWithContainer:center:transform:] when generating a fallback targeted preview
https://bugs.webkit.org/show_bug.cgi?id=199243
<rdar://problem/51554509>

Reviewed by Tim Horton.

Additionally make createFallbackTargetedPreview robust in the case where the content view is unparented, and
rename _ensureTargetedPreview to _createTargetedPreviewIfPossible, to reflect the fact that it may now return
nil.

  • UIProcess/ios/WKContentViewInteraction.mm: (createTargetedPreview): (createFallbackTargetedPreview): (-[WKContentView _createTargetedPreviewIfPossible]): (-[WKContentView contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): (-[WKContentView contextMenuInteraction:previewForDismissingMenuWithConfiguration:]): (-[WKContentView _ensureTargetedPreview]): Deleted.

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

1:23 PM Changeset in webkit [246934] by Simon Fraser
  • 5 edits in trunk/Source/WebCore

REGRESSION (r239984): pages with custom scrollbars also show normal scrollbars
https://bugs.webkit.org/show_bug.cgi?id=199321
<rdar://problem/52308095>

Reviewed by Timothy Hatcher.

Revert the part of r239984 that made isCustomScrollbar() virtual, since theme().registerScrollbar()
calls it from the base class constructor.

I wasn't able to make a test that tests rendering of overlay scrollbars (webkit.org/b/199323).

  • platform/Scrollbar.cpp:

(WebCore::Scrollbar::Scrollbar):

  • platform/Scrollbar.h:

(WebCore::Scrollbar::isCustomScrollbar const):

  • rendering/RenderScrollbar.cpp:

(WebCore::RenderScrollbar::RenderScrollbar):

  • rendering/RenderScrollbar.h:
1:15 PM Changeset in webkit [246933] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed maccatalyst build fix; add ENABLE(FULLSCREEN) checks around calls to fullScreenManager().

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _closeAllMediaPresentations]):

1:14 PM Changeset in webkit [246932] by timothy_horton@apple.com
  • 7 edits in trunk/Source/WebKit

macCatalyst: Selected range sometimes wrong after autocorrection
https://bugs.webkit.org/show_bug.cgi?id=199299
<rdar://problem/49717224>

Reviewed by Wenson Hsieh.

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

(WebKit::TextCheckingController::replaceRelativeToSelection):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView replaceSelectionOffset:length:withAnnotatedString:relativeReplacementRange:]):
Plumb the whole relative replacement range through to the Web Content process.

  • WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.h:
  • WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.messages.in:
  • WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm:

(WebKit::TextCheckingControllerProxy::replaceRelativeToSelection):
Only replace the text of the substring that changed (the replacement range),
and fix up the selection offset math (it was really just wrong before).

1:12 PM Changeset in webkit [246931] by wenson_hsieh@apple.com
  • 11 edits in trunk/Source

Need a way for SPI clients to know when to avoid resizing to accommodate for the input view bounds
https://bugs.webkit.org/show_bug.cgi?id=199331
<rdar://problem/52116170>

Reviewed by Tim Horton.

Source/WebCore:

Add a new quirk to avoid resizing the web view when input view bounds change.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldAvoidResizingWhenInputViewBoundsChange const):

  • page/Quirks.h:

Source/WebKit:

Expose new SPI, such that clients may check whether to avoid resizing the web view when changing input view
bounds. In particular, resizing the web view in this case causes toolbar menus in Microsoft Word online to
dismiss immediately after opening them, due to resize events fired as a result of the input view dismissing.

  • Shared/FocusedElementInformation.cpp:

(WebKit::FocusedElementInformation::encode const):
(WebKit::FocusedElementInformation::decode):

  • Shared/FocusedElementInformation.h:

Add a new flag to FocusedElementInformation to indicate whether we should avoid resizing the web view when an
input view is presented.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _shouldAvoidResizingWhenInputViewBoundsChange]):

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

(-[WKContentView _elementDidBlur]):

Reset the value of the flag.

(-[WKContentView _shouldAvoidResizingWhenInputViewBoundsChange]):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getFocusedElementInformation):

1:00 PM Changeset in webkit [246930] by Alan Coon
  • 7 edits in tags/Safari-608.1.32.1/Source

Versioning.

11:20 AM Changeset in webkit [246929] by Alan Coon
  • 1 copy in tags/Safari-608.1.32.1

New tag.

10:39 AM Changeset in webkit [246928] by jer.noble@apple.com
  • 10 edits
    1 add in trunk

Add new -[WKWebView _closeAllMediaPresentations] SPI
https://bugs.webkit.org/show_bug.cgi?id=199294
<rdar://problem/51965958>

Reviewed by Alex Christensen.

Source/WebKit:

Add a new SPI that will close all out-of-window media presentations, including
picture-in-picture, video fullscreen, and element fullscreen.

Drive-by fixes:

+ -[WKApplicationStateTrackingView didMoveToWindow] incorrectly assumes that a WKWebView will

never be moved frome one window to another, and asserts.

+ -[WKFullScreenWindowController close] doesn't fire the correct 'webkitfullscreenchange' event

when called in the middle of animating into fullscreen.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _closeAllMediaPresentations]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:

(WebKit::VideoFullscreenManagerProxy::forEachSession):

  • UIProcess/ios/WKApplicationStateTrackingView.mm:

(-[WKApplicationStateTrackingView didMoveToWindow]):

  • UIProcess/mac/WKFullScreenWindowController.h:
  • UIProcess/mac/WKFullScreenWindowController.mm:

(-[WKFullScreenWindowController exitFullScreenImmediately]):
(-[WKFullScreenWindowController close]):

Tools:

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

(TEST):

10:35 AM Changeset in webkit [246927] by sihui_liu@apple.com
  • 3 edits
    1 add in trunk/Tools

Add a regression test for change r246901
https://bugs.webkit.org/show_bug.cgi?id=199290

Reviewed by Geoffrey Garen.

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

(-[LocalStorageNavigationDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]):
(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/localstorage-open-window-private.html: Added.
10:12 AM Changeset in webkit [246926] by Antti Koivisto
  • 5 edits in trunk/Source/WebKit

[iOS Scrolling] Propagate scrolls to non-nested UIScrollViews
https://bugs.webkit.org/show_bug.cgi?id=199222

Reviewed by Simon Fraser.

We may generate scrolling hierarchies where the scrolling ancestor of a layer is not
an ancestor in the layer tree. We handle this in most situations but there is still
a problem where a scroller fails to propage scroll to the ancestor when it reaches
the edge.

This patch hooks up a new SPI that allows us to tell UIKit about non-ancestor scrolling
relations and solve this problem.

  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h:
  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:

(WebKit::findActingScrollParent):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(-[WKScrollingNodeScrollViewDelegate _actingParentScrollViewForScrollView:]):

Hook into UIKit SPI.

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::findActingScrollParent):

9:00 AM Changeset in webkit [246925] by Konstantin Tokarev
  • 28 edits
    1 delete in trunk

Remove traces of ENABLE_ICONDATABASE remaining after its removal in 219733
https://bugs.webkit.org/show_bug.cgi?id=199317

Reviewed by Michael Catanzaro.

While IconDatabase and all code using it was removed,
ENABLE_ICONDATABASE still exists as build option and C++ macro.

.:

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsPlayStation.cmake:
  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/WebKitFeatures.cmake:
  • Source/cmake/tools/vsprops/FeatureDefines.props:
  • Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

PerformanceTests:

  • StitchMarker/wtf/FeatureDefines.h:

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:
  • Resources/urlIcon.png: Removed file which was only used in

IconDatabase.cpp.

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

  • Configurations/FeatureDefines.xcconfig:
  • PlatformGTK.cmake: Remove reference to unused urlIcon.png file.

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:
  • WebView/WebView.mm:

(-[WebView _cacheFrameLoadDelegateImplementations]): Use PLATFORM(MAC)
guard instead of ENABLE_ICONDATABASE, because ENABLE_ICONDATABASE was
enabled for macOS only.

Source/WTF:

  • wtf/FeatureDefines.h:

Tools:

  • Scripts/webkitperl/FeatureList.pm:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
  • gtk/manifest.txt.in: Remove reference to unused urlIcon.png file.
  • wpe/manifest.txt.in: Remove reference to unused urlIcon.png file.
7:48 AM Changeset in webkit [246924] by wenson_hsieh@apple.com
  • 9 edits in trunk

-[WKContentView _selectionClipRects] returns a bogus value in -reloadInputViews when focusing an element
https://bugs.webkit.org/show_bug.cgi?id=199310
<rdar://problem/52292137>

Reviewed by Megan Gardner.

Source/WebKit:

When reloading input views under -_elementDidFocus:, -_selectionClipRect returns the value of the previously
focused element; this is because _selectionClipRect depends on EditorState's post layout data, which is only
guaranteed to arrive during the next remote layer tree commit after the element is focused.

However, some clients need to inspect this value under the call to -reloadInputViews when an element is focused;
to make this work, simply check whether we are currently waiting for post-layout EditorState data to arrive
following element focus; if so, return the FocusedElementInformation's elementRect, which represents the initial
state of the focused element. Otherwise, use the EditorState's post layout data, which is guaranteed to be more
up-to-date than the FocusedElementInformation's element rect.

Test: KeyboardInputTests.SelectionClipRectsWhenPresentingInputView

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::waitingForPostLayoutEditorStateUpdateAfterFocusingElement const):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _selectionClipRect]):

Tools:

Add a new API test to verify that _selectionClipRects returns the correct value when invoked under the scope of
_elementDidFocus.

  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/ios/TestInputDelegate.h:
  • TestWebKitAPI/Tests/ios/TestInputDelegate.mm:

(-[TestInputDelegate setDidStartInputSessionHandler:]):
(-[TestInputDelegate didStartInputSessionHandler]):

Add plumbing for a handler block in TestInputDelegate.

(-[TestInputDelegate setWillStartInputSessionHandler:]):

Drive-by style fixes to add a space between id and < for Objective-C protocols.

(-[TestInputDelegate willStartInputSessionHandler]):
(-[TestInputDelegate _webView:willStartInputSession:]):
(-[TestInputDelegate _webView:didStartInputSession:]):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/ios/UIKitSPI.h:

Add a declaration for _selectionClipRects.

12:46 AM Changeset in webkit [246923] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[SOUP] WebSockets: runtime critical warning when closing the connection in some cases
https://bugs.webkit.org/show_bug.cgi?id=199265

Reviewed by Michael Catanzaro.

Ensure the connection is still open before calling soup_websocket_connection_close().

  • NetworkProcess/soup/WebSocketTaskSoup.cpp:

(WebKit::WebSocketTask::close):

12:38 AM Changeset in webkit [246922] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

[Win] unresolved external symbol "JSC::JSObject::didBecomePrototype(void)" referenced in function "JSC::Structure::create(...)"
https://bugs.webkit.org/show_bug.cgi?id=199312

Reviewed by Keith Miller.

WinCairo port, clang-cl Release builds reported a following linkage error:

WebCore.lib(UnifiedSource-4babe430-10.cpp.obj) : error LNK2019: unresolved external symbol "public: void cdecl JSC::JSObject::didBecomePrototype(void)" (?didBecomePrototype@JSObject@JSC@@QEAAXXZ) referenced in function "public: static class JSC::Structure * cdecl JSC::Structure::create(class JSC::VM &,class JSC::JSGlobalObject *,class JSC::JSValue,class JSC::TypeInfo const &,struct JSC::ClassInfo const *,unsigned char,unsigned int)" (?create@Structure@JSC@@SAPEAV12@AEAVVM@2@PEAVJSGlobalObject@2@VJSValue@2@AEBVTypeInfo@2@PEBUClassInfo@2@EI@Z)

No new tests because there is no behavior change.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: Include <JavaScriptCore/JSCInlines.h>,

and do not include headers which is included by it.

Jun 27, 2019:

10:57 PM Changeset in webkit [246921] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit

Unreviewed WPE build fix.

  • SourcesWPE.txt: Add WebSocketTaskSoup.cpp to the build.
8:22 PM Changeset in webkit [246920] by Alan Bujtas
  • 4 edits in trunk

REGRESSION(r244633): e-mail with "height: 100%" causes unstable layout.
https://bugs.webkit.org/show_bug.cgi?id=199303
<rdar://problem/51340927>

Reviewed by Tim Horton.

Source/WebCore:

This patch restores the previous behavior (pre r244633) where we intentionally reported stale content size value to
avoid unstable layout for content like height: 100px.

  • page/FrameView.cpp:

(WebCore::FrameView::autoSizeIfEnabled):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/AutoLayoutIntegration.mm:

(TEST):

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

[WinCairo][MediaFoundation] Stop using soft linking for Media Foundation
https://bugs.webkit.org/show_bug.cgi?id=198783
<rdar://problem/52301843>

Unreviewed compilation warning fix. clang-cl reports:

..\..\Source\WebCore\platform\graphics\win\MediaPlayerPrivateMediaFoundation.cpp(526,10): warning: address of function 'MFCreateTopology' will always evaluate to 'true' [-Wpointer-bool-conversion]

if (!MFCreateTopology)

~~

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::createTopologyFromSource): Removed the pointer check of MFCreateTopology.

7:29 PM WebKitGTK/2.24.x edited by jdiggs@igalia.com
(diff)
7:10 PM Changeset in webkit [246918] by Fujii Hironori
  • 3 edits in trunk/Source/WebCore

[WinCairo][MediaFoundation] Stop using soft linking for Media Foundation
https://bugs.webkit.org/show_bug.cgi?id=198783

Reviewed by Alex Christensen.

WinCairo is supporting Windows 7 or newer. It doesn't need soft
linking anymore.

No new tests because there is no behavior change.

  • PlatformWinCairo.cmake: Added libraries to WebCore_LIBRARIES.
  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::mimeTypeCache):
(WebCore::MediaPlayerPrivateMediaFoundation::setRate):
(WebCore::MediaPlayerPrivateMediaFoundation::setAllChannelVolumes):
(WebCore::MediaPlayerPrivateMediaFoundation::createSession):
(WebCore::MediaPlayerPrivateMediaFoundation::endSession):
(WebCore::MediaPlayerPrivateMediaFoundation::startCreateMediaSource):
(WebCore::MediaPlayerPrivateMediaFoundation::createTopologyFromSource):
(WebCore::MediaPlayerPrivateMediaFoundation::createOutputNode):
(WebCore::MediaPlayerPrivateMediaFoundation::createSourceStreamNode):
(WebCore::MediaPlayerPrivateMediaFoundation::updateReadyState):
(WebCore::MediaPlayerPrivateMediaFoundation::videoDisplay):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::createOptimalVideoType):
(WebCore::MediaPlayerPrivateMediaFoundation::VideoScheduler::setFrameRate):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::presentSample):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::initializeD3D):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::createD3DSample):

6:49 PM Changeset in webkit [246917] by Basuke Suzuki
  • 4 edits in trunk/Source/WebCore

Fix build error on WebCore when disabling ENABLE_INDEXED_DATABASE.

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

Unreviewed build fix.

  • testing/Internals.cpp: Make method conditional.
  • testing/Internals.h: Ditto.
  • testing/Internals.idl: Ditto.
6:35 PM Changeset in webkit [246916] by Alan Coon
  • 1 copy in tags/Safari-608.1.31.1.2

Tag Safari-608.1.31.1.2.

6:32 PM Changeset in webkit [246915] by Alan Coon
  • 7 edits in branches/safari-608.1.31.1-branch/Source

Versioning.

6:19 PM Changeset in webkit [246914] by Alan Coon
  • 1 copy in tags/Safari-608.1.31.0.4

Tag Safari-608.1.31.0.4.

6:09 PM Changeset in webkit [246913] by Simon Fraser
  • 6 edits in trunk/Source/WebCore

Fix crash in ScrollingStateNode::insertChild()
https://bugs.webkit.org/show_bug.cgi?id=199297
rdar://problem/49415136

Reviewed by Tim Horton.

Crash data suggest that 'parent' can be deleted in ScrollingStateTree::insertNode(). To avoid this,
have ScrollingStateTree::m_stateNodeMap store RefPts, and do the same for ScrollingTree::m_nodeMap.

  • page/scrolling/ScrollingStateNode.cpp:

(WebCore::ScrollingStateNode::ScrollingStateNode): The relaxAdoptionRequirement() is required
to avoid ASSERT(!m_adoptionIsRequired) when the node is added to the tree in its constructor.

  • page/scrolling/ScrollingStateTree.cpp:

(WebCore::ScrollingStateTree::unparentNode):
(WebCore::ScrollingStateTree::unparentChildrenAndDestroyNode):
(WebCore::ScrollingStateTree::detachAndDestroySubtree):
(WebCore::ScrollingStateTree::stateNodeForID const):

  • page/scrolling/ScrollingStateTree.h:
  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::updateTreeFromStateNode):

  • page/scrolling/ScrollingTree.h:
6:06 PM Changeset in webkit [246912] by dino@apple.com
  • 4 edits in trunk/Source/WebKit

Provide overrides for UIKit's suggested actions in UIContextMenuInteraction
https://bugs.webkit.org/show_bug.cgi?id=199301
<rdar://problem/52297380>

Reviewed by Tim Horton.

We were previously wrapping the actionMenuProvider with our own block
in order to ensure the correct suggestedActions were passed to the provider.
UIKit added API for us to override the actions separately.

Unfortunately we can't quite yet get rid of our access into the
UIContextMenuConfiguration, because we still need to override the preview
handler in the case where the user does not want link previews.

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

(-[WKContentView continueContextMenuInteraction:]):
(-[WKContentView _contextMenuInteraction:overrideSuggestedActionsForConfiguration:]):
Implement the new delegate SPI to provide our own actions.

5:45 PM Changeset in webkit [246911] by Kocsen Chung
  • 1 copy in tags/Safari-607.3.7

Tag Safari-607.3.7.

5:26 PM Changeset in webkit [246910] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

FTL keepAlive()'s patchpoint should also declare that it reads HeapRange::top().
https://bugs.webkit.org/show_bug.cgi?id=199291

Reviewed by Yusuke Suzuki and Filip Pizlo.

The sole purpose of keepAlive() is to communicate to B3 that an LValue
needs to be kept alive past the last opportunity for a GC. The only way
we can get a GC is via a function call. Hence, what keepAlive() really
needs to communicate is that the LValue needs to be kept alive past the
last function call. Function calls read and write HeapRange::top().
Currently, B3 does not shuffle writes. Hence, simply inserting the
keepAlive() after the calls that can GC is sufficient.

But to be strictly correct, keepAlive() should also declare that it reads
HeapRange::top(). This will guarantee that the keepAlive patchpoint won't
ever be moved before the function call should B3 gain the ability to shuffle
writes in the future.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::keepAlive):

4:49 PM Changeset in webkit [246909] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

Fix the test added in r246868 on iOS debug simulator.

  • editing/pasteboard/paste-contents-with-side-effects.html:
4:06 PM Changeset in webkit [246908] by dbates@webkit.org
  • 3 edits
    2 adds in trunk

[iOS] Select all with existing range selection replaces range instead of selecting all text
https://bugs.webkit.org/show_bug.cgi?id=197950
<rdar://problem/50245131>

Reviewed by Wenson Hsieh.

Source/WebKit:

Following <rdar://problem/47333786>, UIKit now asks WebKit whether it can handle Command + A as
"select all" instead of just demanding that we handle it. So, WebKit needs to be able to correctly
tell UIKit in advance whether it can handle it. Currenlty WebKit tells UIKit it cannot handle a
"select all" whenever there is an existing range selection. So, UIKit does not tell WebKit to
perform the "select all". Moreover, since UIKit has no other means to handle this key command
itself it tells WebKit the key command was not handled. So, WebKit tells the keyboard to insert
the "a". Instead, WebKit should tell UIKit it can handle a "select all" even when this is an
existing range selection. However we need to keep the current logic just for when UIKit is
asking us with respect to populating the callout menu to not regress platform behavior.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView canPerformActionForWebView:withSender:]): Do what we do now if we are called
when populating the callout menu and action is Select All. Otherwise, return YES for the Select All
action if we have a non-empty selection.

LayoutTests:

Add a test to ensure that pressing Command + A performs a "select all" even when there
is an existing range selection.

  • fast/events/ios/select-all-with-existing-selection-expected.txt: Added.
  • fast/events/ios/select-all-with-existing-selection.html: Added.
3:03 PM Changeset in webkit [246907] by aestes@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Stop using cached UITargetedPreviews from previous interactions when starting a new context menu interaction
https://bugs.webkit.org/show_bug.cgi?id=199285
<rdar://problem/52074916>

Reviewed by Tim Horton.

WKContentView was caching the UITargetedPreview created in
-contextMenuInteraction:previewForHighlightingMenuWithConfiguration: for later reuse by
-contextMenuInteraction:previewForDismissingMenuWithConfiguration:. The cached value was
then cleared in -contextMenuInteractionDidEnd:.

This was wrong, because -contextMenuInteractionDidEnd: can be called before
-contextMenuInteraction:previewForDismissingMenuWithConfiguration:, so we would clear the
cache then create and cache a new UITargetedPreview during dismissal. Then when a new
context menu interaction started, we'd reuse the targeted preview created for the previous
dismissal (which has the wrong geometry).

Stop assuming an ordering between
-contextMenuInteraction:previewForDismissingMenuWithConfiguration: and
-contextMenuInteractionDidEnd:. Instead, always create and cache a new UITargetedPreview in
-contextMenuInteraction:previewForHighlightingMenuWithConfiguration:, then reuse it and
clear the cache in -contextMenuInteraction:previewForDismissingMenuWithConfiguration:.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _createTargetedPreviewIfPossible]):
(-[WKContentView contextMenuInteraction:previewForDismissingMenuWithConfiguration:]):
(-[WKContentView contextMenuInteractionDidEnd:]):

2:36 PM Changeset in webkit [246906] by Konstantin Tokarev
  • 2 edits in trunk/Source/WTF

Avoid using WTF::Function for passing local function pointers and closures in URLHelpers.cpp
https://bugs.webkit.org/show_bug.cgi?id=199271

Reviewed by Yusuke Suzuki.

WTF::Function allocates memory on heap, which is totally redundant in this
case.

  • wtf/URLHelpers.cpp:

(WTF::URLHelpers::isSecondLevelDomainNameAllowedByTLDRules):

2:11 PM Changeset in webkit [246905] by timothy@apple.com
  • 4 edits in trunk/Source

Move WebKitLegacy off of a couple AppKit ivars.
https://bugs.webkit.org/show_bug.cgi?id=199279
rdar://problem/34983438

Reviewed by Tim Horton.

Source/WebKitLegacy/mac:

  • WebView/WebHTMLView.mm:

(-[NSView _setSubviewsIvar:]): Added. Implement on older systems.
(-[NSView _subviewsIvar]): Added. Ditto.
(needsCursorRectsSupportAtPoint): Use _borderView property.
(-[WebHTMLView _setAsideSubviews]): Use _subviewsIvar property.
(-[NSWindow _web_borderView]): Deleted.

Source/WTF:

  • wtf/Platform.h: Added HAVE_SUBVIEWS_IVAR_SPI.
1:57 PM Changeset in webkit [246904] by commit-queue@webkit.org
  • 4 edits in trunk/LayoutTests

Layout Test fast/parser/parser-yield-timing.html was flaky due to strict tolerance, increased tolerance.
https://bugs.webkit.org/show_bug.cgi?id=199280

Patch by Russell Epstein <russell_e@apple.com> on 2019-06-27
Reviewed by Tim Horton.

  • fast/parser/parser-yield-timing-expected.txt:
  • fast/parser/parser-yield-timing.html:
  • platform/mac-wk1/TestExpectations:
1:54 PM Changeset in webkit [246903] by Alan Coon
  • 3 edits in branches/safari-608.1.31.0-branch/Source/WebKit

Cherry-pick r246901. rdar://problem/52202948

Regression(r246526): StorageManager thread hangs
https://bugs.webkit.org/show_bug.cgi?id=199278
<rdar://problem/52202948>

Reviewed by Geoffrey Garen.

r246526 adds a lock m_localStorageNamespacesMutex to protect m_localStorageNamespaces, because
m_localStorageNamespaces is destroyed at main thread while accesses to m_localStorageNamespaces happen in the
background thread.
After r246526, getOrCreateLocalStorageNamespace acquires lock m_localStorageNamespacesMutex when
m_localStorageNamespacesMutex is already acquired in cloneSessionStorageNamespace, so the StorageManager thread
hangs.
To solve this issue, we can remove the lock in getOrCreateLocalStorageNamespace, or we can remove the
m_localStorageNamespacesMutex. waitUntilWritesFinished() before ~StorageManager() already guarantees nothing
will be running in the background thread, so it is unlikely we the access to m_localStorageNamespaces in the
background thread would collide with the destruction of m_localStorageNamespaces. Also, we don't need
didDestroyStorageArea as LocalStorageNamespace can hold the last reference of StorageArea after r245881.

  • NetworkProcess/WebStorage/StorageManager.cpp: (WebKit::StorageManager::StorageArea::StorageArea): (WebKit::StorageManager::StorageArea::~StorageArea): (WebKit::StorageManager::LocalStorageNamespace::LocalStorageNamespace): (WebKit::StorageManager::cloneSessionStorageNamespace): (WebKit::StorageManager::getLocalStorageOrigins): (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin): (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince): (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins): (WebKit::StorageManager::getOrCreateLocalStorageNamespace): (WebKit::StorageManager::LocalStorageNamespace::didDestroyStorageArea): Deleted.
  • NetworkProcess/WebStorage/StorageManager.h:

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

1:54 PM Changeset in webkit [246902] by Alan Coon
  • 3 edits in branches/safari-608.1.31.1-branch/Source/WebKit

Cherry-pick r246901. rdar://problem/52202948

Regression(r246526): StorageManager thread hangs
https://bugs.webkit.org/show_bug.cgi?id=199278
<rdar://problem/52202948>

Reviewed by Geoffrey Garen.

r246526 adds a lock m_localStorageNamespacesMutex to protect m_localStorageNamespaces, because
m_localStorageNamespaces is destroyed at main thread while accesses to m_localStorageNamespaces happen in the
background thread.
After r246526, getOrCreateLocalStorageNamespace acquires lock m_localStorageNamespacesMutex when
m_localStorageNamespacesMutex is already acquired in cloneSessionStorageNamespace, so the StorageManager thread
hangs.
To solve this issue, we can remove the lock in getOrCreateLocalStorageNamespace, or we can remove the
m_localStorageNamespacesMutex. waitUntilWritesFinished() before ~StorageManager() already guarantees nothing
will be running in the background thread, so it is unlikely we the access to m_localStorageNamespaces in the
background thread would collide with the destruction of m_localStorageNamespaces. Also, we don't need
didDestroyStorageArea as LocalStorageNamespace can hold the last reference of StorageArea after r245881.

  • NetworkProcess/WebStorage/StorageManager.cpp: (WebKit::StorageManager::StorageArea::StorageArea): (WebKit::StorageManager::StorageArea::~StorageArea): (WebKit::StorageManager::LocalStorageNamespace::LocalStorageNamespace): (WebKit::StorageManager::cloneSessionStorageNamespace): (WebKit::StorageManager::getLocalStorageOrigins): (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin): (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince): (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins): (WebKit::StorageManager::getOrCreateLocalStorageNamespace): (WebKit::StorageManager::LocalStorageNamespace::didDestroyStorageArea): Deleted.
  • NetworkProcess/WebStorage/StorageManager.h:

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

1:46 PM Changeset in webkit [246901] by sihui_liu@apple.com
  • 3 edits in trunk/Source/WebKit

Regression(r246526): StorageManager thread hangs
https://bugs.webkit.org/show_bug.cgi?id=199278
<rdar://problem/52202948>

Reviewed by Geoffrey Garen.

r246526 adds a lock m_localStorageNamespacesMutex to protect m_localStorageNamespaces, because
m_localStorageNamespaces is destroyed at main thread while accesses to m_localStorageNamespaces happen in the
background thread.
After r246526, getOrCreateLocalStorageNamespace acquires lock m_localStorageNamespacesMutex when
m_localStorageNamespacesMutex is already acquired in cloneSessionStorageNamespace, so the StorageManager thread
hangs.
To solve this issue, we can remove the lock in getOrCreateLocalStorageNamespace, or we can remove the
m_localStorageNamespacesMutex. waitUntilWritesFinished() before ~StorageManager() already guarantees nothing
will be running in the background thread, so it is unlikely we the access to m_localStorageNamespaces in the
background thread would collide with the destruction of m_localStorageNamespaces. Also, we don't need
didDestroyStorageArea as LocalStorageNamespace can hold the last reference of StorageArea after r245881.

  • NetworkProcess/WebStorage/StorageManager.cpp:

(WebKit::StorageManager::StorageArea::StorageArea):
(WebKit::StorageManager::StorageArea::~StorageArea):
(WebKit::StorageManager::LocalStorageNamespace::LocalStorageNamespace):
(WebKit::StorageManager::cloneSessionStorageNamespace):
(WebKit::StorageManager::getLocalStorageOrigins):
(WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
(WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
(WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
(WebKit::StorageManager::getOrCreateLocalStorageNamespace):
(WebKit::StorageManager::LocalStorageNamespace::didDestroyStorageArea): Deleted.

  • NetworkProcess/WebStorage/StorageManager.h:
1:44 PM Changeset in webkit [246900] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

REGRESSION (r246888): fast/dom/navigator-detached-no-crash.html failing on Apple High Sierra Release WK2 (Tests)
https://bugs.webkit.org/show_bug.cgi?id=199284

Unreviewed test gardening.

  • platform/mac-highsierra/fast/dom/navigator-detached-no-crash-expected.txt: Rebaseline test after r246888.
1:22 PM Changeset in webkit [246899] by Simon Fraser
  • 2 edits in trunk/Source/WebCore
REGRESSION (r246869): ASSERTION FAILED: !renderer().hasRepaintLayoutRects()
renderer().repaintLayoutRects().m_repaintRect == renderer().clippedOverflowRectForRepaint(renderer().containerForRepaint())

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

Reviewed by Zalan Bujtas.

When layer backing sharing changes, we need to clear cached repaint rects, since they
painting root changes.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::setBackingProviderLayer):

1:00 PM Changeset in webkit [246898] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Layout Test fast/parser/parser-yield-timing.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=199280

Unreviewed test gardening.

Patch by Russell Epstein <russell_e@apple.com> on 2019-06-27

  • platform/mac-wk1/TestExpectations:
12:43 PM Changeset in webkit [246897] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

pointerevents/ios/pointer-events-implicit-capture.html fails on iOS
https://bugs.webkit.org/show_bug.cgi?id=199259

Patch by Antoine Quint <Antoine Quint> on 2019-06-27
Reviewed by Dean Jackson.

The assumptions made by this test were incorrect. The "gotpointercapture" event should not be dispatched
until the next pointer event is dispatched after setting pointer capture. Even though pointer capture is
set implicitly on "pointerdown" on non-mouse devices, the event will only be fired once a "pointermove" or
"pointerup" event is dispatched.

  • pointerevents/ios/pointer-events-implicit-capture.html:
11:43 AM Changeset in webkit [246896] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

WebSockets: avoid data copies when queuing tasks in WebSocketChannel
https://bugs.webkit.org/show_bug.cgi?id=199262

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-06-27
Reviewed by Alex Christensen.

For IPC message handler arguments we can receive rvalue references instead of const references.

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::didConnect):
(WebKit::WebSocketChannel::didReceiveText):
(WebKit::WebSocketChannel::didReceiveBinaryData):
(WebKit::WebSocketChannel::didClose):
(WebKit::WebSocketChannel::didReceiveMessageError):

  • WebProcess/Network/WebSocketChannel.h:
11:36 AM Changeset in webkit [246895] by youenn@apple.com
  • 4 edits in trunk/Source/WebKit

Fix build after revision 246877
https://bugs.webkit.org/show_bug.cgi?id=199276

Unreviewed.

Pass protocol parameter to NetworkSocketChannel.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:webSocketTask:didOpenWithProtocol:]):

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

(WebKit::WebSocketTask::didConnect):

11:27 AM Changeset in webkit [246894] by Devin Rousso
  • 1 edit in trunk/LayoutTests/ChangeLog

Unreviewed, fix test failures after r246876.

  • inspector/worker/console-basic-expected.txt:
11:23 AM Changeset in webkit [246893] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening, rebaseline test after r246876.

  • inspector/worker/console-basic-expected.txt:
11:17 AM Changeset in webkit [246892] by Beth Dakin
  • 106 edits
    2 moves in trunk

Upstream use of MACCATALYST
https://bugs.webkit.org/show_bug.cgi?id=199245
rdar://problem/51687723

Reviewed by Tim Horton.

PerformanceTests:

  • MediaTime/Configurations/SDKVariant.xcconfig:

Source/bmalloc:

  • Configurations/SDKVariant.xcconfig:

Source/JavaScriptCore:

  • Configurations/Base.xcconfig:
  • Configurations/FeatureDefines.xcconfig:
  • Configurations/JavaScriptCore.xcconfig:
  • Configurations/SDKVariant.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/SDKVariant.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/SDKVariant.xcconfig:

Source/WebCore:

  • Configurations/Base.xcconfig:
  • Configurations/FeatureDefines.xcconfig:
  • Configurations/SDKVariant.xcconfig:
  • Configurations/WebCore.xcconfig:
  • Modules/geolocation/ios/GeolocationPositionIOS.mm:

(WebCore::GeolocationPosition::GeolocationPosition):

  • editing/cocoa/DictionaryLookup.mm:

(-[WebRevealHighlight drawHighlightContentForItem:context:]):
(WebCore::showPopupOrCreateAnimationController):

  • editing/cocoa/WebContentReaderCocoa.mm:
  • page/Navigator.h:
  • page/SettingsBase.cpp:

(WebCore::SettingsBase::defaultContentChangeObserverEnabled):

  • page/cocoa/MemoryReleaseCocoa.mm:

(WebCore::platformReleaseMemory):

  • platform/audio/ios/AudioSessionIOS.mm:

(WebCore::AudioSession::setCategory):
(WebCore::AudioSession::routingContextUID const):

  • platform/cocoa/ParentalControlsContentFilter.mm:

(WebCore::canHandleResponse):

  • platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm:

(WebCore::AVAssetMIMETypeCache::isAvailable const):

  • platform/graphics/avfoundation/objc/AVStreamDataParserMIMETypeCache.mm:

(WebCore::AVStreamDataParserMIMETypeCache::isAvailable const):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldDisableSleep):

  • platform/graphics/cv/ImageTransferSessionVT.h:
  • platform/graphics/cv/ImageTransferSessionVT.mm:

(WebCore::cvPixelFormatOpenGLKey):
(WebCore::ImageTransferSessionVT::ImageTransferSessionVT):

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::readPasteboardWebContentDataForType):
(WebCore::Pasteboard::supportedWebContentPasteboardTypes):

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::registerItemToPasteboard):
(WebCore::PlatformPasteboard::write):

  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(-[WebAVPlayerLayer setVideoGravity:]):

  • platform/ios/WebItemProviderPasteboard.mm:

(-[WebItemProviderRegistrationInfoList itemProvider]):
(-[WebItemProviderLoadResult canBeRepresentedAsFileUpload]):
(-[WebItemProviderPasteboard numberOfFiles]):

  • platform/network/cf/CertificateInfoCFNet.cpp:

(WebCore::CertificateInfo::summaryInfo const):

Source/WebCore/PAL:

  • Configurations/Base.xcconfig:
  • Configurations/FeatureDefines.xcconfig:
  • Configurations/SDKVariant.xcconfig:
  • pal/spi/mac/AVFoundationSPI.h:

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:
  • Configurations/SDKVariant.xcconfig:

Source/WebKit:

  • Configurations/Base.xcconfig:
  • Configurations/FeatureDefines.xcconfig:
  • Configurations/Network-iOSMac.entitlements: Removed.
  • Configurations/Network-macCatalyst.entitlements: Copied from Source/WebKit/Configurations/Network-iOSMac.entitlements.
  • Configurations/NetworkService.xcconfig:
  • Configurations/SDKVariant.xcconfig:
  • Configurations/WebContent-iOSMac.entitlements: Removed.
  • Configurations/WebContent-macCatalyst.entitlements: Copied from Source/WebKit/Configurations/WebContent-iOSMac.entitlements.
  • Configurations/WebContentService.xcconfig:
  • Configurations/WebKit.xcconfig:
  • NetworkProcess/ios/NetworkProcessIOS.mm:
  • NetworkProcess/mac/NetworkProcessMac.mm:

(WebKit::NetworkProcess::initializeProcess):
(WebKit::NetworkProcess::initializeProcessName):

  • Platform/mac/LayerHostingContext.mm:

(WebKit::LayerHostingContext::createForExternalHostingProcess):

  • Platform/spi/ios/ManagedConfigurationSPI.h:
  • Platform/spi/ios/UIKitSPI.h:
  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultCustomPasteboardDataEnabled):

  • Shared/ios/AuxiliaryProcessIOS.mm:

(WebKit::AuxiliaryProcess::initializeSandbox):

  • Shared/ios/InteractionInformationAtPosition.h:
  • Shared/ios/InteractionInformationAtPosition.mm:

(WebKit::InteractionInformationAtPosition::encode const):
(WebKit::InteractionInformationAtPosition::decode):

  • Shared/mac/AuxiliaryProcessMac.mm:

(WebKit::enableSandboxStyleFileQuarantine):

  • Shared/mac/CodeSigning.mm:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _webViewPrintFormatter]):

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:

(WebKit::RemoteLayerTreeHost::updateLayerTree):

  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:

(-[WKRemoteView initWithFrame:contextID:]):

  • UIProcess/_WKWebViewPrintFormatter.mm:
  • UIProcess/_WKWebViewPrintFormatterInternal.h:
  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant _elementActionForDDAction:]):

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _commonInitializationWithProcessPool:configuration:]):

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

(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
(-[WKContentView _showTapHighlight]):
(-[WKContentView gestureRecognizer:canBePreventedByGestureRecognizer:]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKContentView canPerformActionForWebView:withSender:]):
(-[WKContentView _defineForWebView:]):
(-[WKContentView setSelectedTextRange:]):
(-[WKContentView closestPositionToPoint:]):
(-[WKContentView _showShareSheet:inRect:completionHandler:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::desktopClassBrowsingSupported):
(WebKit::desktopClassBrowsingRecommended):

  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(-[WKFileUploadPanel _showDocumentPickerMenu]):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm:
  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::dictionaryPopupInfoForRange):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::platformEditorState const):
(WebKit::WebPage::selectWithGesture):
(WebKit::selectionPositionInformation):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::initializeSandbox):

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

Source/WebKitLegacy/ios:

  • Misc/WebGeolocationCoreLocationProvider.mm:

(-[WebGeolocationCoreLocationProvider requestGeolocationAuthorization]):

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:
  • Configurations/FeatureDefines.xcconfig:
  • Configurations/SDKVariant.xcconfig:

Source/WTF:

  • Configurations/SDKVariant.xcconfig:
  • wtf/FeatureDefines.h:
  • wtf/Platform.h:

Tools:

  • ContentExtensionTester/Configurations/SDKVariant.xcconfig:
  • DumpRenderTree/mac/Configurations/SDKVariant.xcconfig:
  • ImageDiff/cg/Configurations/SDKVariant.xcconfig:
  • MiniBrowser/Configurations/SDKVariant.xcconfig:
  • MobileMiniBrowser/Configurations/SDKVariant.xcconfig:
  • Scripts/webkitpy/generate_xcfilelists_lib/generators.py:

(JavaScriptCoreGenerator):
(WebCoreGenerator):
(WebKitGenerator):

  • TestWebKitAPI/Configurations/Base.xcconfig:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
  • TestWebKitAPI/Configurations/SDKVariant.xcconfig:
  • TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm:
  • WebEditingTester/Configurations/SDKVariant.xcconfig:
  • WebKitLauncher/Configurations/SDKVariant.xcconfig:
  • WebKitTestRunner/Configurations/SDKVariant.xcconfig:
  • lldb/lldbWebKitTester/Configurations/SDKVariant.xcconfig:
11:12 AM Changeset in webkit [246891] by sbarati@apple.com
  • 3 edits in trunk/LayoutTests

Unreviewed. Skip WebGPU tests on High Sierra since WebGPU is disabled.

  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
11:11 AM Changeset in webkit [246890] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

Correct document lifecycle while processing commands
https://bugs.webkit.org/show_bug.cgi?id=199146
<rdar://problem/52047462>

Reviewed by Darin Adler.

Protect the document while commands are being processed since script may run
during the style resolution. We should protect against this.

  • dom/Document.cpp:

(WebCore::command):

10:59 AM Changeset in webkit [246889] by Jon Davis
  • 2 edits in trunk/Source/WebCore

Add status for Web Bluetooth Scanning standards specification.
https://bugs.webkit.org/show_bug.cgi?id=199235

Reviewed by Joseph Pecoraro.

  • features.json:
10:47 AM Changeset in webkit [246888] by sbarati@apple.com
  • 12 edits in trunk

Make WEBGPU enabled only on Mojave and later.

Rubber-stamped by Myles C. Maxfield.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

We're going to look into re-enabling it on High Sierra in:
https://bugs.webkit.org/show_bug.cgi?id=199275

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
10:42 AM Changeset in webkit [246887] by Alan Coon
  • 2 edits in branches/safari-608.1.31.0-branch/Source/WebKit

Cherry-pick r246859. rdar://problem/51554509

[iPadOS] Fix another crash in -[UIPreviewTarget initWithContainer:center:transform:] when generating a fallback targeted preview
https://bugs.webkit.org/show_bug.cgi?id=199243
<rdar://problem/51554509>

Reviewed by Tim Horton.

Additionally make createFallbackTargetedPreview robust in the case where the content view is unparented, and
rename _ensureTargetedPreview to _createTargetedPreviewIfPossible, to reflect the fact that it may now return
nil.

  • UIProcess/ios/WKContentViewInteraction.mm: (createTargetedPreview): (createFallbackTargetedPreview): (-[WKContentView _createTargetedPreviewIfPossible]): (-[WKContentView contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): (-[WKContentView contextMenuInteraction:previewForDismissingMenuWithConfiguration:]): (-[WKContentView _ensureTargetedPreview]): Deleted.

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

10:42 AM Changeset in webkit [246886] by Alan Coon
  • 7 edits in branches/safari-608.1.31.0-branch

Revert r246853. rdar://problem/51554509

Re-integrates the content introduced when cherry-picking r246800 as r246834.

10:14 AM Changeset in webkit [246885] by Alan Coon
  • 7 edits in branches/safari-608.1.31.0-branch/Source

Versioning.

9:54 AM Changeset in webkit [246884] by don.olmstead@sony.com
  • 4 edits
    3 adds in trunk

[FTW] Build JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=199254

Reviewed by Brent Fulgham.

.:

Add the FTW [For the Win(dows)] port. FTW is OS(WINDOWS) + USE(DIRECT2D) +
USE(CURL). Its eventual goal is to be the one true Windows port but to avoid
breaking AppleWin and WinCairo its being split into its own port for the interim.

  • CMakeLists.txt:
  • Source/cmake/OptionsFTW.cmake: Added.

Source/JavaScriptCore:

  • PlatformFTW.cmake: Added.

Source/WTF:

  • wtf/PlatformFTW.cmake: Added.
9:35 AM Changeset in webkit [246883] by Kocsen Chung
  • 5 edits
    1 add in branches/safari-607-branch

Cherry-pick r246740. rdar://problem/52054323

ArraySlice needs to keep the source array alive.
https://bugs.webkit.org/show_bug.cgi?id=197374
<rdar://problem/50304429>

Reviewed by Michael Saboff and Filip Pizlo.

JSTests:

  • stress/array-slice-must-keep-source-array-alive.js: Added.

Source/JavaScriptCore:

The implementation of the FTL ArraySlice intrinsics may GC while allocating the
result array and its butterfly. Previously, ArraySlice already keeps the source
butterfly alive in order to copy from it to the new butterfly after the allocation.
Unfortunately, this is not enough. We also need to keep the source array alive
so that GC will scan the values in the butterfly as well. Note: the butterfly
does not have a visitChildren() method to do this scan. It's the parent object's
responsibility to do the scanning.

This patch fixes this by introducing a keepAlive() utility method, and we use it
to keep the source array alive while allocating the result array and butterfly.

keepAlive() works by using a patchpoint to communicate to B3 that a value (the
source array in this case) is still in use. It also uses a fence to keep B3 from
relocating the patchpoint, which may defeat the fix.

For the DFG's SpeculativeJIT::compileArraySlice(), we may have lucked out and the
source array cell is kept alive. This patch makes it explicit that we should
keep its cell alive till after the result array has been allocated.

For the Baseline JIT and LLInt, we use the arrayProtoFuncSlice() runtime function
and there is no issue because the source array (in "thisObj") is in the element
copying loop that follows the allocation of the result array. However, for
documentation purposes, this patch adds a call to HeapCell::use() to indicate that
the source array need to kept alive at least until after the allocation of the
result array.

  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileArraySlice):
  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileArraySlice): (JSC::FTL::DFG::LowerDFGToB3::allocateJSArray): (JSC::FTL::DFG::LowerDFGToB3::keepAlive):
  • runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSlice):

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

9:10 AM Changeset in webkit [246882] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] Do not print worker environment variables in each build step
https://bugs.webkit.org/show_bug.cgi?id=197319

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/steps.py:

(CheckOutSource.init): Disabled logging of environment variables.
(ApplyPatch.init): Ditto.
(KillOldProcesses.init): Ditto.
(ArchiveBuiltProduct.init): Ditto.
(DownloadBuiltProduct.init): Ditto.
(ExtractBuiltProduct.init): Ditto.
(RunAPITests.init): Ditto.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Updated unit-tests accordingly.
8:38 AM Changeset in webkit [246881] by Konstantin Tokarev
  • 4 edits in trunk/Source/JavaScriptCore

Use JSC_GLIB_API_ENABLED instead of USE(GLIB) as a compile-time check for GLib JSC API
https://bugs.webkit.org/show_bug.cgi?id=199270

Reviewed by Michael Catanzaro.

This change allows building code with enabled USE(GLIB) but without
GLib JSC API.

  • heap/Heap.cpp:

(JSC::Heap::releaseDelayedReleasedObjects):

  • heap/Heap.h:
  • heap/HeapInlines.h:
6:45 AM Changeset in webkit [246880] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] Fix build non-unified builds after r246856
https://bugs.webkit.org/show_bug.cgi?id=199263

Reviewed by Michael Catanzaro.

  • UIProcess/API/C/WKMessageListener.cpp: Added missing inclusion of WKAPICast.h and usage of WebKit namespace.
6:32 AM Changeset in webkit [246879] by Antti Koivisto
  • 3 edits
    2 adds in trunk

REGRESSION (touch-action): Can't scroll vertically when touching a horizontally-scrollable element on instagram.com
https://bugs.webkit.org/show_bug.cgi?id=199268
<rdar://problem/52246473>

Reviewed by Antoine Quint.

Source/WebCore:

Test: pointerevents/ios/touch-action-region-manipulation.html

Having a restrictive touch-action value like 'pan-y' on on element and then having a descendant with
'touch-action: manipulation' computes to 'none'.

  • css/StyleResolver.cpp:

(WebCore::computeEffectiveTouchActions):

For value 'manipulation' return the current effective value, similar to the reverse case above.
Set intersection should only be computed out of restrictive values (pan-x/pan-y/pinch-zoom/none).

LayoutTests:

  • pointerevents/ios/touch-action-region-manipulation-expected.txt: Added.
  • pointerevents/ios/touch-action-region-manipulation.html: Added.
1:58 AM Changeset in webkit [246878] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[SOUP] WebSockets: handle TLS certificate and errors
https://bugs.webkit.org/show_bug.cgi?id=199223

Reviewed by Michael Catanzaro.

Connect to accept-certificate signal on the WebSocket message connection to decide what to do in case of TLS errors.

  • NetworkProcess/soup/NetworkSessionSoup.cpp:

(WebKit::webSocketAcceptCertificateCallback):
(WebKit::webSocketMessageNetworkEventCallback):
(WebKit::NetworkSessionSoup::createWebSocketTask):

1:52 AM Changeset in webkit [246877] by Carlos Garcia Campos
  • 12 edits
    1 copy
    1 add in trunk/Source

[SOUP] Use libsoup WebSockets API
https://bugs.webkit.org/show_bug.cgi?id=199151

Reviewed by Michael Catanzaro.

Source/WebCore:

Use createWebSocketChannel() from the provider also for libsoup when WEBKIT_USE_SOUP_WEBSOCKETS env var is set.

  • Modules/websockets/ThreadableWebSocketChannel.cpp:

(WebCore::ThreadableWebSocketChannel::create):

Source/WebKit:

Use the new WebSockets code path that depends on platform specific WebSockets implementation using the libsoup
API. This is an initial implementation manually tested using the layout tests, which most of them fail due to
missing console messages, missing features in the new code path or differences in the platform
implementation. It will be disabled by default until it's feature complete compared to the internal WebKit
implementation.

  • NetworkProcess/NetworkSocketChannel.cpp:

(WebKit::NetworkSocketChannel::NetworkSocketChannel): Null check m_socket before using it, because
createWebSocketTask() can return nullptr;
(WebKit::NetworkSocketChannel::didConnect): Receive the protocol accepted by the server.
(WebKit::NetworkSocketChannel::didReceiveMessageError): Something failed in the server side.

  • NetworkProcess/NetworkSocketChannel.h:
  • NetworkProcess/WebSocketTask.h:
  • NetworkProcess/soup/NetworkSessionSoup.cpp:

(WebKit::NetworkSessionSoup::createWebSocketTask): Create a WebSocketTask.

  • NetworkProcess/soup/NetworkSessionSoup.h:
  • NetworkProcess/soup/WebSocketTaskSoup.cpp: Added.

(WebKit::WebSocketTask::WebSocketTask):
(WebKit::WebSocketTask::~WebSocketTask):
(WebKit::WebSocketTask::didConnect):
(WebKit::WebSocketTask::didReceiveMessageCallback):
(WebKit::WebSocketTask::didReceiveErrorCallback):
(WebKit::WebSocketTask::didFail):
(WebKit::WebSocketTask::didCloseCallback):
(WebKit::WebSocketTask::didClose):
(WebKit::WebSocketTask::sendString):
(WebKit::WebSocketTask::sendData):
(WebKit::WebSocketTask::close):
(WebKit::WebSocketTask::cancel):
(WebKit::WebSocketTask::resume):

  • NetworkProcess/soup/WebSocketTaskSoup.h: Copied from Source/WebKit/NetworkProcess/WebSocketTask.h.
  • SourcesGTK.txt:
  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::subprotocol): Return the protocol accepted by the server.
(WebKit::WebSocketChannel::didConnect): Set the protocol accepted by the server.
(WebKit::WebSocketChannel::didReceiveMessageError): It's now an IPC message handler and receives the reason as parameter.
(WebKit::WebSocketChannel::networkProcessCrashed): Pass empty reason.

  • WebProcess/Network/WebSocketChannel.h:
  • WebProcess/Network/WebSocketChannel.messages.in:
1:25 AM Changeset in webkit [246876] by Devin Rousso
  • 25 edits in trunk

Web Inspector: throw an error if console.count/console.countReset is called with an object that throws an error from toString
https://bugs.webkit.org/show_bug.cgi?id=199252

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

Parse the arguments passed to console.count and console.countReset before sending it to
the ConsoleClient so that an error can be thrown if the first argument doesn't toString
nicely (e.g. without throwing an error).

Generate call stacks for console.countReset to match other console methods. Also do this
for console.time, console.timeLog, and console.timeEnd. Limit the call stack to only
have the top frame, so no unnecessary/extra data is sent to the frontend (right now, only
the call location is displayed).

Rename title to label for console.time, console.timeLog, and console.timeEnd to
better match the spec.

  • runtime/ConsoleClient.h:
  • runtime/ConsoleObject.cpp:

(JSC::valueOrDefaultLabelString):
(JSC::consoleProtoFuncCount):
(JSC::consoleProtoFuncCountReset):
(JSC::consoleProtoFuncTime):
(JSC::consoleProtoFuncTimeLog):
(JSC::consoleProtoFuncTimeEnd):

  • inspector/JSGlobalObjectConsoleClient.h:
  • inspector/JSGlobalObjectConsoleClient.cpp:

(Inspector::JSGlobalObjectConsoleClient::count):
(Inspector::JSGlobalObjectConsoleClient::countReset):
(Inspector::JSGlobalObjectConsoleClient::time):
(Inspector::JSGlobalObjectConsoleClient::timeLog):
(Inspector::JSGlobalObjectConsoleClient::timeEnd):

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

(Inspector::InspectorConsoleAgent::startTiming):
(Inspector::InspectorConsoleAgent::logTiming):
(Inspector::InspectorConsoleAgent::stopTiming):
(Inspector::InspectorConsoleAgent::count):
(Inspector::InspectorConsoleAgent::countReset):
(Inspector::InspectorConsoleAgent::getCounterLabel): Deleted.

  • inspector/ConsoleMessage.h:
  • inspector/ConsoleMessage.cpp:

(Inspector::ConsoleMessage::ConsoleMessage):
Allow ConsoleMessages to be created with both ScriptArguments and a ScriptCallStack.

Source/WebCore:

Parse the arguments passed to console.count and console.countReset before sending it to
the ConsoleClient so that an error can be thrown if the first argument doesn't toString
nicely (e.g. without throwing an error).

Generate call stacks for console.countReset to match other console methods. Also do this
for console.time, console.timeLog, and console.timeEnd. Limit the call stack to only
have the top frame, so no unnecessary/extra data is sent to the frontend (right now, only
the call location is displayed).

Rename title to label for console.time, console.timeLog, and console.timeEnd to
better match the spec.

Updated existing LayoutTests:

  • inspector/console/console-count.html
  • inspector/console/console-api.html

Also covered by existing WPT tests.

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::consoleCount):
(WebCore::InspectorInstrumentation::consoleCountReset):
(WebCore::InspectorInstrumentation::startConsoleTiming):
(WebCore::InspectorInstrumentation::logConsoleTiming):
(WebCore::InspectorInstrumentation::stopConsoleTiming):

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::consoleCountImpl):
(WebCore::InspectorInstrumentation::consoleCountResetImpl):
(WebCore::InspectorInstrumentation::startConsoleTimingImpl):
(WebCore::InspectorInstrumentation::logConsoleTimingImpl):
(WebCore::InspectorInstrumentation::stopConsoleTimingImpl):

  • page/PageConsoleClient.h:
  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::count):
(WebCore::PageConsoleClient::countReset):
(WebCore::PageConsoleClient::time):
(WebCore::PageConsoleClient::timeLog):
(WebCore::PageConsoleClient::timeEnd):

  • workers/WorkerConsoleClient.h:
  • workers/WorkerConsoleClient.cpp:

(WebCore::WorkerConsoleClient::count):
(WebCore::WorkerConsoleClient::countReset):
(WebCore::WorkerConsoleClient::time):
(WebCore::WorkerConsoleClient::timeLog):
(WebCore::WorkerConsoleClient::timeEnd):

  • worklets/WorkletConsoleClient.h:
  • worklets/WorkletConsoleClient.cpp:

(WebCore::WorkletConsoleClient::count):
(WebCore::WorkletConsoleClient::countReset):

Source/WebInspectorUI:

Add entries for console.countReset and console.timeLog.

Rename title to label for console.time, console.timeLog, and console.timeEnd to
better match the spec.

  • UserInterface/Models/NativeFunctionParameters.js:

LayoutTests:

  • inspector/console/console-count.html:
  • inspector/console/console-count-expected.txt:
  • inspector/console/console-api-expected.txt:
1:19 AM Changeset in webkit [246875] by sbarati@apple.com
  • 10 edits
    8 adds in trunk

[WHLSL] Implement arrays and MakeArrayReference
https://bugs.webkit.org/show_bug.cgi?id=198414

Reviewed by Myles C. Maxfield.

Source/WebCore:

This patch implements WHLSL arrays. The main implementation detail is that
arrays get compiled to use Metal's array type. To make everything work, this
patch also fixes a few bugs:

  • The checker now allows "operator.length" to be called on arrays. Prior to

this patch, it was just allowed on array references.

  • The preserve variable lifetimes pass now looks at MakeArrayReference nodes.

Prior to this patch, it just looked at MakePointerExpression.

  • We were producing the wrong type for ander arguments for indexed accesses

on array types. We were saying the argument that was produced was a reference
to an array instead of an array reference to the element type.

  • The trie we compose for the reverse type hierarchy was inserting elements

into the wrong "children" vector. We were always inserting things into the
top level vector. This is wrong when we have a nesting of types > 1.

I also found a bug with having arrays of pointers when writing this patch.
Work on this will take place in a follow up: https://bugs.webkit.org/show_bug.cgi?id=199197

Tests: webgpu/whlsl-huge-array.html

webgpu/whlsl-make-array-reference.html
webgpu/whlsl-simple-arrays.html
webgpu/whlsl-two-dimensional-array.html

  • Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:

(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):

  • Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:

(WebCore::WHLSL::Metal::writeNativeFunction):

  • Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:

(WebCore::WHLSL::Metal::TypeNamer::insert):
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):

  • Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.h:
  • Modules/webgpu/WHLSL/WHLSLChecker.cpp:

(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::Checker::visit):

  • Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:

(WebCore::WHLSL::EscapedVariableCollector::escapeVariableUse):

  • Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:

(WebCore::WHLSL::wrapAnderCallArgument):
(WebCore::WHLSL::anderCallArgument):

  • Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:

LayoutTests:

  • webgpu/whlsl-huge-array-expected.txt: Added.
  • webgpu/whlsl-huge-array.html: Added.
  • webgpu/whlsl-make-array-reference-expected.txt: Added.
  • webgpu/whlsl-make-array-reference.html: Added.
  • webgpu/whlsl-simple-arrays-expected.txt: Added.
  • webgpu/whlsl-simple-arrays.html: Added.
  • webgpu/whlsl-two-dimensional-array-expected.txt: Added.
  • webgpu/whlsl-two-dimensional-array.html: Added.
1:14 AM Changeset in webkit [246874] by Fujii Hironori
  • 10 edits in trunk

[CMake] Bump cmake_minimum_required version to 3.10
https://bugs.webkit.org/show_bug.cgi?id=199181

Reviewed by Don Olmstead.

.:

  • CMakeLists.txt:

Source/JavaScriptCore:

  • CMakeLists.txt:

Source/WebCore:

No new tests because there is no behavior change.

  • CMakeLists.txt:

Source/WebKitLegacy:

  • CMakeLists.txt:

Source/WTF:

  • CMakeLists.txt:
12:11 AM Changeset in webkit [246873] by Konstantin Tokarev
  • 6 edits in trunk

[cmake] Switch to built-in handling of C++ standard instead of hardcoding -std=c++17
https://bugs.webkit.org/show_bug.cgi?id=199108

Reviewed by Don Olmstead.

Rationale:

  1. It provides an abstraction over exact flags of particular compilers - we just specify required version of C++ standard
  2. External libraries (like Qt used in WPEQt) may require particular C++ standard or even particular C++ features to be availabe (e.g. Qt requires INTERFACE_COMPILE_FEATURES cxx_decltype, which causes cmake to add -std=gnu++11 unless proper CXX_STANDARD is defined)

.:

  • Source/cmake/OptionsCommon.cmake:
  • Source/cmake/OptionsMSVC.cmake:
  • Source/cmake/WebKitCompilerFlags.cmake:

Source/WebKit:

  • PlatformWPE.cmake: Use project-level default for CXX_STANDARD

property.

Jun 26, 2019:

11:33 PM Changeset in webkit [246872] by jiewen_tan@apple.com
  • 9 edits in trunk

SubFrameSOAuthorizationSession should preserve the referrer header when fall back to web path
https://bugs.webkit.org/show_bug.cgi?id=199232
<rdar://problem/51718328>

Reviewed by Youenn Fablet.

Source/WebKit:

The fall back to web path mechanism in SubFrameSOAuthorizationSession doesn't actually resume
the previous navigation. Instead it starts a new one. The current implementation doesn't carry
any information from the previous navigation. It is problematic when it comes to http referrer
as the server might use that to determine what kind of responses to send back. Therefore, we
add that information now.

To accomplish the above, the patch teaches WebFrameProxy::loadURL to carry referrer information
when it is available. Then SubFrameSOAuthorizationSession can reuses the referrer from the
original request.

  • UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.mm:

(WebKit::SubFrameSOAuthorizationSession::fallBackToWebPathInternal):

  • UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::loadURL):

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

(WebKit::WebPage::loadURLInFrame):

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

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(TestWebKitAPI::TEST):
Add a test that utilizes TCPServer as local files always omit referrer.

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

Added a tag for Safari Technology Preview release 86.

9:47 PM Changeset in webkit [246870] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

testRunner.setAlwaysAcceptCookies should wait for cookie accept policy to be set
https://bugs.webkit.org/show_bug.cgi?id=199230
<rdar://problem/52217933>

Unreviewed build fix for WinCairo WK2 since r246856.

  • PlatformWin.cmake: Added WKMessageListener.h to WebKit_PUBLIC_FRAMEWORK_HEADERS.
9:13 PM Changeset in webkit [246869] by Simon Fraser
  • 13 edits
    7 adds in trunk

[Async overflow scrolling] Fix missing or misplaced content inside overflow:scroll
https://bugs.webkit.org/show_bug.cgi?id=199253
Source/WebCore:

rdar://problem/51855156, rdar://problem/51934514

Reviewed by Zalan Bujtas.

This patch fixes a couple of related issues triggered by failing to composite layers inside non-stacking-context
overflow scroll.

First, we relied on overlap testing to composite position:relative layers inside overflow:scroll, but this only
worked when they came later in z-order, so didn't work for layers with negative z-index.
RenderLayerCompositor::requiresCompositingForIndirectReason() was intended to trigger compositing in such cases,
but it only did so for position:absolute inside stacking-context scroller, because
isNonScrolledLayerInsideScrolledCompositedAncestor() tested ancestorMovedByScroller && !layerMovedByScroller.

I fixed this by sharing code between the three places that ask whether compositing crosses a containing-block
boundary to call a single function, RenderLayerCompositor::layerScrollBehahaviorRelativeToCompositedAncestor(),
that returns a ScrollPositioningBehavior. We now do compositing for both "moves" and "stationary" behaviors (but
not "none"), ensuring that position:relative inside non-stacking scroller is always composited.

However, this would trigger compositing on layers that should be using backing sharing; if they were outside the
visible part of the scroller, the overlap code would not trigger, but the
"IndirectCompositingReason::OverflowScrollPositioning" code would. This is undesirable; any layer that can use
backing sharing should, because that's fewer composited layers, so smaller layer trees and less backing store.
To fix this, I moved the backing-sharing check before the overlap check in
RenderLayerCompositor::computeCompositingRequirements().

The "layer.setHasCompositingDescendant(currentState.subtreeIsCompositing)" line was in the wrong place,
triggering assertions on some content; "subtreeIsCompositing" only refers to child layers, so this bit needs to
be set right after we've traversed the z-order lists.

Tests: compositing/scrolling/async-overflow-scrolling/hidden-relative-layer-content-in-scroller.html

compositing/scrolling/async-overflow-scrolling/layer-for-negative-z-in-scroller.html
compositing/scrolling/async-overflow-scrolling/negative-z-in-scroller.html

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
(WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason const):
(WebCore::isScrolledByOverflowScrollLayer):
(WebCore::enclosingCompositedScrollingLayer):
(WebCore::RenderLayerCompositor::layerScrollBehahaviorRelativeToCompositedAncestor):
(WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):
(WebCore::isNonScrolledLayerInsideScrolledCompositedAncestor): Deleted.
(WebCore::RenderLayerCompositor::layerContainingBlockCrossesCoordinatedScrollingBoundary): Deleted.

  • rendering/RenderLayerCompositor.h:

LayoutTests:

Reviewed by Zalan Bujtas.

  • compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
  • compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt:
  • compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt:
  • compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
  • compositing/scrolling/async-overflow-scrolling/hidden-relative-layer-content-in-scroller-expected.html: Added.
  • compositing/scrolling/async-overflow-scrolling/hidden-relative-layer-content-in-scroller.html: Added.
  • compositing/scrolling/async-overflow-scrolling/layer-for-negative-z-in-scroller-expected.txt: Added.
  • compositing/scrolling/async-overflow-scrolling/layer-for-negative-z-in-scroller.html: Added.
  • compositing/scrolling/async-overflow-scrolling/negative-z-in-scroller-expected.html: Added.
  • compositing/scrolling/async-overflow-scrolling/negative-z-in-scroller.html: Added.
  • compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow-expected.txt:
  • platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt:
  • platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt:
  • platform/ios-wk2/compositing/scrolling/async-overflow-scrolling/layer-for-negative-z-in-scroller-expected.txt: Added.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow-expected.txt:
  • platform/ios/compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
7:55 PM Changeset in webkit [246868] by rniwa@webkit.org
  • 3 edits
    2 adds in trunk

ReplacementFragment should not have script observable side effects
https://bugs.webkit.org/show_bug.cgi?id=199147

Reviewed by Wenson Hsieh.

Source/WebCore:

Fixed the bug that ReplacementFragment has script observable side effects.

Use a brand new document for sanitization where the script is disabled for test rendering,
and remove style and script elements as well as event handlers before the test rendering
and the actual pasting.

Test: editing/pasteboard/paste-contents-with-side-effects.html

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplacementFragment::document): Deleted.
(WebCore::ReplacementFragment::ReplacementFragment): Use createPageForSanitizingWebContent
to create our own document for test rendering. We need to copy over the computed style
from the root editable element (editing host) to respect whitespace treatment, etc...
(WebCore::ReplacementFragment::removeContentsWithSideEffects): Moved from removeHeadContents.
Now removes event handlers and JavaScript URLs.
(WebCore::ReplacementFragment::insertFragmentForTestRendering): Renamed variable names.
(WebCore::ReplaceSelectionCommand::willApplyCommand): Create the plain text and HTML markup
for beforeinput and input events before ReplacementFragment removes contents with side effects.
(WebCore::ReplaceSelectionCommand::ensureReplacementFragment): The removal of head elements
is now done in ReplacementFragment's constructor.

LayoutTests:

Added regression tests.

  • editing/pasteboard/paste-contents-with-side-effects-expected.txt: Added.
  • editing/pasteboard/paste-contents-with-side-effects.html: Added.
6:28 PM Changeset in webkit [246867] by dino@apple.com
  • 2 edits in trunk/Source/WebKit

Add type to UIImage symbol mapping for _WKElementAction
https://bugs.webkit.org/show_bug.cgi?id=199255

Reviewed by Sam Weinig.

Moving some code in from WebKitAdditions now
that the API is public.

  • UIProcess/API/Cocoa/_WKElementAction.mm:

(+[_WKElementAction imageForElementActionType:]):
(elementActionTypeToUIActionIdentifier):
(uiActionIdentifierToElementActionType):

6:08 PM Changeset in webkit [246866] by Joseph Pecoraro
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Update legacy backend commands after enum name change
https://bugs.webkit.org/show_bug.cgi?id=199250

Reviewed by Devin Rousso.

  • UserInterface/Protocol/Legacy/11.3/InspectorBackendCommands.js:
  • UserInterface/Protocol/Legacy/12.0/InspectorBackendCommands.js:
  • UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js:
6:04 PM Changeset in webkit [246865] by dino@apple.com
  • 4 edits in trunk/Source/WebKit

Expose UIAction identifiers for _WKElementActions
https://bugs.webkit.org/show_bug.cgi?id=199246
<rdar://problem/52218950>

Reviewed by Tim Horton.

In order for clients to create a contextual menu, they are given
a set of suggested UIActions, created from _WKElementActions.
By associating identifiers (strings) with the UIActions, clients
can inspect the suggestions and make a decision on whether or
not to include them in the final menu.

  • UIProcess/API/Cocoa/_WKElementAction.h: Typedef UIActionIdentifier,

add a method to create a UIAction from an _WKElementAction, and a
helper to map between identifiers and types.

  • UIProcess/API/Cocoa/_WKElementAction.mm:

(elementActionTypeToUIActionIdentifier): Helper to convert between the two types.
(uiActionIdentifierToElementActionType): The inverse of above.
(+[_WKElementAction elementActionTypeForUIActionIdentifier:]): A client given
a UIAction object can use this helper method to see what _WKElementActionType it
corresponds to.
(-[_WKElementAction uiActionForElementInfo:]): Used by WKContentViewInteraction to
create a UIAction from this _WKElementAction.

  • UIProcess/ios/WKContentViewInteraction.mm:

(uiActionForLegacyPreviewAction): Renamed to make it clear this is a legacy approach.
(menuFromLegacyPreviewOrDefaultActions): Split these functions to separate the legacy
and non-legacy approach.
(-[WKContentView assignLegacyDataForContextMenuInteraction]):
(-[WKContentView continueContextMenuInteraction:]):
(uiActionForPreviewAction): Deleted.
(menuFromPreviewOrDefaults): Deleted.

5:54 PM Changeset in webkit [246864] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Add configuration and architecture for WPE and GTK builders
https://bugs.webkit.org/show_bug.cgi?id=199249

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/config.json:
5:39 PM Changeset in webkit [246863] by aestes@apple.com
  • 3 edits
    3 adds in trunk

[Payment Request] Set state to Closed when show() is called during an active session
https://bugs.webkit.org/show_bug.cgi?id=199239

Reviewed by Alex Christensen.

Source/WebCore:

According to step 7 of https://w3c.github.io/payment-request/#show-method (as of 26 June
2019), when another payment request is showing, calling show() should set the state?
internal slot to Closed in addition to rejecting the show promise with an AbortError. WebKit
was only doing the latter. Let's do both.

Test: http/tests/paymentrequest/payment-is-showing.https.html

  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::PaymentRequest::show):

LayoutTests:

Copied from web-platform-tests/payment-request/payment-is-showing.https.html and modified to
use UIHelper instead of test_driver.bless.

  • http/tests/paymentrequest/payment-is-showing.https-expected.txt: Added.
  • http/tests/paymentrequest/payment-is-showing.https.html: Added.
  • http/tests/paymentrequest/resources/blank.html: Added.
5:36 PM Changeset in webkit [246862] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] Add check for duplicate workers in config.json
https://bugs.webkit.org/show_bug.cgi?id=199240

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/loadConfig.py:

(checkWorkersAndBuildersForConsistency._find_worker_with_name): Check for duplicate worker entry.

  • BuildSlaveSupport/ews-build/loadConfig_unittest.py:

(TestcheckWorkersAndBuildersForConsistency.test_duplicate_worker): Added unit-test.

5:34 PM Changeset in webkit [246861] by Ross Kirsling
  • 3 edits in trunk/Tools

[Win] MiniBrowser should make better font choices
https://bugs.webkit.org/show_bug.cgi?id=199244

Reviewed by Brent Fulgham.

  • MiniBrowser/win/MainWindow.cpp:

(MainWindow::updateDeviceScaleFactor):

  • MiniBrowser/win/MiniBrowserLib.rc:
5:20 PM Changeset in webkit [246860] by Basuke Suzuki
  • 5 edits in trunk/Source/JavaScriptCore

[RemoteInspector] Add address argument to listen for RemoteInspectorServer Socket implementation.
https://bugs.webkit.org/show_bug.cgi?id=199035

Reviewed by Ross Kirsling.

Added new argument address to start listening.

  • inspector/remote/socket/RemoteInspectorServer.cpp:

(Inspector::RemoteInspectorServer::start):

  • inspector/remote/socket/RemoteInspectorServer.h:
  • inspector/remote/socket/posix/RemoteInspectorSocketPOSIX.cpp:

(Inspector::Socket::listen):

  • inspector/remote/socket/win/RemoteInspectorSocketWin.cpp:

(Inspector::Socket::listen):

5:18 PM Changeset in webkit [246859] by wenson_hsieh@apple.com
  • 2 edits in trunk/Source/WebKit

[iPadOS] Fix another crash in -[UIPreviewTarget initWithContainer:center:transform:] when generating a fallback targeted preview
https://bugs.webkit.org/show_bug.cgi?id=199243
<rdar://problem/51554509>

Reviewed by Tim Horton.

Additionally make createFallbackTargetedPreview robust in the case where the content view is unparented, and
rename _ensureTargetedPreview to _createTargetedPreviewIfPossible, to reflect the fact that it may now return
nil.

  • UIProcess/ios/WKContentViewInteraction.mm:

(createTargetedPreview):
(createFallbackTargetedPreview):
(-[WKContentView _createTargetedPreviewIfPossible]):
(-[WKContentView contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]):
(-[WKContentView contextMenuInteraction:previewForDismissingMenuWithConfiguration:]):
(-[WKContentView _ensureTargetedPreview]): Deleted.

5:17 PM Changeset in webkit [246858] by Alan Coon
  • 1 copy in tags/Safari-608.1.31.0.3

Tag Safari-608.1.31.0.3.

5:08 PM Changeset in webkit [246857] by Konstantin Tokarev
  • 2 edits in trunk/Source/WTF

Remove unneeded #include <wtf/glib/GRefPtr.h>
https://bugs.webkit.org/show_bug.cgi?id=199228

Reviewed by Michael Catanzaro.

  • wtf/MemoryPressureHandler.h:
4:30 PM Changeset in webkit [246856] by commit-queue@webkit.org
  • 23 edits
    3 copies in trunk

testRunner.setAlwaysAcceptCookies should wait for cookie accept policy to be set
https://bugs.webkit.org/show_bug.cgi?id=199230
<rdar://51757107>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-06-26
Reviewed by Andy Estes.

Source/WebKit:

This patch adds an optional callback to WKCookieManagerSetHTTPCookieAcceptPolicy which is luckily only used for testing.
It also adds listener-based asynchronous versions of didReceiveSynchronousMessageFromInjectedBundle.
WebKitTestRunner uses these new abilities to wait for the cookie accept policy to be set in the network process while the web process is hung.
This removes the race condition that was causing some flakiness in tests that use testRunner.setAlwaysAcceptCookies

  • Shared/API/APIObject.h:
  • Shared/API/c/WKBase.h:
  • Sources.txt:
  • UIProcess/API/APIInjectedBundleClient.h:

(API::InjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):

  • UIProcess/API/APIMessageListener.h: Copied from Source/WebKit/UIProcess/API/APIInjectedBundleClient.h.

(API::MessageListener::create):
(API::MessageListener::sendReply):
(API::MessageListener::MessageListener):

  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKContextInjectedBundleClient.h:
  • UIProcess/API/C/WKCookieManager.cpp:

(WKCookieManagerSetHTTPCookieAcceptPolicy):

  • UIProcess/API/C/WKCookieManager.h:
  • UIProcess/API/C/WKMessageListener.cpp: Copied from Source/WebKit/UIProcess/API/APIInjectedBundleClient.h.

(WKMessageListenerGetTypeID):
(WKMessageListenerSendReply):

  • UIProcess/API/C/WKMessageListener.h: Copied from Source/WebKit/UIProcess/API/APIInjectedBundleClient.h.
  • UIProcess/API/C/WKPageInjectedBundleClient.h:
  • UIProcess/WebContextInjectedBundleClient.cpp:

(WebKit::WebContextInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):

  • UIProcess/WebContextInjectedBundleClient.h:
  • UIProcess/WebPageInjectedBundleClient.cpp:

(WebKit::WebPageInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):

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

(WebKit::WebPageProxy::handleSynchronousMessage):

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::injectedBundleClient): Deleted.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::handleSynchronousMessage):

  • WebKit.xcodeproj/project.pbxproj:

Tools:

  • TestWebKitAPI/Tests/WebKit/CookieManager.cpp:

(TestWebKitAPI::didGetTestHTTPCookieAcceptPolicy):
(TestWebKitAPI::didGetUserHTTPCookieAcceptPolicy):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::generatePageConfiguration):
(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::didReceiveSynchronousMessageFromInjectedBundleWithListener):
(WTR::TestController::didReceiveSynchronousPageMessageFromInjectedBundleWithListener):
(WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
(WTR::TestController::didReceiveSynchronousPageMessageFromInjectedBundle): Deleted.

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

(WTR::TestInvocation::invoke):
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

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

Web Inspector: REGRESSION: Elements: the forced pseudo-class indicator isn't visible when hovering
https://bugs.webkit.org/show_bug.cgi?id=199166

Reviewed by Matt Baker.

Make the pseudo-class indicator into its own element instead of being a ::before.

  • UserInterface/Views/DOMTreeElement.js:

(WI.DOMTreeElement):
(WI.DOMTreeElement.prototype.updateSelectionArea):
(WI.DOMTreeElement.prototype.updateTitle):
(WI.DOMTreeElement.prototype._updatePseudoClassIndicator): Added.
(WI.DOMTreeElement.prototype.get pseudoClassesEnabled): Deleted.
(WI.DOMTreeElement.prototype._nodePseudoClassesDidChange): Deleted.

  • UserInterface/Views/DOMTreeOutline.css:

(.tree-outline.dom):
(.tree-outline.dom li .pseudo-class-indicator): Added.
(body[dir=ltr] .tree-outline.dom li .pseudo-class-indicator): Added.
(body[dir=rtl] .tree-outline.dom li .pseudo-class-indicator): Added.
(.tree-outline.dom:focus li.selected .pseudo-class-indicator): Added.
(.tree-outline.dom li.pseudo-class-enabled > .selection-area::before): Deleted.
(body[dir=ltr] .tree-outline.dom li.pseudo-class-enabled > .selection-area::before): Deleted.
(body[dir=rtl] .tree-outline.dom li.pseudo-class-enabled > .selection-area::before): Deleted.
(.tree-outline.dom:focus li.selected.pseudo-class-enabled > .selection-area::before): Deleted.

  • UserInterface/Views/FormattedValue.css:

(.formatted-node > .tree-outline.dom):
Adjust the indent of any DOMTreeOutline so there's more room for the pseudo-class
indicator, such as in the Console.

4:20 PM Changeset in webkit [246854] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Layout Test http/tests/performance/performance-resource-timing-resourcetimingbufferfull-shrinking-buffer-crash.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=199242

Unreviewed Test Gardening.

Patch by Russell Epstein <russell_e@apple.com> on 2019-06-26

  • platform/mac-wk1/TestExpectations:
4:19 PM Changeset in webkit [246853] by Alan Coon
  • 7 edits in branches/safari-608.1.31.0-branch

Revert r246834. rdar://problem/51554509

4:10 PM Changeset in webkit [246852] by wenson_hsieh@apple.com
  • 3 edits
    2 adds in trunk

[iPadOS] eddm.usps.com scrolls horizontally due to explicit width set in viewport meta tag
https://bugs.webkit.org/show_bug.cgi?id=199219
<rdar://problem/50425765>

Reviewed by Tim Horton.

Source/WebKit:

Currently, the heuristic to determine whether the page should be shrunk to fit the content width after loading
works by checking whether the page's content is wider than the layout width we've provided for the page.
However, in the case where an explicit width larger than the true view width is specified by the page's meta
viewport, we'll end up believing that the page's content is not wider than the layout width, which is dictated
by the fixed meta viewport width. Instead, we can shrink the page down in this scenario by comparing the content
width against the scaled size of the view when computing the amount of horizontal overflow.

Test: fast/viewport/ios/shrink-to-fit-content-large-constant-width.html

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::immediatelyShrinkToFitContent):

LayoutTests:

Add a new test to verify that if the meta viewport tag specifies a wide fixed width value, we will still try to
shrink the page down to fit within the viewport.

  • fast/viewport/ios/shrink-to-fit-content-large-constant-width-expected.txt: Added.
  • fast/viewport/ios/shrink-to-fit-content-large-constant-width.html: Added.
4:07 PM Changeset in webkit [246851] by keith_miller@apple.com
  • 7 edits in trunk

speciesConstruct needs to throw if the result is a DataView
https://bugs.webkit.org/show_bug.cgi?id=199231

Reviewed by Mark Lam.

JSTests:

  • stress/typedarray-filter.js:

(subclasses.forEach):

  • stress/typedarray-map.js:

(subclasses.forEach):

  • stress/typedarray-slice.js:

(typedArrays.forEach):

  • stress/typedarray-subarray.js:

(subclasses.forEach):

Source/JavaScriptCore:

Previously, we only checked that the result was a
JSArrayBufferView, which can include DataViews. This is incorrect
as the result should be only be a TypedArray.

  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h:

(JSC::speciesConstruct):

3:25 PM Changeset in webkit [246850] by Joseph Pecoraro
  • 20 edits in trunk

Web Inspector: Implement console.countReset
https://bugs.webkit.org/show_bug.cgi?id=199200

Reviewed by Devin Rousso.

Source/JavaScriptCore:

  • inspector/JSGlobalObjectConsoleClient.cpp:

(Inspector::JSGlobalObjectConsoleClient::countReset):

  • inspector/JSGlobalObjectConsoleClient.h:
  • inspector/agents/InspectorConsoleAgent.cpp:

(Inspector::InspectorConsoleAgent::getCounterLabel):
(Inspector::InspectorConsoleAgent::count):
(Inspector::InspectorConsoleAgent::countReset):

  • inspector/agents/InspectorConsoleAgent.h:
  • runtime/ConsoleClient.h:
  • runtime/ConsoleObject.cpp:

(JSC::ConsoleObject::finishCreation):
(JSC::consoleProtoFuncCountReset):

Source/WebCore:

Updated existing tests.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::consoleCountImpl):
(WebCore::InspectorInstrumentation::consoleCountResetImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::consoleCountReset):

  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::countReset):

  • page/PageConsoleClient.h:
  • workers/WorkerConsoleClient.cpp:

(WebCore::WorkerConsoleClient::countReset):

  • workers/WorkerConsoleClient.h:
  • worklets/WorkletConsoleClient.cpp:

(WebCore::WorkletConsoleClient::countReset):

  • worklets/WorkletConsoleClient.h:

LayoutTests:

  • inspector/console/console-count-expected.txt:
  • inspector/console/console-count.html:
  • js/console-expected.txt:
3:11 PM Changeset in webkit [246849] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

[Pointer Events] Respect pointer capture when dispatching mouse boundary events and updating :hover
https://bugs.webkit.org/show_bug.cgi?id=198999
<rdar://problem/51979477>

Reviewed by Dean Jackson.

Make sure we don't return early prior to setting the flag that prevents re-entrancy, or else we would never
enter this function again. No new tests, this was caught because Pointer Events WPT tests on iOS tests regressed.

  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::processPendingPointerCapture):

3:11 PM Changeset in webkit [246848] by Ross Kirsling
  • 2 edits in trunk/Tools

[Win][MiniBrowser] Remove obsolete code after r246814.
https://bugs.webkit.org/show_bug.cgi?id=199233

Reviewed by Fujii Hironori.

  • MiniBrowser/win/MiniBrowserWebHost.cpp:

(MiniBrowserWebHost::didFinishLoadForFrame):
(SimpleEventListener::SimpleEventListener): Deleted.
(SimpleEventListener::handleEvent): Deleted.

2:59 PM Changeset in webkit [246847] by Dewei Zhu
  • 3 edits in trunk/Websites/perf.webkit.org

commit api should not return 'AmbiguousRevisionPrefix' if there is an exact revision match
https://bugs.webkit.org/show_bug.cgi?id=199227

Reviewed by Ryosuke Niwa.

When prefix match is specified, api should check whether there is an exact match when multiple commits
match the prefix.

  • public/include/commit-log-fetcher.php: Added the logic to check if there is an exact match when multiple matches are found.
  • server-tests/api-commits-tests.js: Added an unit test.
12:35 PM Changeset in webkit [246846] by mmaxfield@apple.com
  • 151 edits
    1 add
    7 deletes in trunk

REGRESSION: ( r246394 ) webgpu/whlsl-buffer-fragment.html and webgpu/whlsl-buffer-vertex.html are failing
https://bugs.webkit.org/show_bug.cgi?id=199012

Reviewed by Saam Barati.

Source/WebCore:

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

(WebCore::isAcceptableDevice):
(WebCore::GPUDevice::tryCreate):

Source/WTF:

  • wtf/Platform.h:

LayoutTests:

Make the tests still pass if the machine doesn't support WebGPU.

  • webgpu/adapter-options-expected.txt: Removed.
  • webgpu/adapter-options.html: Removed.
  • webgpu/bind-groups.html:
  • webgpu/blend-color-triangle-strip-expected.html:
  • webgpu/blend-color-triangle-strip.html:
  • webgpu/blend-triangle-strip-expected.html:
  • webgpu/blend-triangle-strip.html:
  • webgpu/blit-commands-expected.html:
  • webgpu/blit-commands.html:
  • webgpu/buffer-command-buffer-races-expected.html:
  • webgpu/buffer-command-buffer-races.html:
  • webgpu/color-write-mask-triangle-strip-expected.html:
  • webgpu/color-write-mask-triangle-strip.html:
  • webgpu/command-buffers.html:
  • webgpu/depth-enabled-triangle-strip-expected.html:
  • webgpu/depth-enabled-triangle-strip.html:
  • webgpu/draw-indexed-triangles-expected.html:
  • webgpu/draw-indexed-triangles.html:
  • webgpu/js/create-worker-device.js: Removed.
  • webgpu/js/webgpu-functions.js:

(drawWhiteSquareOnBlueBackgroundInSoftware):
(drawGreenSquareInSoftware):
(drawGreenAndBlueCheckerboardInSoftware):
(async.mapWriteDataToBuffer):

  • webgpu/map-read-buffers.html:
  • webgpu/map-write-buffers.html:
  • webgpu/pipeline-layouts.html:
  • webgpu/propertyresolver/ander-abstract-lvalue-expected.html:
  • webgpu/propertyresolver/ander-abstract-lvalue.html:
  • webgpu/propertyresolver/ander-expected.html:
  • webgpu/propertyresolver/ander-lvalue-3-levels-expected.html:
  • webgpu/propertyresolver/ander-lvalue-3-levels.html:
  • webgpu/propertyresolver/ander-lvalue-expected.html:
  • webgpu/propertyresolver/ander-lvalue.html:
  • webgpu/propertyresolver/ander.html:
  • webgpu/propertyresolver/getter-expected.html:
  • webgpu/propertyresolver/getter.html:
  • webgpu/propertyresolver/indexer-ander-abstract-lvalue-expected.html:
  • webgpu/propertyresolver/indexer-ander-abstract-lvalue.html:
  • webgpu/propertyresolver/indexer-ander-expected.html:
  • webgpu/propertyresolver/indexer-ander-lvalue-3-levels-expected.html:
  • webgpu/propertyresolver/indexer-ander-lvalue-3-levels.html:
  • webgpu/propertyresolver/indexer-ander-lvalue-expected.html:
  • webgpu/propertyresolver/indexer-ander-lvalue.html:
  • webgpu/propertyresolver/indexer-ander.html:
  • webgpu/propertyresolver/indexer-getter-expected.html:
  • webgpu/propertyresolver/indexer-getter.html:
  • webgpu/propertyresolver/indexer-setter-abstract-lvalue-3-levels-expected.html:
  • webgpu/propertyresolver/indexer-setter-abstract-lvalue-3-levels.html:
  • webgpu/propertyresolver/indexer-setter-abstract-lvalue-expected.html:
  • webgpu/propertyresolver/indexer-setter-abstract-lvalue.html:
  • webgpu/propertyresolver/indexer-setter-expected.html:
  • webgpu/propertyresolver/indexer-setter-lvalue-expected.html:
  • webgpu/propertyresolver/indexer-setter-lvalue.html:
  • webgpu/propertyresolver/indexer-setter.html:
  • webgpu/propertyresolver/setter-abstract-lvalue-3-levels-expected.html:
  • webgpu/propertyresolver/setter-abstract-lvalue-3-levels.html:
  • webgpu/propertyresolver/setter-abstract-lvalue-expected.html:
  • webgpu/propertyresolver/setter-abstract-lvalue.html:
  • webgpu/propertyresolver/setter-lvalue-expected.html:
  • webgpu/propertyresolver/setter-lvalue.html:
  • webgpu/queue-creation.html:
  • webgpu/render-command-encoding.html:
  • webgpu/render-pipelines.html:
  • webgpu/shader-modules.html:
  • webgpu/simple-triangle-strip-expected.html:
  • webgpu/simple-triangle-strip.html:
  • webgpu/texture-triangle-strip-expected.html:
  • webgpu/texture-triangle-strip.html:
  • webgpu/textures-textureviews.html:
  • webgpu/vertex-buffer-triangle-strip-expected.html:
  • webgpu/vertex-buffer-triangle-strip.html:
  • webgpu/viewport-scissor-rect-triangle-strip-expected.html:
  • webgpu/viewport-scissor-rect-triangle-strip.html:
  • webgpu/webgpu-enabled-expected.txt: Removed.
  • webgpu/webgpu-enabled-in-worker-expected.txt: Removed.
  • webgpu/webgpu-enabled-in-worker.html: Removed.
  • webgpu/webgpu-enabled.html: Removed.
  • webgpu/whlsl-arbitrary-vertex-attribute-locations-expected.html:
  • webgpu/whlsl-arbitrary-vertex-attribute-locations.html:
  • webgpu/whlsl-buffer-fragment-expected.html:
  • webgpu/whlsl-buffer-fragment.html:
  • webgpu/whlsl-buffer-length-expected.txt:
  • webgpu/whlsl-buffer-length.html:
  • webgpu/whlsl-buffer-vertex-expected.html:
  • webgpu/whlsl-buffer-vertex.html:
  • webgpu/whlsl-checker-should-set-type-of-read-modify-write-variables-expected.txt:
  • webgpu/whlsl-checker-should-set-type-of-read-modify-write-variables.html:
  • webgpu/whlsl-compute-expected.txt:
  • webgpu/whlsl-compute.html:
  • webgpu/whlsl-dereference-pointer-should-type-check-expected.html:
  • webgpu/whlsl-dereference-pointer-should-type-check.html:
  • webgpu/whlsl-do-while-loop-break-expected.html:
  • webgpu/whlsl-do-while-loop-break.html:
  • webgpu/whlsl-do-while-loop-continue-expected.html:
  • webgpu/whlsl-do-while-loop-continue.html:
  • webgpu/whlsl-do-while-loop-expected.html:
  • webgpu/whlsl-do-while-loop.html:
  • webgpu/whlsl-dont-crash-parsing-enum-expected.html:
  • webgpu/whlsl-dont-crash-parsing-enum.html:
  • webgpu/whlsl-dot-expressions-expected.html:
  • webgpu/whlsl-dot-expressions.html:
  • webgpu/whlsl-duplicate-types-should-not-produce-duplicate-ctors-expected.txt:
  • webgpu/whlsl-duplicate-types-should-not-produce-duplicate-ctors.html:
  • webgpu/whlsl-ensure-proper-variable-lifetime-2-expected.html:
  • webgpu/whlsl-ensure-proper-variable-lifetime-2.html:
  • webgpu/whlsl-ensure-proper-variable-lifetime-3-expected.html:
  • webgpu/whlsl-ensure-proper-variable-lifetime-3.html:
  • webgpu/whlsl-ensure-proper-variable-lifetime-expected.html:
  • webgpu/whlsl-ensure-proper-variable-lifetime.html:
  • webgpu/whlsl-expected.html:
  • webgpu/whlsl-loops-break-expected.html:
  • webgpu/whlsl-loops-break.html:
  • webgpu/whlsl-loops-continue-expected.html:
  • webgpu/whlsl-loops-continue.html:
  • webgpu/whlsl-loops-expected.html:
  • webgpu/whlsl-loops.html:
  • webgpu/whlsl-matrix-2-expected.txt:
  • webgpu/whlsl-matrix-2.html:
  • webgpu/whlsl-matrix-expected.txt:
  • webgpu/whlsl-matrix.html:
  • webgpu/whlsl-nested-dot-expression-rvalue-expected.html:
  • webgpu/whlsl-nested-dot-expression-rvalue.html:
  • webgpu/whlsl-nested-loop-expected.html:
  • webgpu/whlsl-nested-loop.html:
  • webgpu/whlsl-null-dereference-expected.txt:
  • webgpu/whlsl-null-dereference.html:
  • webgpu/whlsl-oob-access-expected.txt:
  • webgpu/whlsl-oob-access.html:
  • webgpu/whlsl-read-modify-write-high-zombies-expected.txt:
  • webgpu/whlsl-read-modify-write-high-zombies.html:
  • webgpu/whlsl-return-local-variable-expected.html:
  • webgpu/whlsl-return-local-variable.html:
  • webgpu/whlsl-store-to-property-updates-properly-expected.html:
  • webgpu/whlsl-store-to-property-updates-properly.html:
  • webgpu/whlsl-textures-getdimensions-expected.txt:
  • webgpu/whlsl-textures-getdimensions.html:
  • webgpu/whlsl-textures-load-expected.html:
  • webgpu/whlsl-textures-load.html:
  • webgpu/whlsl-textures-sample-expected.html:
  • webgpu/whlsl-textures-sample.html:
  • webgpu/whlsl-while-loop-break-expected.html:
  • webgpu/whlsl-while-loop-break.html:
  • webgpu/whlsl-while-loop-continue-expected.html:
  • webgpu/whlsl-while-loop-continue.html:
  • webgpu/whlsl-zero-initialize-values-2-expected.html:
  • webgpu/whlsl-zero-initialize-values-2.html:
  • webgpu/whlsl-zero-initialize-values-expected.html:
  • webgpu/whlsl-zero-initialize-values.html:
  • webgpu/whlsl.html:
12:12 PM Changeset in webkit [246845] by Simon Fraser
  • 4 edits
    2 adds in trunk

Incorrect clippping with overflow:scroll inside oveflow:hidden with border-radius
https://bugs.webkit.org/show_bug.cgi?id=199135
rdar://problem/51882383

Reviewed by Zalan Bujtas.
Source/WebCore:

In some cases the geometry of the shape mask layer added to m_childContainmentLayer, for
border-radius, was incorrect. GraphicsLayerCA::updateClippingStrategy() treated
the rounded rect as if it were in renderer coordinates, but to match the other geometry
on GraphicsLayer, it should in GraphicsLayer coordinates, so we need to offset by
clipLayer->offsetFromRenderer().

In addition, RenderLayerBacking::updateChildClippingStrategy() is called from
the updateConfiguration(), which is before we've set offsetFromRenderer() on the clipLayer.
This first call is really to find out whether the platform supports this rounded rect
as a shape mask.

So we need to call setMasksToBoundsRect() a second time in RenderLayerBacking::updateGeometry()
after clipLayers's offsetFromRenderer() has been computed.

Test: compositing/scrolling/async-overflow-scrolling/border-radius-on-scroll-container.html

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::updateClippingStrategy):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
(WebCore::RenderLayerBacking::updateDescendantClippingLayer):
(WebCore::RenderLayerBacking::updateChildClippingStrategy):

LayoutTests:

  • compositing/scrolling/async-overflow-scrolling/border-radius-on-scroll-container-expected.html: Added.
  • compositing/scrolling/async-overflow-scrolling/border-radius-on-scroll-container.html: Added.
11:36 AM Changeset in webkit [246844] by graouts@webkit.org
  • 15 edits in trunk

[Pointer Events] Respect pointer capture when dispatching mouse boundary events and updating :hover
https://bugs.webkit.org/show_bug.cgi?id=198999
<rdar://problem/51979477>

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark the progressions in 3 WPT tests.

  • web-platform-tests/pointerevents/pointerevent_boundary_events_at_implicit_release_hoverable_pointers-expected.txt:
  • web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover-expected.txt:
  • web-platform-tests/pointerevents/pointerevent_setpointercapture_relatedtarget-expected.txt:

Source/WebCore:

Up until now, we would not account for pointer capture (see ​https://w3c.github.io/pointerevents/#pointer-capture) when dispatching
mouse boundary events (mouseover, mouseout, mouseenter, mouseleave) and their counterpart pointer events. We would also not account
for it when updating :hover styles.

Now, when pointer capture changes for an element, we call setCapturingMouseEventsElement() on the EventHandler such that the element
that would naturally hit-test is overridden by the pointer capture element when identifying which target to use for the dispatch of
boundary mouse events. Additionally, when calling Document::prepareMouseEvent(), we also use the pointer capture element to
pass down to Document::updateHoverActiveState() such that :hover styles are applied to the correct element.

  • dom/Document.cpp:

(WebCore::Document::prepareMouseEvent): When a new event is going to be dispatched, we must run the Process Pending Capture Element
steps as mandated by the Pointer Events spec. Calling this will dispatch the appropriate pointer capture change events and also
required boundary events since EventHandler::setCapturingMouseEventsElement() calls into EventHandler::updateMouseEventTargetNode().
Since this may update the capturing mouse events element, we ensure that we call updateHoverActiveState() with a flag that indicates that.
Finally, we use the capturing mouse events element instead of the hit-testing element to pass to updateHoverActiveState() to ensure
that is has :hover styles applied.
(WebCore::Document::updateHoverActiveState): Account for the new CaptureChange flag to force the invalidation of the :hover and :active
elements chain at all times when the capturing mouse events element changed.

  • dom/Document.h:
  • dom/PointerEvent.h: Update PointerEvent::createForPointerCapture() to take specific parameters rather than a single PointerEvent to

set the pointerId, isPrimary and pointerType properties of the generated event. This is required to call processPendingPointerCapture()
outside of PointerEvent dispatch logic since we now call it from Document::prepareMouseEvent() where we haven't yet generated such an
event.

  • page/EventHandler.cpp:

(WebCore::EventHandler::pointerCaptureElementDidChange): When a new pointer capture element is set, call updateMouseEventTargetNode()
to ensure that boundary events are fired to indicate the pointer capture state change.
(WebCore::EventHandler::prepareMouseEvent): Keep track of the last PlatformMouseEvent used to prepare a mouse event so that we can use
it when setCapturingMouseEventsElement() is called.

  • page/EventHandler.h:
  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::pointerCaptureElement): Since Document::prepareMouseEvent() needs to know the current pointer capture
element, add a new public method that indicates the pointer capture element if that element is contained in the provided document. We need
to provide the document since PointerCaptureController is owned by the Page and may manage several documents.
(WebCore::PointerCaptureController::dispatchEvent): Only run the Process Pending Capture Element steps when dealing with a touch or pen
event since those steps are already ran for mouse events in Document::prepareMouseEvent(). Additionally, since the element target is already
set to be the pointer capture element with the changes made to processPendingPointerCapture(), and because on iOS pointer capture is always
active, we can remove the code that would retarget the event to the pointer capture element.
(WebCore::PointerCaptureController::pointerEventWasDispatched):
(WebCore::PointerCaptureController::cancelPointer):
(WebCore::PointerCaptureController::processPendingPointerCapture): We now call into EventHandler::setCapturingMouseEventsElement() when the
capture target element changes. We must be careful to call this method prior to dispatching the "gotpointercapture" event and after dispatching
the "lostpointercapture" event so that boundary events are fired at the right time.

  • page/PointerCaptureController.h:

LayoutTests:

Update some WK1-specific expectations.

  • platform/mac-wk1/imported/w3c/web-platform-tests/pointerevents/pointerevent_boundary_events_at_implicit_release_hoverable_pointers-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/pointerevents/pointerevent_setpointercapture_relatedtarget-expected.txt:
11:36 AM Changeset in webkit [246843] by dino@apple.com
  • 1 delete in trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm.orig

Remove a file I accidentally added.

  • UIProcess/ios/WKContentViewInteraction.mm.orig: Removed.
11:34 AM Changeset in webkit [246842] by dino@apple.com
  • 2 edits
    1 add in trunk/Source

Script which adjusts include paths in ANGLE's copied headers breaks incremental builds
https://bugs.webkit.org/show_bug.cgi?id=199212

Patch by Kenneth Russell <kbr@chromium.org> on 2019-06-25
Reviewed by Darin Adler.

Maintain and test a timestamp in adjust-angle-include-paths.sh
in order to avoid touching the headers during each build.

  • adjust-angle-include-paths.sh:
11:24 AM Changeset in webkit [246841] by bshafiei@apple.com
  • 8 edits
    1 move
    1 add
    1 delete in branches/safari-608.1.31.0-branch

Cherry-pick r246781. rdar://problem/51826266

[Text autosizing] [iPadOS] Revise our heuristics to determine idempotent text autosizing candidates
https://bugs.webkit.org/show_bug.cgi?id=198763
<rdar://problem/51826266>

Reviewed by Simon Fraser.

Source/WebCore:

This patch adjusts existing text autosizing heuristics, based on a survey of text on websites in the Alexa top
500 that shrink down to fit the viewport when requesting the desktop version of the site. The new heuristic is
derived from training decision trees against the dataset obtained from this survey, and balances false positives
(cases where layout is broken due to autosizing) against overall accuracy (measured using cross-validation).

See below for more details. Additionally, please refer to the link in the radar for more details, as well as
resources used to generate, validate, and analyze these decision trees.

Test: fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html

  • css/StyleResolver.cpp: (WebCore::StyleResolver::adjustRenderStyleForTextAutosizing):
  • rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::isIdempotentTextAutosizingCandidate const):

Rename AutosizeStatus::shouldSkipSubtree to RenderStyle::isIdempotentTextAutosizingCandidate. We relocate this
logic to RenderStyle, such that we're able to ask the element's RenderStyle questions when determining whether
the element should be autosized.

Of course, this patch additionally revamps the heuristic used to determine whether it is safe to autosize an
element. Our current heuristic in trunk simply checks for the presence of inline block display, out of flow
positioning and a fixed height ancestor; if any of these conditions are satisfied, we opt the element out of
text autosizing. This is an excellent strategy for boosting some runs of text while avoiding autosizing in the
vast majority of cases where increasing font size may lead to layout breakage (e.g. overlapping or clipped text,
content unexpectedly flowing to the next line, etc.). However, it also avoids boosting font sizes in many
scenarios where boosting font sizes is desired; for concrete examples, see the (currently 24) radars about small
font sizes that are duped to <rdar://problem/51826266>.

To help analyze and identify trends in autosizable and non-autosizable text, we assembled a dataset of elements
with text from the Alexa top 500 that either: (1) were too small and could be boosted safely, or (2) would break
layout if boosted. With this labeled dataset, we then trained binary decision trees to classify the data. Each
decision tree was trained with a number of hyperparameters: namely, maximum depth, minimum leaf size, and the
amount of bias towards negative samples (i.e. the ratio of the weight of a non-autosizable sample relative to
the weight of an autosizable sample).

For each 3-tuple of these hyperparameters (800 in total: max depth between 3 and 10, min leaf size between 1 and
10 and bias between 1 and 10), for 5000 iterations each, we split the full dataset into a training dataset and
a cross-validation dataset, trained a decision tree using the training set, and tested against the cross-
validation set to compute average precision, recall, and overall accuracy for each tuple of hyperparameters.

The decision tree introduced in this patch was generated using a hand-picked set of hyperparameters (max depth
10, min leaf size 4, and negative bias 2) to provide a balance between precision scores (limiting layout
breakage) and recall score (ensuring that small text is mostly autosized), while optimizing for overall
accuracy. Cross-validation scores predict that the overall accuracy of this classifier is approximately 70%, up
from the current accuracy in trunk (~53%).

  • rendering/style/RenderStyle.h:

Grow the width of autosizeStatus from 4 to 8 (notably, this does not increase the size of RenderStyle).

  • rendering/style/TextSizeAdjustment.cpp: (WebCore::AutosizeStatus::updateStatus): (WebCore::AutosizeStatus::shouldSkipSubtree const): Deleted.
  • rendering/style/TextSizeAdjustment.h:

Introduce new text autosizing state flags, and remove some existing ones.

LayoutTests:

Rebaseline an existing text autosizing test, and introduce some new test cases that correspond to several common
patterns of autosizable (or non-autosizable) text on websites that were surveyed.

  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-after-changing-initial-scale.html:
  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates-expected.txt: Added.
  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html: Renamed from LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-skip.html.

Rename this existing layout test too, to avoid using the term "skip" in the name of a layout test.

  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-skip-expected.txt: Removed.

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

10:45 AM Changeset in webkit [246840] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Layout Test imported/mozilla/svg/text/selectSubString-2.svg is failing.
https://bugs.webkit.org/show_bug.cgi?id=199196

Unreviewed Test Gardening.

Patch by Russell Epstein <russell_e@apple.com> on 2019-06-26

  • platform/ios-wk2/TestExpectations:
10:37 AM Changeset in webkit [246839] by Alan Coon
  • 7 edits in tags/Safari-608.1.32/Source

Versioning.

10:34 AM Changeset in webkit [246838] by Alan Coon
  • 1 copy in tags/Safari-608.1.32

Tag Safari-608.1.32.

9:49 AM Changeset in webkit [246837] by keith_miller@apple.com
  • 24 edits in trunk/Source/JavaScriptCore

remove unneeded didBecomePrototype() calls
https://bugs.webkit.org/show_bug.cgi?id=199221

Reviewed by Saam Barati.

Since we now set didBecomePrototype in Structure::create we don't
need to set it expliticly in most of our finishCreation
methods. The only exception to this is object prototype, which we
set as the prototype of function prototype late (via
setPrototypeWithoutTransition).

  • inspector/JSInjectedScriptHostPrototype.cpp:

(Inspector::JSInjectedScriptHostPrototype::finishCreation):

  • inspector/JSJavaScriptCallFramePrototype.cpp:

(Inspector::JSJavaScriptCallFramePrototype::finishCreation):

  • runtime/ArrayIteratorPrototype.cpp:

(JSC::ArrayIteratorPrototype::finishCreation):

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):

  • runtime/AsyncFromSyncIteratorPrototype.cpp:

(JSC::AsyncFromSyncIteratorPrototype::finishCreation):

  • runtime/AsyncFunctionPrototype.cpp:

(JSC::AsyncFunctionPrototype::finishCreation):

  • runtime/AsyncGeneratorFunctionPrototype.cpp:

(JSC::AsyncGeneratorFunctionPrototype::finishCreation):

  • runtime/AsyncGeneratorPrototype.cpp:

(JSC::AsyncGeneratorPrototype::finishCreation):

  • runtime/AsyncIteratorPrototype.cpp:

(JSC::AsyncIteratorPrototype::finishCreation):

  • runtime/GeneratorFunctionPrototype.cpp:

(JSC::GeneratorFunctionPrototype::finishCreation):

  • runtime/GeneratorPrototype.cpp:

(JSC::GeneratorPrototype::finishCreation):

  • runtime/IteratorPrototype.cpp:

(JSC::IteratorPrototype::finishCreation):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/MapIteratorPrototype.cpp:

(JSC::MapIteratorPrototype::finishCreation):

  • runtime/MapPrototype.cpp:

(JSC::MapPrototype::finishCreation):

  • runtime/ObjectPrototype.cpp:

(JSC::ObjectPrototype::finishCreation):

  • runtime/RegExpStringIteratorPrototype.cpp:

(JSC::RegExpStringIteratorPrototype::finishCreation):

  • runtime/SetIteratorPrototype.cpp:

(JSC::SetIteratorPrototype::finishCreation):

  • runtime/SetPrototype.cpp:

(JSC::SetPrototype::finishCreation):

  • runtime/StringIteratorPrototype.cpp:

(JSC::StringIteratorPrototype::finishCreation):

  • runtime/WeakMapPrototype.cpp:

(JSC::WeakMapPrototype::finishCreation):

  • runtime/WeakObjectRefPrototype.cpp:

(JSC::WeakObjectRefPrototype::finishCreation):

  • runtime/WeakSetPrototype.cpp:

(JSC::WeakSetPrototype::finishCreation):

9:01 AM Changeset in webkit [246836] by Kocsen Chung
  • 3 edits
    2 adds in branches/safari-608.1.31.0-branch

Cherry-pick r246835. rdar://problem/51787961

[ContentChangeObserver] Dispatch synthetic mouse event asynchronously in completePendingSyntheticClickForContentChangeObserver
https://bugs.webkit.org/show_bug.cgi?id=199220
<rdar://problem/51787961>

Reviewed by Simon Fraser.

Source/WebKit:

WebPage::completePendingSyntheticClickForContentChangeObserver should not dispatch mouse events synchronously.
Mouse events, through style updates could destroy the element that initiated this change.
WebPage::handleSyntheticClick() already implements this pattern.

  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver):

LayoutTests:

  • fast/events/touch/ios/content-observation/animation-end-with-visiblity-change-crash-expected.txt: Added.
  • fast/events/touch/ios/content-observation/animation-end-with-visiblity-change-crash.html: Added.

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

7:44 AM Changeset in webkit [246835] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[ContentChangeObserver] Dispatch synthetic mouse event asynchronously in completePendingSyntheticClickForContentChangeObserver
https://bugs.webkit.org/show_bug.cgi?id=199220
<rdar://problem/51787961>

Reviewed by Simon Fraser.

Source/WebKit:

WebPage::completePendingSyntheticClickForContentChangeObserver should not dispatch mouse events synchronously.
Mouse events, through style updates could destroy the element that initiated this change.
WebPage::handleSyntheticClick() already implements this pattern.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver):

LayoutTests:

  • fast/events/touch/ios/content-observation/animation-end-with-visiblity-change-crash-expected.txt: Added.
  • fast/events/touch/ios/content-observation/animation-end-with-visiblity-change-crash.html: Added.

Jun 25, 2019:

11:53 PM Changeset in webkit [246834] by bshafiei@apple.com
  • 7 edits in branches/safari-608.1.31.0-branch

Cherry-pick r246800. rdar://problem/51554509

[iOS] Occasional crash under -[UIPreviewTarget initWithContainer:center:transform:] when generating a drag preview
https://bugs.webkit.org/show_bug.cgi?id=199192
<rdar://problem/51554509>

Reviewed by Tim Horton.

Source/WebKit:

Tweak our preview generation code (for both the context menu and dragging) to be robust in the case where the
content view's unscaled view is nil; this may happen in the case after the web content process is terminated
and -cleanupInteraction is called, but before -setupInteraction is subsequently called.

Additionally, make our logic for creating targeted previews robust in the case where the view is removed from
the view hierarchy right before the platform asks for a targeted preview.

Test: DragAndDropTests.WebProcessTerminationDuringDrag

DragAndDropTests.WebViewRemovedFromViewHierarchyDuringDrag

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView containerViewForTargetedPreviews]): (-[WKContentView _deliverDelayedDropPreviewIfPossible:]): (-[WKContentView dragInteraction:previewForLiftingItem:session:]): (-[WKContentView _ensureTargetedPreview]):

Tools:

Tweak the drag and drop simulator to ask for drag cancellation previews, and use this to write a couple tests to
verify that we gracefully handle web process termination and web view unparenting mid-drag.

  • TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm: (TestWebKitAPI::TEST):
  • TestWebKitAPI/cocoa/DragAndDropSimulator.h:
  • TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm: (-[DragAndDropSimulator _resetSimulatedState]): (-[DragAndDropSimulator _concludeDropAndPerformOperationIfNecessary]): (-[DragAndDropSimulator _advanceProgress]): (-[DragAndDropSimulator liftPreviews]): (-[DragAndDropSimulator cancellationPreviews]): (-[DragAndDropSimulator setSessionWillBeginBlock:]): (-[DragAndDropSimulator sessionWillBeginBlock]): (-[DragAndDropSimulator _webView:dataInteraction:sessionWillBegin:]):

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

11:53 PM Changeset in webkit [246833] by bshafiei@apple.com
  • 4 edits in branches/safari-608.1.31.0-branch/Source

Cherry-pick r246767. rdar://problem/51535942

Null deref in WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad.
<rdar://problem/51535942> and https://bugs.webkit.org/show_bug.cgi?id=199123

Reviewed by Andy Estes.

Source/WebCore:

  • loader/FrameLoaderStateMachine.h: (WebCore::FrameLoaderStateMachine::stateForDebugging const):

Source/WebKit:

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad): Properly detect this null DocumentLoader and try to learn more about the state of things.

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

8:56 PM Changeset in webkit [246832] by Ryan Haddad
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Unreviewed, rolling out r246825.

Breaks internal builds.

Reverted changeset:

"Script which adjusts include paths in ANGLE's copied headers
breaks incremental builds"
https://bugs.webkit.org/show_bug.cgi?id=199212
https://trac.webkit.org/changeset/246825

8:51 PM Changeset in webkit [246831] by Fujii Hironori
  • 3 edits in trunk/Source/WebCore

[WinCairo] incorrect font height for 'Google Sans Display' font
https://bugs.webkit.org/show_bug.cgi?id=198909

Reviewed by Frédéric Wang.

r191893 changed to use OS/2 typo metrics, but its calculation
wasn't correct. And, there is no reliable way to get OS/2 table by
using Windows API. Revert the part of r191893 change at the
moment.

  • platform/graphics/win/SimpleFontDataCairoWin.cpp:

(WebCore::Font::platformInit):

  • platform/graphics/win/SimpleFontDataWin.cpp:

(WebCore::Font::initGDIFont):
Reverted the part of r191893 change, and added FIXME comments.

8:49 PM Changeset in webkit [246830] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Layout Test imported/blink/editing/selection/deleteFromDocument-crash.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=199213

Unreviewed Test Gardening.

Patch by Russell Epstein <russell_e@apple.com> on 2019-06-25

  • platform/ios-wk2/TestExpectations:
8:11 PM Changeset in webkit [246829] by jiewen_tan@apple.com
  • 11 edits
    1 add in trunk

Implement a new SPI to inform clients about AppSSO
https://bugs.webkit.org/show_bug.cgi?id=199085
<rdar://problem/50028246>

Reviewed by Geoffrey Garen.

Source/WebKit:

This patch implements a new SPI to inform clients about incoming AppSSO interceptions during
navigations. Therefore, clients can make an informed decision about whether this is the right
moment to do the interception as interceptions often show native UI. Also, the SPI is designed
to pass along a human readable name for the extension such that clients can do whatever they
want to inform users about what's going on.

Here is the new SPI:

  • (void)_webView:(WKWebView *)webView decidePolicyForSOAuthorizationLoadWithCurrentPolicy:(_WKSOAuthorizationLoadPolicy)policy forExtension:(NSString *)extension completionHandler:(void ()(_WKSOAuthorizationLoadPolicy policy))completionHandler;
  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::decidePolicyForSOAuthorizationLoad):

  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::soAuthorizationLoadPolicy):
(WebKit::wkSOAuthorizationLoadPolicy):
(WebKit::NavigationState::NavigationClient::decidePolicyForSOAuthorizationLoad):

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationLoadPolicy.h: Added.
  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:

(WebKit::SOAuthorizationSession::start):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::decidePolicyForSOAuthorizationLoad):

  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(-[TestSOAuthorizationBasicDelegate webView:didFinishNavigation:]):
(-[TestSOAuthorizationNavigationDelegate init]):
(-[TestSOAuthorizationNavigationDelegate _webView:decidePolicyForSOAuthorizationLoadWithCurrentPolicy:forExtension:completionHandler:]):
(TestWebKitAPI::TEST):

7:59 PM Changeset in webkit [246828] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

[iOS WK2 Debug] scrollingcoordinator/scrolling-tree/scroller-with-negative-z-child.html asserts
https://bugs.webkit.org/show_bug.cgi?id=199218

Reviewed by Zalan Bujtas.

Followup to r246766; don't assert in the UI process if a ScrollingTreeOverflowScrollProxyNode
doesn't have a related overflow node; this is currently expected behavior with negative z-order
children of a scroller.

  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations):

7:25 PM Changeset in webkit [246827] by keith_miller@apple.com
  • 2 edits in trunk/Source/WTF

CagedPtr doesn't merge PAC bits back into the resulting caged pointer.
https://bugs.webkit.org/show_bug.cgi?id=199214

Reviewed by Yusuke Suzuki.

The current code means that caging will just strip the any failed
authentication bits. Adding this code doesn't appear to be a
regression on iPhone Xs.

  • wtf/CagedPtr.h:

(WTF::CagedPtr::get const):
(WTF::CagedPtr::getMayBeNull const):
(WTF::CagedPtr::getUnsafe const):
(WTF::CagedPtr::mergePointers):

7:00 PM Changeset in webkit [246826] by weinig@apple.com
  • 2 edits in trunk/Source/WTF

Experiment with simple structured bindings use
https://bugs.webkit.org/show_bug.cgi?id=198905

Reviewed by Darin Adler.

  • wtf/URLHelpers.cpp:

(WTF::URLHelpers::mapHostNames):
Simplify code using c++ structured bindings (https://en.cppreference.com/w/cpp/language/structured_binding)
to see if all the platforms will work with it.

6:44 PM Changeset in webkit [246825] by dino@apple.com
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Script which adjusts include paths in ANGLE's copied headers breaks incremental builds
https://bugs.webkit.org/show_bug.cgi?id=199212

Patch by Kenneth Russell <kbr@chromium.org> on 2019-06-25
Reviewed by Darin Adler.

Maintain and test a timestamp in adjust-angle-include-paths.sh
in order to avoid touching the headers during each build.

  • adjust-angle-include-paths.sh:
6:40 PM Changeset in webkit [246824] by Justin Fan
  • 4 edits
    2 copies
    2 moves in trunk/LayoutTests

[WHLSL] Make whlsl-test-harness actually generate WHLSL shaders by default
https://bugs.webkit.org/show_bug.cgi?id=199028

Reviewed by Saam Barati.

whlsl-test-harness.js now generates WHLSL shaders and invokes WebKit's WHLSL compiler.
MSL mode remains to facilitate further harness tesing.
In addition, if WebGPU is not supported, synchronous Harness methods do nothing.
Asynchronous methods will throw a WebGPUUnsupportedError that "rejects" the returned Promise.

  • TestExpectations:
  • platform/mac/TestExpectations:
  • webgpu/js/whlsl-test-harness.js:

(WebGPUUnsupportedError): Layout tests should catch these to fail gracefully if WebGPU is not supported.
(Data):
(Data.prototype.async.getArrayBuffer):
(Data.prototype.get isBuffer): Renamed from isPointer.
(Harness):
(Harness.prototype.async.requestDevice): Can be used to re-acquire a GPUDevice.
(Harness.prototype.set isWHLSL): Determines whether harness will generate WHLSL or MSL shaders.
(Harness.prototype.async.callTypedFunction):
(Harness.prototype.callVoidFunction):
(Harness.prototype.get device):
(Harness.prototype._clearResults):
(Harness.prototype._setUpArguments):
(Harness.prototype._callFunction):
(Data.prototype.get isPointer): Deleted.
(Harness.prototype._initialize): Deleted.
(Harness.prototype.async.callVoidFunction): Deleted.
(harness._initialize.async): Deleted.

  • webgpu/msl-harness-test-expected.txt: Renamed from LayoutTests/webgpu/whlsl-harness-test-expected.txt.
  • webgpu/msl-harness-test.html: Copied from LayoutTests/webgpu/whlsl-harness-test.html.
  • webgpu/whlsl-test-harness-test-expected.html: Added.
  • webgpu/whlsl-test-harness-test.html: Renamed from LayoutTests/webgpu/whlsl-harness-test.html.
6:01 PM Changeset in webkit [246823] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Retry Layout test in case of failures
https://bugs.webkit.org/show_bug.cgi?id=199194

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(RunWebKitTests.evaluateCommand): Check if tests failed and retry them if required.
(ReRunWebKitTests): Build step to re-run layout tests.
(ReRunWebKitTests.evaluateCommand): Check if tests failed and retry on clean build if required.
(RunWebKitTestsWithoutPatch): Build step to run tests without patch.
(RunWebKitTestsWithoutPatch.evaluateCommand):

5:56 PM Changeset in webkit [246822] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] Combine various patchFailed*Tests properties
https://bugs.webkit.org/show_bug.cgi?id=199193

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py: Renamed patchFailedJSCTests and patchFailedAPITests to patchFailedTests. This property

can also be used for layout-tests later on.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Updated unit-tests.
4:45 PM Changeset in webkit [246821] by Matt Baker
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Elements: show shadow DOM by default
https://bugs.webkit.org/show_bug.cgi?id=199128

Reviewed by Devin Rousso.

  • UserInterface/Base/Setting.js:
  • UserInterface/Test/Test.js:

(WI.loaded):
Overriding the default value isn't necessary since the default is now true.

4:44 PM Changeset in webkit [246820] by Kocsen Chung
  • 7 edits in branches/safari-607-branch/Source

Versioning.

4:43 PM Changeset in webkit [246819] by Kocsen Chung
  • 1 copy in tags/Safari-607.3.6

Tag Safari-607.3.6.

4:42 PM Changeset in webkit [246818] by timothy@apple.com
  • 3 edits in trunk/Source/WebCore

Clicking the up/down spin buttons for a number input increments/decrements by 2.
https://bugs.webkit.org/show_bug.cgi?id=198809

Reviewed by Tim Horton.

AppKit no longer registers NSScrollerButtonDelay and NSScrollerButtonPeriod in the base
NSUserDefaults for an app. This caused our use to always get 0s when setting the click
and hold timer, causing the value to increment quickly for a single press.

  • platform/mac/ScrollbarThemeMac.h:

(WebCore::ScrollbarThemeMac::initialAutoscrollTimerDelay): Added. Hardcode 500ms.
(WebCore::ScrollbarThemeMac::autoscrollTimerDelay): Added. Hardcode 50ms.

  • platform/mac/ScrollbarThemeMac.mm:

(WebCore::ScrollbarThemeMac::preferencesChanged): Removed use of old user defaults.
(WebCore::ScrollbarThemeMac::initialAutoscrollTimerDelay): Deleted.
(WebCore::ScrollbarThemeMac::autoscrollTimerDelay): Deleted.

4:41 PM Changeset in webkit [246817] by dbates@webkit.org
  • 5 edits
    2 adds in trunk

Non-editable text selections should be modifiable with hardware keyboard
https://bugs.webkit.org/show_bug.cgi?id=199204
<rdar://problem/51651496>

Reviewed by Wenson Hsieh.

Source/WebKit:

UIKit changes are need for this to work, including <rdar://problem/48322899>.
Note that without these changes, -canPerformAction is never called for _move*
selectors.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView canPerformAction:withSender:]):

LayoutTests:

Add a test, skipped for now, until we have the fix for <rdar://problem/48322899>.

  • editing/selection/ios/select-non-editable-text-using-keyboard-expected.txt: Added.
  • editing/selection/ios/select-non-editable-text-using-keyboard.html: Added.
  • platform/ios/TestExpectations:
  • resources/ui-helper.js:

(window.UIHelper.callFunctionAndWaitForEvent): Added.

4:40 PM Changeset in webkit [246816] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

REGRESSION(r246621): Web Inspector: Styles: property may get removed when editing after deleting value
https://bugs.webkit.org/show_bug.cgi?id=199143
<rdar://problem/52042815>

Reviewed by Matt Baker.

r246621 affected when WI.CSSStyleDeclaration.Event.PropertiesChanged event is fired, which caused
SpreadsheetCSSStyleDeclarationEditor to possibly enter a state when focused property is
incorrectly set to false.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:

(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved): Removed.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyWillRemove): Added.
Renamed from "removed" to "willRemove" since we need to call it before the property DOM element
is detached from the document.

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype.remove):
Don't set focused to false when the removed property wasn't focused.
This code need to exist because removing focused element from the DOM doesn't trigger blur event.

4:38 PM Changeset in webkit [246815] by Kocsen Chung
  • 1 copy in tags/Safari-608.1.31.2.1

Tag Safari-608.1.31.2.1.

4:24 PM Changeset in webkit [246814] by Ross Kirsling
  • 8 edits in trunk/Tools

[Win] MiniBrowser should default to webkit.org
https://bugs.webkit.org/show_bug.cgi?id=199201

Reviewed by Don Olmstead.

  • MiniBrowser/win/BrowserWindow.h:
  • MiniBrowser/win/MiniBrowserReplace.h:
  • MiniBrowser/win/WebKitBrowserWindow.cpp:

(WebKitBrowserWindow::loadHTMLString): Deleted.

  • MiniBrowser/win/WebKitBrowserWindow.h:
  • MiniBrowser/win/WebKitLegacyBrowserWindow.cpp:

(WebKitLegacyBrowserWindow::loadHTMLString): Deleted.

  • MiniBrowser/win/WebKitLegacyBrowserWindow.h:
  • MiniBrowser/win/WinMain.cpp:

(wWinMain):

4:23 PM Changeset in webkit [246813] by Kocsen Chung
  • 7 edits in branches/safari-608.1.31.0-branch/Source

Versioning.

4:22 PM Changeset in webkit [246812] by Kocsen Chung
  • 1 copy in tags/Safari-608.1.31.0.2

Tag Safari-608.1.31.0.2.

3:13 PM Changeset in webkit [246811] by keith_miller@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, windows build fix.

  • bindings/js/JSDOMGlobalObject.h:
2:47 PM Changeset in webkit [246810] by dbates@webkit.org
  • 3 edits
    2 adds in trunk

[iOS] Should not process key events in non-editable elements using IME
https://bugs.webkit.org/show_bug.cgi?id=199122
<rdar://problem/52006654>

Reviewed by Brent Fulgham.

Source/WebKit:

Use the non-Input Method code path (the one we use for US keyboard input) for all key events
targeting a non-editable element. Such key events will never require Input Method support
(i.e. show candidate suggestions). Moreover, this behavior matches the behavior on Mac.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView handleKeyWebEvent:withCompletionHandler:]):

LayoutTests:

Add a test to ensure that we do not process key events as being handled by the Input Manager
when using a Chinese keyboard layout and targeting a non-editable element.

  • fast/events/ios/keydown-keyup-keypress-keys-in-non-editable-using-chinese-keyboard-expected.txt: Added.
  • fast/events/ios/keydown-keyup-keypress-keys-in-non-editable-using-chinese-keyboard.html: Added.
2:35 PM Changeset in webkit [246809] by abarth@webkit.org
  • 2 edits in trunk/Source/WTF

[fuchsia] Update to newer zx_clock_get syscall
https://bugs.webkit.org/show_bug.cgi?id=199191

Reviewed by Sam Weinig.

Fuchsia has changed the zx_clock_get syscall to return the clock value
via an out parameter rather than via its return value. This change
makes zx_clock_get consistent with all the other syscalls.

This patch updates our use of zx_clock_get to use the new syscall. The
old syscall is no longer supported by Fuchsia.

  • wtf/fuchsia/CPUTimeFuchsia.cpp:

(WTF::CPUTime::get): Switch to using the out parameter.
(WTF::CPUTime::forCurrentThread): Switch to using the out parameter.

2:19 PM Changeset in webkit [246808] by keith_miller@apple.com
  • 4 edits in trunk/Source/WebCore

Add didBecomePrototype() calls to global context prototypes
https://bugs.webkit.org/show_bug.cgi?id=199202

Reviewed by Mark Lam.

This fixes some crashes related to asserting that all prototypes
have been marked as such in JSC from
https://trac.webkit.org/changeset/246801. It's ok to call
didBecomePrototype here as we setting up the world state right now
so we won't be having a bad time.

We don't automatically call didBecomePrototype() for
setPrototypeWithoutTransition because existing objects may already
have this structure so it seems more reasonable to be explicit
there.

  • bindings/js/JSWindowProxy.cpp:

(WebCore::JSWindowProxy::setWindow):

  • bindings/js/WorkerScriptController.cpp:

(WebCore::WorkerScriptController::initScript):

  • worklets/WorkletScriptController.cpp:

(WebCore::WorkletScriptController::initScriptWithSubclass):

2:08 PM Changeset in webkit [246807] by commit-queue@webkit.org
  • 18 edits in trunk/Source

Make HTTPCookieAcceptPolicy an enum class
https://bugs.webkit.org/show_bug.cgi?id=199081

Patch by Alex Christensen <achristensen@webkit.org> on 2019-06-25
Source/WebCore/PAL:

Reviewed by Michael Catanzaro

  • pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

Reviewed by Michael Catanzaro.

Doing so reveals some interesting bugs in the C API that are also fixed:
WKPreferencesGetIncrementalRenderingSuppressionTimeout was using its toAPI function to convert a double to a double because HTTPCookieAcceptPolicy used to be an unsigned integer.
toAPI(WebCore::MouseButton) was also using the toAPI(HTTPCookieAcceptPolicy) because HTTPCookieAcceptPolicy used to be an unsigned integer.
Yikes! Type safety is our friend.

  • NetworkProcess/Cookies/WebCookieManager.messages.in:
  • NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:

(WebKit::toCFHTTPCookieStorageAcceptPolicy):
(WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy):
(WebKit::WebCookieManager::platformGetHTTPCookieAcceptPolicy):

  • Shared/API/c/WKSharedAPICast.h:

(WebKit::toAPI):

  • Shared/HTTPCookieAcceptPolicy.h:

(): Deleted.

  • UIProcess/API/C/WKAPICast.h:

(WebKit::toHTTPCookieAcceptPolicy):
(WebKit::toAPI):

  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesGetIncrementalRenderingSuppressionTimeout):

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(toHTTPCookieAcceptPolicy):

  • UIProcess/WebCookieManagerProxy.cpp:

(WebKit::WebCookieManagerProxy::didGetHTTPCookieAcceptPolicy):

  • UIProcess/WebCookieManagerProxy.h:
  • UIProcess/WebCookieManagerProxy.messages.in:
1:51 PM Changeset in webkit [246806] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[macOS WK2] REGRESSION (r242313): Layout Test scrollingcoordinator/mac/multiple-fixed.html is a flaky time out and image diff
https://bugs.webkit.org/show_bug.cgi?id=195635

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:51 PM Changeset in webkit [246805] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Wrong title for Data Detectors tap action menu
https://bugs.webkit.org/show_bug.cgi?id=199198
<rdar://problem/51957842>

Reviewed by Wenson Hsieh.

  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant showDataDetectorsSheet]):
Always pass the results array through to DataDetectors; they need it
to figure out the title too!

1:48 PM Changeset in webkit [246804] by wilander@apple.com
  • 5 edits in trunk/LayoutTests

Migrate LayoutTests/http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store* test cases to setEnableFeature() and jsTestIsAsync
https://bugs.webkit.org/show_bug.cgi?id=199180
<rdar://problem/52085369>

Reviewed by Brent Fulgham.

  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-expected.txt:
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour-expected.txt:
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour.html:
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store.html:
1:18 PM Changeset in webkit [246803] by Kocsen Chung
  • 7 edits in tags/Safari-608.1.28.2/Source

Versioning.

12:51 PM Changeset in webkit [246802] by Kocsen Chung
  • 1 copy in tags/Safari-608.1.28.2

New tag.

12:49 PM Changeset in webkit [246801] by keith_miller@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Structure::create should call didBecomePrototype()
https://bugs.webkit.org/show_bug.cgi?id=196315

Reviewed by Filip Pizlo.

Structure::create should also assert that the indexing type makes sense
for the prototype being used.

  • runtime/JSObject.h:
  • runtime/Structure.cpp:

(JSC::Structure::isValidPrototype):
(JSC::Structure::changePrototypeTransition):

  • runtime/Structure.h:

(JSC::Structure::create): Deleted.

  • runtime/StructureInlines.h:

(JSC::Structure::create):
(JSC::Structure::setPrototypeWithoutTransition):

11:48 AM Changeset in webkit [246800] by wenson_hsieh@apple.com
  • 7 edits in trunk

[iOS] Occasional crash under -[UIPreviewTarget initWithContainer:center:transform:] when generating a drag preview
https://bugs.webkit.org/show_bug.cgi?id=199192
<rdar://problem/51554509>

Reviewed by Tim Horton.

Source/WebKit:

Tweak our preview generation code (for both the context menu and dragging) to be robust in the case where the
content view's unscaled view is nil; this may happen in the case after the web content process is terminated
and -cleanupInteraction is called, but before -setupInteraction is subsequently called.

Additionally, make our logic for creating targeted previews robust in the case where the view is removed from
the view hierarchy right before the platform asks for a targeted preview.

Test: DragAndDropTests.WebProcessTerminationDuringDrag

DragAndDropTests.WebViewRemovedFromViewHierarchyDuringDrag

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView containerViewForTargetedPreviews]):
(-[WKContentView _deliverDelayedDropPreviewIfPossible:]):
(-[WKContentView dragInteraction:previewForLiftingItem:session:]):
(-[WKContentView _ensureTargetedPreview]):

Tools:

Tweak the drag and drop simulator to ask for drag cancellation previews, and use this to write a couple tests to
verify that we gracefully handle web process termination and web view unparenting mid-drag.

  • TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/DragAndDropSimulator.h:
  • TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:

(-[DragAndDropSimulator _resetSimulatedState]):
(-[DragAndDropSimulator _concludeDropAndPerformOperationIfNecessary]):
(-[DragAndDropSimulator _advanceProgress]):
(-[DragAndDropSimulator liftPreviews]):
(-[DragAndDropSimulator cancellationPreviews]):
(-[DragAndDropSimulator setSessionWillBeginBlock:]):
(-[DragAndDropSimulator sessionWillBeginBlock]):
(-[DragAndDropSimulator _webView:dataInteraction:sessionWillBegin:]):

11:47 AM Changeset in webkit [246799] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Layout Test imported/mozilla/svg/text/textpath-selection.svg is flaky.
https://bugs.webkit.org/show_bug.cgi?id=199196

Unreviewed Test Gardening.

Patch by Russell Epstein <russell_e@apple.com> on 2019-06-25

  • platform/ios-wk2/TestExpectations:
11:36 AM Changeset in webkit [246798] by Joseph Pecoraro
  • 24 edits in trunk

Web Inspector: Implement console.timeLog
https://bugs.webkit.org/show_bug.cgi?id=199184

Reviewed by Devin Rousso.

Source/JavaScriptCore:

  • inspector/JSGlobalObjectConsoleClient.cpp:

(Inspector::JSGlobalObjectConsoleClient::timeLog):

  • inspector/JSGlobalObjectConsoleClient.h:
  • inspector/agents/InspectorConsoleAgent.cpp:

(Inspector::InspectorConsoleAgent::logTiming):
(Inspector::InspectorConsoleAgent::stopTiming):

  • inspector/agents/InspectorConsoleAgent.h:
  • runtime/ConsoleClient.h:
  • runtime/ConsoleObject.cpp:

(JSC::ConsoleObject::finishCreation):
(JSC::consoleProtoFuncTimeLog):

Source/WebCore:

Updated existing tests.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::logConsoleTimingImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::logConsoleTiming):

  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::timeLog):

  • page/PageConsoleClient.h:
  • workers/WorkerConsoleClient.cpp:

(WebCore::WorkerConsoleClient::timeLog):

  • workers/WorkerConsoleClient.h:
  • worklets/WorkletConsoleClient.cpp:

(WebCore::WorkletConsoleClient::timeLog):

  • worklets/WorkletConsoleClient.h:

Source/WebInspectorUI:

  • UserInterface/Views/ConsoleMessageView.js:

(WI.ConsoleMessageView.prototype._appendMessageTextAndArguments):
Time messages (like timeLog) do not include their messageText
in their parameters list. So to behave more like normal logs
build a parameter list that includes it at the front.

LayoutTests:

  • inspector/console/console-time-expected.txt:
  • inspector/console/console-time.html:

Add new timeLog tests.

  • js/console-expected.txt:

New timeLog method.

  • platform/gtk/TestExpectations:
  • platform/mac/TestExpectations:

Unskip test.

11:09 AM Changeset in webkit [246797] by youenn@apple.com
  • 4 edits
    1 add in trunk/Source

Close sockets with too high file descriptor
https://bugs.webkit.org/show_bug.cgi?id=199116

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

  • Source/webrtc/rtc_base/physicalsocketserver.cc:
  • WebKit/0001-Close-sockets-with-file-descriptors-above-FD_SETSIZE.patch: Added.

Source/WebKit:

Log the case of failing to open a socket.

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::createSocket):

11:01 AM Changeset in webkit [246796] by bshafiei@apple.com
  • 7 edits in branches/safari-608.1.31.0-branch/Source

Versioning.

10:29 AM Changeset in webkit [246795] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

When Caps Lock is enabled on the Smart Keyboard, can't scroll with space or arrow keys
https://bugs.webkit.org/show_bug.cgi?id=199187
<rdar://problem/51521709>

Reviewed by Anders Carlsson.

  • UIProcess/ios/WKKeyboardScrollingAnimator.mm:

(-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]):
When deciding whether a key event should start a scroll, ignore all
modifiers other than the ones we actually care about (including Caps Lock).

10:00 AM Changeset in webkit [246794] by Kocsen Chung
  • 7 edits in branches/safari-607-branch/Source

Versioning.

9:17 AM Changeset in webkit [246793] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] UploadTestResults and ExtractTestResults clobber results in case of multiple layout test runs in a build
https://bugs.webkit.org/show_bug.cgi?id=199178

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(UploadTestResults.init): Add an optional identifier and append the identifier to the file name.
(ExtractTestResults.init): Ditto.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Added unit tests.
9:08 AM Changeset in webkit [246792] by Michael Catanzaro
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r245586): static assertion failed: Match result and EncodedMatchResult should be the same size
https://bugs.webkit.org/show_bug.cgi?id=198518

Reviewed by Keith Miller.

r245586 made some bad assumptions about the size of size_t, which we can solve using the
CPU(ADDRESS32) guard that I didn't know about.

This solution was developed by Mark Lam and Keith Miller. I'm just preparing the patch.

  • runtime/MatchResult.h:
7:59 AM Changeset in webkit [246791] by Michael Catanzaro
  • 4 edits in trunk

Add user agent quirk for bankofamerica.com
https://bugs.webkit.org/show_bug.cgi?id=199154

Reviewed by Carlos Garcia Campos.

Source/WebCore:

This suppresses an unsupported browser warning.

  • platform/UserAgentQuirks.cpp:

(WebCore::urlRequiresMacintoshPlatform):

Tools:

  • TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST):

7:56 AM Changeset in webkit [246790] by Michael Catanzaro
  • 32 edits in trunk

Fully rename WebKitGTK+ -> WebKitGTK everywhere
https://bugs.webkit.org/show_bug.cgi?id=199159

Reviewed by Carlos Garcia Campos.

.:

  • Source/cmake/FindGLIB.cmake:

Source/WebCore:

  • accessibility/atk/WebKitAccessibleInterfaceText.cpp:

(webkitAccessibleTextGetStringAtOffset):

  • platform/UserAgentQuirks.cpp:

(WebCore::urlRequiresMacintoshPlatform):

  • platform/network/soup/NetworkStorageSessionSoup.cpp:

(WebCore::NetworkStorageSession::saveCredentialToPersistentStorage):

  • rendering/RenderThemeGtk.cpp:

(WebCore::RenderThemeGtk::adjustTextFieldStyle const):

Source/WebKit:

  • UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:

Source/WTF:

  • wtf/URLParser.cpp:

(WTF::URLParser::internationalDomainNameTranscoder):

Tools:

  • BuildSlaveSupport/gtk/README:
  • MiniBrowser/gtk/BrowserWindow.c:
  • MiniBrowser/gtk/main.c:

(aboutURISchemeRequestCallback):

  • Scripts/webkitpy/common/config/contributionareas.py:
  • Scripts/webkitpy/common/config/contributors.json:
  • Scripts/webkitpy/tool/commands/analyzechangelog_unittest.py:
  • TestWebKitAPI/Tests/WebKitGLib/TestCookieManager.cpp:
  • TestWebKitAPI/Tests/WebKitGLib/TestResources.cpp:

(testWebViewResources):

  • TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:

(testWebViewMouseTarget):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp:

(testWebExtensionGetTitle):
(testDocumentLoadedSignal):
(testWebExtensionFormControlsAssociated):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:

(testWebKitSettingsUserAgent):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:

(testWebViewRunJavaScript):

  • TestWebKitAPI/Tests/WebKitGtk/InspectorTestServer.cpp:

(main):

  • TestWebKitAPI/Tests/WebKitGtk/TestContextMenu.cpp:

(prepareContextMenuTestView):
(testContextMenuPopulateMenu):
(testContextMenuCustomMenu):
(testContextMenuDisableMenu):
(testContextMenuSubMenu):
(testContextMenuDismissed):
(testContextMenuWebExtensionMenu):
(testContextMenuWebExtensionNode):

  • TestWebKitAPI/Tests/WebKitGtk/TestInspector.cpp:

(testInspectorDefault):
(testInspectorManualAttachDetach):
(testInspectorCustomContainerDestroyed):

  • TestWebKitAPI/Tests/WebKitGtk/TestPrinting.cpp:

(testWebViewPrint):
(testPrintOperationPrint):
(testPrintOperationErrors):

  • gtk/install-dependencies:
  • gtk/jhbuild.modules:
  • gtkdoc/generate-gtkdoc:
  • wpe/install-dependencies:
7:47 AM Changeset in webkit [246789] by Michael Catanzaro
  • 4 edits in trunk

Require GCC 7
https://bugs.webkit.org/show_bug.cgi?id=198914

Reviewed by Darin Adler.

.:

  • CMakeLists.txt:

Source/WTF:

Remove now-stale GCC version check.

  • wtf/Compiler.h:
2:13 AM Changeset in webkit [246788] by Fujii Hironori
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening

  • TestExpectations: Added webkit.org/b/184066 to imported/w3c/web-platform-tests/IndexedDB/nested-cloning-large-multiple.html and others.

Added webkit.org/b/184065 to imported/w3c/web-platform-tests/IndexedDB/keypath-exceptions.htm.

2:00 AM Changeset in webkit [246787] by Fujii Hironori
  • 2 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

  • platform/wincairo/TestExpectations: Added webkit.org/b/199186 to fonts/use-typo-metrics-1.html.

Removed duplicated storage/indexeddb/key-type-array-private.html and storage/indexeddb/key-type-array.html.

1:42 AM Changeset in webkit [246786] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Introduce LinkLoadParameters
https://bugs.webkit.org/show_bug.cgi?id=198960

Patch by Rob Buis <rbuis@igalia.com> on 2019-06-25
Reviewed by Frédéric Wang.

Avoid the long parameters lists in LinkLoader by moving them
to LinkLoadParameters.

No new tests because there is no behavior change.

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::process):

  • loader/LinkLoader.cpp:

(WebCore::LinkLoader::loadLinksFromHeader):
(WebCore::LinkLoader::preconnectIfNeeded):
(WebCore::LinkLoader::preloadIfNeeded):
(WebCore::LinkLoader::prefetchIfNeeded):
(WebCore::LinkLoader::loadLink):

  • loader/LinkLoader.h:
12:25 AM Changeset in webkit [246785] by bshafiei@apple.com
  • 12 edits in tags/Safari-608.1.30.2

Revert r246530. rdar://problem/52020968

12:23 AM Changeset in webkit [246784] by bshafiei@apple.com
  • 7 edits in tags/Safari-608.1.30.2/Source

Versioning.

12:19 AM Changeset in webkit [246783] by bshafiei@apple.com
  • 1 copy in tags/Safari-608.1.30.2

New tag.

Jun 24, 2019:

9:15 PM Changeset in webkit [246782] by Ryan Haddad
  • 2 edits in branches/safari-607-branch/Tools

Cherry-pick r245975. rdar://problem/52090309

WebKitTestRunner sometimes freezes under -[NSWindow release]
https://bugs.webkit.org/show_bug.cgi?id=198422

Reviewed by Tim Horton.

The window remains key until it's out of the allWindows vector, and AppKit is not
happy about deallocating key windows. Fixed by updating allWindows in -close
instead of -release.

Added isMainFrame assertions in code that manipulates allWindows for a good measure.

  • WebKitTestRunner/mac/WebKitTestRunnerWindow.mm: (+[WebKitTestRunnerWindow _WTR_keyWindow]): (-[WebKitTestRunnerWindow initWithContentRect:styleMask:backing:defer:]): (-[WebKitTestRunnerWindow close]): (-[WebKitTestRunnerWindow dealloc]):

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

9:06 PM Changeset in webkit [246781] by wenson_hsieh@apple.com
  • 8 edits
    1 move
    1 add
    1 delete in trunk

[Text autosizing] [iPadOS] Revise our heuristics to determine idempotent text autosizing candidates
https://bugs.webkit.org/show_bug.cgi?id=198763
<rdar://problem/51826266>

Reviewed by Simon Fraser.

Source/WebCore:

This patch adjusts existing text autosizing heuristics, based on a survey of text on websites in the Alexa top
500 that shrink down to fit the viewport when requesting the desktop version of the site. The new heuristic is
derived from training decision trees against the dataset obtained from this survey, and balances false positives
(cases where layout is broken due to autosizing) against overall accuracy (measured using cross-validation).

See below for more details. Additionally, please refer to the link in the radar for more details, as well as
resources used to generate, validate, and analyze these decision trees.

Test: fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::adjustRenderStyleForTextAutosizing):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::isIdempotentTextAutosizingCandidate const):

Rename AutosizeStatus::shouldSkipSubtree to RenderStyle::isIdempotentTextAutosizingCandidate. We relocate this
logic to RenderStyle, such that we're able to ask the element's RenderStyle questions when determining whether
the element should be autosized.

Of course, this patch additionally revamps the heuristic used to determine whether it is safe to autosize an
element. Our current heuristic in trunk simply checks for the presence of inline block display, out of flow
positioning and a fixed height ancestor; if any of these conditions are satisfied, we opt the element out of
text autosizing. This is an excellent strategy for boosting some runs of text while avoiding autosizing in the
vast majority of cases where increasing font size may lead to layout breakage (e.g. overlapping or clipped text,
content unexpectedly flowing to the next line, etc.). However, it also avoids boosting font sizes in many
scenarios where boosting font sizes is desired; for concrete examples, see the (currently 24) radars about small
font sizes that are duped to <rdar://problem/51826266>.

To help analyze and identify trends in autosizable and non-autosizable text, we assembled a dataset of elements
with text from the Alexa top 500 that either: (1) were too small and could be boosted safely, or (2) would break
layout if boosted. With this labeled dataset, we then trained binary decision trees to classify the data. Each
decision tree was trained with a number of hyperparameters: namely, maximum depth, minimum leaf size, and the
amount of bias towards negative samples (i.e. the ratio of the weight of a non-autosizable sample relative to
the weight of an autosizable sample).

For each 3-tuple of these hyperparameters (800 in total: max depth between 3 and 10, min leaf size between 1 and
10 and bias between 1 and 10), for 5000 iterations each, we split the full dataset into a training dataset and
a cross-validation dataset, trained a decision tree using the training set, and tested against the cross-
validation set to compute average precision, recall, and overall accuracy for each tuple of hyperparameters.

The decision tree introduced in this patch was generated using a hand-picked set of hyperparameters (max depth
10, min leaf size 4, and negative bias 2) to provide a balance between precision scores (limiting layout
breakage) and recall score (ensuring that small text is mostly autosized), while optimizing for overall
accuracy. Cross-validation scores predict that the overall accuracy of this classifier is approximately 70%, up
from the current accuracy in trunk (~53%).

  • rendering/style/RenderStyle.h:

Grow the width of autosizeStatus from 4 to 8 (notably, this does not increase the size of RenderStyle).

  • rendering/style/TextSizeAdjustment.cpp:

(WebCore::AutosizeStatus::updateStatus):
(WebCore::AutosizeStatus::shouldSkipSubtree const): Deleted.

  • rendering/style/TextSizeAdjustment.h:

Introduce new text autosizing state flags, and remove some existing ones.

LayoutTests:

Rebaseline an existing text autosizing test, and introduce some new test cases that correspond to several common
patterns of autosizable (or non-autosizable) text on websites that were surveyed.

  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-after-changing-initial-scale.html:
  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates-expected.txt: Added.
  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html: Renamed from LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-skip.html.

Rename this existing layout test too, to avoid using the term "skip" in the name of a layout test.

  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-skip-expected.txt: Removed.
6:21 PM Changeset in webkit [246780] by commit-queue@webkit.org
  • 103 edits
    1 delete in trunk

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

revert to do patch in a different way. (Requested by keith_mi_
on #webkit).

Reverted changeset:

"All prototypes should call didBecomePrototype()"
https://bugs.webkit.org/show_bug.cgi?id=196315
https://trac.webkit.org/changeset/246714

6:07 PM Changeset in webkit [246779] by Kocsen Chung
  • 1 copy in tags/Safari-608.1.31.0.1

Tag Safari-608.1.31.0.1.

6:05 PM Changeset in webkit [246778] by Kocsen Chung
  • 1 copy in tags/Safari-608.1.31.1.1

Tag Safari-608.1.31.1.1.

5:56 PM Changeset in webkit [246777] by Kocsen Chung
  • 7 edits in tags/Safari-607.3.5/Source

Versioning.

5:49 PM Changeset in webkit [246776] by Kocsen Chung
  • 1 copy in tags/Safari-607.3.5

Tag Safari-607.3.5.

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

Revert "-[WKWebsiteDataStore removeDataOfTypes:modifiedSince:completionHandler:] doesn't delete _WKWebsiteDataTypeCredentials"

See <rdar://problem/52077293>

This reverts commit d86464be5509e2e6dbc7356cfd802e6b4e14b350.

5:06 PM Changeset in webkit [246774] by Alan Coon
  • 12 edits in branches/safari-608.1.31.0-branch

Revert r246530. rdar://problem/52020968

5:00 PM Changeset in webkit [246773] by Kocsen Chung
  • 12 edits in branches/safari-608.1.31.1-branch

Revert r246530. rdar://problem/52020968

4:52 PM Changeset in webkit [246772] by Alan Coon
  • 1 edit in branches/safari-607-branch/Source/JavaScriptCore/bytecode/CodeBlock.cpp

Apply patch. rdar://problem/51927634

4:46 PM Changeset in webkit [246771] by Kocsen Chung
  • 7 edits in branches/safari-608.1.31.1-branch/Source

Versioning.

4:45 PM Changeset in webkit [246770] by sihui_liu@apple.com
  • 6 edits in trunk

REGRESSION (r244436): IndexedDB Uint8Array returned as ArrayBuffer
https://bugs.webkit.org/show_bug.cgi?id=198738
<rdar://problem/51614053>

Reviewed by Brady Eidson.

In InexedDB, two binary keys are the same as long as their data is the same.

Modified tests: storage/indexeddb/key-type-binary.html

storage/indexeddb/key-type-binary-private.html

  • bindings/js/IDBBindingUtilities.cpp:

(WebCore::injectIDBKeyIntoScriptValue):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneDeserializer::readArrayBufferView):

4:37 PM Changeset in webkit [246769] by Kocsen Chung
  • 1 copy in branches/safari-608.1.31.1-branch

New branch.

4:26 PM Changeset in webkit [246768] by sihui_liu@apple.com
  • 5 edits in trunk/Source/WebCore

Remove WebSQL quirk for nytimes.com
https://bugs.webkit.org/show_bug.cgi?id=199175

Reviewed by Geoffrey Garen.

Removed unused code.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateRuntimeEnableConditionalString):

  • bindings/scripts/IDLAttributes.json:
  • page/Quirks.cpp:

(WebCore::Quirks::hasBrokenEncryptedMediaAPISupportQuirk const):
(WebCore::Quirks::hasWebSQLSupportQuirk const): Deleted.

  • page/Quirks.h:
4:00 PM Changeset in webkit [246767] by beidson@apple.com
  • 4 edits in trunk/Source

Null deref in WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad.
<rdar://problem/51535942> and https://bugs.webkit.org/show_bug.cgi?id=199123

Reviewed by Andy Estes.

Source/WebCore:

  • loader/FrameLoaderStateMachine.h:

(WebCore::FrameLoaderStateMachine::stateForDebugging const):

Source/WebKit:

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad): Properly detect this null DocumentLoader

and try to learn more about the state of things.

3:44 PM Changeset in webkit [246766] by Simon Fraser
  • 4 edits
    2 adds in trunk

REGRESSION (r246725 ): Crashes on twitch.tv
https://bugs.webkit.org/show_bug.cgi?id=199176
Source/WebCore:

rdar://problem/52071249

Reviewed by Zalan Bujtas.

With a composited negative z-index child inside a scroller, we can register the overflow scroll
proxy node before we've traversed the overflow layer, so it that layer hasn't got its OverflowScrollingNode
yet. Thus, AsyncScrollingCoordinator::setRelatedOverflowScrollingNodes() can be called with an empty vector.
Avoid crashing when this happens.

Test: scrollingcoordinator/scrolling-tree/scroller-with-negative-z-child.html

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::setRelatedOverflowScrollingNodes):

  • page/scrolling/cocoa/ScrollingTreeOverflowScrollProxyNode.mm:

(WebCore::ScrollingTreeOverflowScrollProxyNode::commitStateBeforeChildren):

LayoutTests:

Reviewed by Zalan Bujtas.

  • scrollingcoordinator/scrolling-tree/scroller-with-negative-z-child-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/scroller-with-negative-z-child.html: Added.
3:29 PM Changeset in webkit [246765] by commit-queue@webkit.org
  • 8 edits in trunk

Add Array.prototype.{flat,flatMap} to unscopables
https://bugs.webkit.org/show_bug.cgi?id=194322

Patch by Alexey Shvayka <Alexey Shvayka> on 2019-06-24
Reviewed by Keith Miller.

JSTests:

  • stress/unscopables.js: Fix test.
  • test262/expectations.yaml: Mark 2 test cases as passing.

Source/JavaScriptCore:

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):

LayoutTests:

  • js/array-unscopables-properties-expected.txt:
  • js/script-tests/array-unscopables-properties.js:
3:22 PM Changeset in webkit [246764] by Chris Dumez
  • 5 edits in trunk/Source

Pages using Google's anti-flicker optimization may take ~5 seconds to do initial paint
https://bugs.webkit.org/show_bug.cgi?id=199173
<rdar://problem/45968770>

Reviewed by Geoffrey Garen.

Source/WebCore:

Pages using Google's anti-flicker optimization [1] take ~5 seconds to do initial paint when
analytics.js load is blocked by a content blocker.

To address the issue, this patch introduces a quirk behind an experimental feature flag that
calls window.dataLayer.hide.end() on the page when the load of https://www.google-analytics.com/analytics.js
is blocked by a content blocker. Note that this is more robust than dropping the 'async-hide'
class from document.documentElement since the class name is customizable by the caller.
A message is logged in the console when the quirk causes window.dataLayer.hide.end() to get called
early.

[1] https://developers.google.com/optimize/

  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::processContentRuleListsForLoad):

  • page/Settings.yaml:

Source/WebKit:

Add experimental feature for the quirk.

  • Shared/WebPreferences.yaml:
2:37 PM Changeset in webkit [246763] by wilander@apple.com
  • 9 edits in trunk/Source

Remove IsITPFirstPartyWebsiteDataRemovalEnabled as runtime check
https://bugs.webkit.org/show_bug.cgi?id=199164
<rdar://problem/52061147>

Reviewed by Brent Fulgham.

Source/WebCore:

No new tests. Just a removal of a runtime feature check. The functionality
already has a layout test.

We've had this toggle as a safety thing since mid-March. No need for it any longer.

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::isITPDatabaseEnabled const):
(WebCore::RuntimeEnabledFeatures::setIsITPFirstPartyWebsiteDataRemovalEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::isITPFirstPartyWebsiteDataRemovalEnabled const): Deleted.

Source/WebKit:

We've had this toggle as a safety thing since mid-March. No need for it any longer.

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::shouldRemoveAllButCookiesFor const):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

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

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • Shared/WebPreferences.yaml:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

1:16 PM Changeset in webkit [246762] by Alan Coon
  • 2 edits in branches/safari-608.1.31.0-branch/Source/WebCore

Cherry-pick r246706. rdar://problem/51161612

Nullptr crash in DeleteSelectionCommand::handleGeneralDelete
https://bugs.webkit.org/show_bug.cgi?id=199126

Reviewed by Wenson Hsieh.

Added null checks to handleGeneralDelete as well as mergeParagraphs which runs after handleGeneralDelete to be defensive.

Unfortunately no new tests since there is no reproducible test case.

  • editing/DeleteSelectionCommand.cpp: (WebCore::DeleteSelectionCommand::handleGeneralDelete): (WebCore::DeleteSelectionCommand::mergeParagraphs):

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

1:09 PM Changeset in webkit [246761] by Alan Coon
  • 7 edits in branches/safari-608.1.31.2-branch/Source

Versioning.

1:04 PM Changeset in webkit [246760] by Alan Coon
  • 7 edits in branches/safari-608.1.31.0-branch/Source

Versioning.

12:57 PM Changeset in webkit [246759] by jer.noble@apple.com
  • 13 edits
    4 adds in trunk

iOS 12.2 Drawing portrait video to canvas is sideways
https://bugs.webkit.org/show_bug.cgi?id=196772
<rdar://problem/49781802>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/video-orientation-canvas.html

Move rotation code into its own ImageRotationSessionVT class for re-use across
all existing classes with rotation operations. Should slightly increase performance
for painting rotated media files, as the rotation only occurs once per frame, rather
than once per drawing operation.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.h:

(WebCore::ImageDecoderAVFObjC::RotationProperties::isIdentity const): Deleted.

  • platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:

(WebCore::ImageDecoderAVFObjC::readTrackMetadata):
(WebCore::ImageDecoderAVFObjC::storeSampleBuffer):
(WebCore::ImageDecoderAVFObjC::setTrack):
(WebCore::transformToRotationProperties): Deleted.

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastPixelBuffer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput):

  • platform/graphics/cv/ImageRotationSessionVT.h: Added.

(WebCore::ImageRotationSessionVT::RotationProperties::isIdentity const):
(WebCore::ImageRotationSessionVT::rotationProperties const):
(WebCore::ImageRotationSessionVT::rotatedSize):

  • platform/graphics/cv/ImageRotationSessionVT.mm: Added.

(WebCore::transformToRotationProperties):
(WebCore::ImageRotationSessionVT::ImageRotationSessionVT):
(WebCore::ImageRotationSessionVT::rotate):

  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.h:
  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm:

(WebCore::rotationToAngle):
(WebCore::RealtimeOutgoingVideoSourceCocoa::rotatePixelBuffer):
(WebCore::computeRotatedWidthAndHeight): Deleted.

LayoutTests:

  • media/content/no-rotation.mp4:
  • media/media-source/only-bcp47-language-tags-accepted-as-valid-expected.txt:
  • media/video-orientation-canvas-expected.txt: Added.
  • media/video-orientation-canvas.html: Added.
  • media/video-test.js:

(waitFor):

12:51 PM Changeset in webkit [246758] by Alan Coon
  • 1 copy in branches/safari-608.1.31.2-branch

New branch.

12:47 PM Changeset in webkit [246757] by dbates@webkit.org
  • 9 edits in trunk

m_focusedElement != &element in WebPage::elementDidBlur() sometimes
https://bugs.webkit.org/show_bug.cgi?id=198928
<rdar://problem/51814327>

Reviewed by Brent Fulgham.

Source/WebKit:

This can happen when the focused editable element is inside a nested frame and a person
taps outside that frame. For reasons that seem lost to time, WebKit2 on iOS would mutate
the focused frame whenever computing selection positioning information (say, for a tap).
This "quirk" was added in r163476, but that code has go through multiple iterations and
is no longer comparable to the current code. Yet, the original mutation of the focused
frame remained. As a result the UI process and Web process go out of sync with respect
to what each thinks is the focused element and this visually manifest itself in at least
two ways:

  1. A non-sensical DOM focus event would be dispatched at the frame tapped, but we would keep the focused element focused.
  1. Because we would keep the focused element focused in (1), even though its frame is not focused, the keyboard would be active (software keyboard on screen or candidate bar on screen if a hardware keyboard is attached), but appear unresponsive: any keys pressed would not cause text to be typed into the editable field.

Because of (1) it was possible for m_focusedElement != &element in WebPage::elementDidBlur().
When this happens the UI process would never receive an ElementDidBlur message and hence would
not clear out the focused element state and hide the keyboard.

We neither do this frame focus mutation in Legacy WebKit on iOS nor Mac. Let's remove this quirk.
If it turns out that it causes a compatibility issue then we will be in a better position to
understand its purpose and consider bringing this quirk back, if needed.

  • Shared/ios/InteractionInformationRequest.cpp:

(WebKit::InteractionInformationRequest::encode const):
(WebKit::InteractionInformationRequest::decode):
(WebKit::InteractionInformationRequest::isValidForRequest):
(WebKit::InteractionInformationRequest::isApproximatelyValidForRequest):

  • Shared/ios/InteractionInformationRequest.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _requestActivatedElementAtPosition:completionBlock:]):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _webTouchEventsRecognized:]):
Remove the readOnly field.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::selectionPositionInformation): Remove code to mutate the focused frame.

LayoutTests:

Update test result now that we do not mutate the focused frame on tap.

  • TestExpectations: Skip problematic test editing/deleting/smart-delete-paragraph-003.html;

See <https://bugs.webkit.org/show_bug.cgi?id=198928#c16>, <https://bugs.webkit.org/show_bug.cgi?id=198928#c17>,
and <https://bugs.webkit.org/show_bug.cgi?id=199039> for more details.

  • fast/events/ios/should-be-able-to-dismiss-form-accessory-after-tapping-outside-iframe-with-focused-field-expected.txt:
12:47 PM Changeset in webkit [246756] by Alan Coon
  • 1 copy in branches/safari-608.1.31.0-branch

New branch.

12:37 PM Changeset in webkit [246755] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[StyleResolver] Pass RenderStyle& instead of RenderStyle* to updateFont() related functions.
https://bugs.webkit.org/show_bug.cgi?id=199167
<rdar://problem/52062669>

Reviewed by Antti Koivisto.

It is expected to have a valid RenderStyle object here (and existing code relies on it).

  • css/StyleResolver.cpp:

(WebCore::checkForOrientationChange):
(WebCore::StyleResolver::updateFont):
(WebCore::StyleResolver::checkForTextSizeAdjust):
(WebCore::StyleResolver::checkForZoomChange):
(WebCore::StyleResolver::checkForGenericFamilyChange):

  • css/StyleResolver.h:
12:32 PM Changeset in webkit [246754] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[Cocoa] Avoid creating a PlatformMediaSessionManager when the WebProcess is suspended or resumed
https://bugs.webkit.org/show_bug.cgi?id=199160

Reviewed by Brent Fulgham.

When the WebProcess suspends or resumes, the PlatformMediaSessionManager is notified about this.
Avoid creating a new PlatformMediaSessionManager if it does not already exist.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::actualPrepareToSuspend):
(WebKit::WebProcess::cancelPrepareToSuspend):
(WebKit::WebProcess::processDidResume):

12:02 PM Changeset in webkit [246753] by graouts@webkit.org
  • 4 edits
    1 add in trunk/LayoutTests

[Pointer Events WPT] Unskip imported/w3c/web-platform-tests/pointerevents/pointerlock/pointerevent_coordinates_when_locked.html
https://bugs.webkit.org/show_bug.cgi?id=197007

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Update the test from the Web Platform Tests repository following the fix for https://github.com/web-platform-tests/wpt/issues/16406.

  • web-platform-tests/pointerevents/pointerlock/pointerevent_coordinates_when_locked-expected.txt: Added.
  • web-platform-tests/pointerevents/pointerlock/pointerevent_coordinates_when_locked.html:

LayoutTests:

This test now works reliably, even if it fails the actual assertions.

  • platform/mac/TestExpectations:
12:00 PM Changeset in webkit [246752] by graouts@webkit.org
  • 7 edits
    1 add
    3 deletes in trunk

[Pointer Events WPT] Unskip imported/w3c/web-platform-tests/pointerevents/pointerevent_lostpointercapture_is_first.html
https://bugs.webkit.org/show_bug.cgi?id=197005

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/pointerevents/pointerevent_lostpointercapture_is_first-expected.txt: Added.
  • web-platform-tests/resources/testdriver-vendor.js:

(dispatchMouseActions): We need to disable dragMode for the eventSender or else the "pointermove" events in the test will
not be dispatched as there is no mouseUp() call in the test's event sequence.

Source/WebCore:

We were calling processPendingPointerCapture() at the wrong time, calling in after dispatching a PointerEvent rather than before.
We now do this correctly in the consolidated PointerCaptureController::dispatchEvent() method, which we call for dispatching all
PointerEvents, save for gotpointercapture and lostpointercapture since these should not yield the processing of the pending pointer
capture per the spec.

This uncovered a couple of new issues. First, since we would now call processPendingPointerCapture() and dispatch a lostpointercapture
event earlier, the alternative lostpointercapture dispatch when an element is removed (which is dispatched asynchronously on the
document) would be dispatched *after* dispatching the event in processPendingPointerCapture(). We now check in processPendingPointerCapture()
whether the event target is connected to fix this. This makes sure pointerevent_lostpointercapture_for_disconnected_node.html doesn't regress.

Finally, we must also call processPendingPointerCapture() when implicitly releasing pointer capture during handling of a "pointerup" event.
This ensures that pointerevent_releasepointercapture_invalid_pointerid.html doesn't regress.

As a result of all these changes, we now pass imported/w3c/web-platform-tests/pointerevents/pointerevent_lostpointercapture_is_first.html reliably.

  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::dispatchEventForTouchAtIndex):
(WebCore::PointerCaptureController::dispatchEvent): We now more closely adhere to the spec when determining what the pointer capture target is by
only checking for the target override. We can now do this safely since we call processPendingPointerCapture() before and not after event dispatch.
(WebCore::PointerCaptureController::pointerEventWasDispatched):
(WebCore::PointerCaptureController::processPendingPointerCapture): Cache the pending target override to make sure that dispatching a "gotpointercapture"
or "lostpointercapture" event during this function does not alter it until the next call is made when the next event is dispatched.

LayoutTests:

  • platform/mac-wk1/imported/w3c/web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover-expected.txt: Removed.
  • platform/mac-highsierra-wk1/imported/w3c/web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover-expected.txt: Removed.
  • platform/mac-highsierra/imported/w3c/web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover-expected.txt: Removed.

Since we've fixed the issue with event dispatch in WK1, we can remove these platform-specific expectations.

  • platform/mac/TestExpectations: We no longer skip this test which works reliably.
  • pointerevents/mouse/pointer-capture.html: We modify this test to correctly expect the "gotpointercapture" event only once the next

pointer event has been dispatched.

11:59 AM Changeset in webkit [246751] by Michael Catanzaro
  • 2 edits in trunk/Tools

contributors.json not canonicalized since r243297
https://bugs.webkit.org/show_bug.cgi?id=199161

Reviewed by Alexey Proskuryakov.

Canonicalize it using 'validate-committer-lists --canonicalize'

  • Scripts/webkitpy/common/config/contributors.json:
11:56 AM Changeset in webkit [246750] by Kocsen Chung
  • 7 edits in branches/safari-607-branch/Source

Versioning.

11:52 AM Changeset in webkit [246749] by Kocsen Chung
  • 7 edits
    4 adds in branches/safari-607-branch

Cherry-pick r246372. rdar://problem/51927634

[JSC] Polymorphic call stub's slow path should restore callee saves before performing tail call
https://bugs.webkit.org/show_bug.cgi?id=198770

Reviewed by Saam Barati.

JSTests:

  • stress/poly-call-stub-slow-path-should-restore-callee-saves-when-doing-tail-call.js: Added. (test):

Source/JavaScriptCore:

Polymorphic call stub is a bit specially patched in JS call site. Typical JS call site for tail calls
are the following.

if (callee == patchableCallee) {

restore callee saves for tail call
prepare for tail call
jump to the target function

}
restore callee saves for slow path
call the slow path function

And linking patches patchableCallee, target function, and slow path function. But polymorphic call stub
patches the above if statement with the jump to the stub.

jump to the polymorphic call stub

This is because polymorphic call stub wants to use CallFrameShuffler to get scratch registers. As a result,
"restore callee saves for tail call" thing needs to be done in the polymorphic call stubs. While it is
correctly done for the major cases, we have slowPath skips, and that path missed restoring callee saves.
This skip happens if the callee is non JSCell or non JS function, so typically, InternalFunction is handled
in that path.

This patch does that skips after restoring callee saves.

  • bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::CallLinkInfo):
  • bytecode/CallLinkInfo.h: (JSC::CallLinkInfo::setUpCall): (JSC::CallLinkInfo::calleeGPR): (JSC::CallLinkInfo::setCalleeGPR): Deleted.
  • jit/Repatch.cpp: (JSC::revertCall): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall):
  • jit/Repatch.h:
  • jit/ThunkGenerators.cpp: (JSC::virtualThunkFor):

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

11:52 AM Changeset in webkit [246748] by Kocsen Chung
  • 4 edits
    1 add in branches/safari-607-branch

Cherry-pick r243966. rdar://problem/51927634

[JSC] CallLinkInfo should clear Callee or CodeBlock even if it is unlinked by jettison
https://bugs.webkit.org/show_bug.cgi?id=196683

Reviewed by Saam Barati.

JSTests:

  • stress/clear-callee-or-codeblock-in-calllinkinfo-even-cleared-by-jettison.js: Added. (foo):

Source/JavaScriptCore:

In r243626, we stop repatching CallLinkInfo when the CallLinkInfo is held by jettisoned CodeBlock.
But we still need to clear the Callee or CodeBlock since they are now dead. Otherwise, CodeBlock's
visitWeak eventually accesses this dead cells and crashes because the owner CodeBlock of CallLinkInfo
can be still live.

We also move all repatching operations from CallLinkInfo.cpp to Repatch.cpp for consistency because the
other repatching operations in CallLinkInfo are implemented in Repatch.cpp side.

  • bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::setCallee): (JSC::CallLinkInfo::clearCallee):
  • jit/Repatch.cpp: (JSC::linkFor): (JSC::revertCall):

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

11:52 AM Changeset in webkit [246747] by Kocsen Chung
  • 6 edits
    1 add in branches/safari-607-branch

Cherry-pick r243626. rdar://problem/51927634

CodeBlock::jettison() should disallow repatching its own calls
https://bugs.webkit.org/show_bug.cgi?id=196359
<rdar://problem/48973663>

Reviewed by Saam Barati.

JSTests:

  • stress/call-link-info-osrexit-repatch.js: Added. (foo):

Source/JavaScriptCore:

CodeBlock::jettison() calls CommonData::invalidate, which replaces the hlt
instruction with the jump to OSR exit. However, if the hlt was immediately
followed by a call to the CodeBlock being jettisoned, we would write over the
OSR exit address while unlinking all the incoming CallLinkInfos later in
CodeBlock::jettison().

Change it so that we set a flag, clearedByJettison, in all the CallLinkInfos
owned by the CodeBlock being jettisoned. If the flag is set, we will avoid
repatching the call during unlinking. This is safe because this call will never
be reachable again after the CodeBlock is jettisoned.

  • bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::CallLinkInfo): (JSC::CallLinkInfo::setCallee): (JSC::CallLinkInfo::clearCallee): (JSC::CallLinkInfo::setCodeBlock): (JSC::CallLinkInfo::clearCodeBlock):
  • bytecode/CallLinkInfo.h: (JSC::CallLinkInfo::clearedByJettison): (JSC::CallLinkInfo::setClearedByJettison):
  • bytecode/CodeBlock.cpp: (JSC::CodeBlock::jettison):
  • jit/Repatch.cpp: (JSC::revertCall):

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

11:52 AM Changeset in webkit [246746] by Kocsen Chung
  • 2 edits in branches/safari-607-branch/Source/JavaScriptCore

Cherry-pick r246507. rdar://problem/51927645

Concurrent GC should check the conn before starting a new collection cycle
https://bugs.webkit.org/show_bug.cgi?id=198913
<rdar://problem/49515149>

Reviewed by Filip Pizlo.

Heap::requestCollection tries to steal the conn as an optimization to avoid waking up the collector
thread if it's idle. We determine if the collector is idle by ensuring that there are no pending collections
and that the current GC phase is NotRunning. However, that's not safe immediately after the concurrent
GC has finished processing the last pending request. The collector thread will runEndPhase and immediately
start runNotRunningPhase, without checking if it still has the conn. If the mutator has stolen the conn in
the mean time, this will lead to both threads collecting concurrently, and eventually we'll crash in checkConn,
since the collector is running but doesn't have the conn anymore.

To solve this, we check if we still have the conn after holding the lock in runNotRunningPhase, in case the mutator
has stolen the conn. Ideally, we wouldn't let the mutator steal the conn in the first place, but that doesn't seem
trivial to determine.

  • heap/Heap.cpp: (JSC::Heap::runNotRunningPhase):

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

11:52 AM Changeset in webkit [246745] by Kocsen Chung
  • 12 edits
    2 adds in branches/safari-607-branch

Cherry-pick r246505. rdar://problem/51927642

[JSC] Introduce DisposableCallSiteIndex to enforce type-safety
https://bugs.webkit.org/show_bug.cgi?id=197378

Reviewed by Saam Barati.

JSTests:

  • stress/disposable-call-site-index-with-call-and-this.js: Added. (foo): (bar):
  • stress/disposable-call-site-index.js: Added. (foo): (bar):

Source/JavaScriptCore:

Some of CallSiteIndex are disposable. This is because some of CallSiteIndex are allocated and freed at runtime (not DFG/FTL compile time).
The example is CallSiteIndex for exception handler in GCAwareJITStubRoutineWithExceptionHandler. If we do not allocate and free CallSiteIndex,
we will create a new CallSiteIndex continuously and leak memory.

The other CallSiteIndex are not simply disposable because the ownership model is not unique one. They can be shared between multiple clients.
But not disposing them is OK because they are static one: they are allocated when compiling DFG/FTL, and we do not allocate such CallSiteIndex
at runtime.

To make this difference explicit and avoid disposing non-disposable CallSiteIndex accidentally, we introduce DisposableCallSiteIndex type, and
enforce type-safety to some degree.

We also correctly update the DisposableCallSiteIndex => CodeOrigin table when we are reusing the previously used DisposableCallSiteIndex.

  • bytecode/CodeBlock.cpp: (JSC::CodeBlock::newExceptionHandlingCallSiteIndex): (JSC::CodeBlock::removeExceptionHandlerForCallSite):
  • bytecode/CodeBlock.h:
  • bytecode/PolymorphicAccess.cpp: (JSC::AccessGenerationState::callSiteIndexForExceptionHandling): (JSC::PolymorphicAccess::regenerate):
  • bytecode/PolymorphicAccess.h: (JSC::AccessGenerationState::callSiteIndexForExceptionHandling): Deleted.
  • dfg/DFGCommonData.cpp: (JSC::DFG::CommonData::addUniqueCallSiteIndex): (JSC::DFG::CommonData::addDisposableCallSiteIndex): (JSC::DFG::CommonData::removeDisposableCallSiteIndex): (JSC::DFG::CommonData::removeCallSiteIndex): Deleted.
  • dfg/DFGCommonData.h:
  • interpreter/CallFrame.h: (JSC::DisposableCallSiteIndex::DisposableCallSiteIndex): (JSC::DisposableCallSiteIndex::fromCallSiteIndex):
  • jit/GCAwareJITStubRoutine.cpp: (JSC::GCAwareJITStubRoutineWithExceptionHandler::GCAwareJITStubRoutineWithExceptionHandler): (JSC::GCAwareJITStubRoutineWithExceptionHandler::observeZeroRefCount): (JSC::createJITStubRoutine):
  • jit/GCAwareJITStubRoutine.h:
  • jit/JITInlineCacheGenerator.h:

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

11:49 AM Changeset in webkit [246744] by ysuzuki@apple.com
  • 2 edits in trunk/Source/bmalloc

[bmalloc] IsoHeap shared tier threshold is small
https://bugs.webkit.org/show_bug.cgi?id=199145

Reviewed by Saam Barati.

We accidentally picked 3 for the shared tier threshold. While this is OK because the important part of IsoHeap shared tier is putting
small # of shared objects before tiering up to the page-based allocation, increasing this threshold can potentially improve memory footprint.
This patch increases this threshold from 3 to 8. A/B test says that this offers stable 0.25% improvement in PLUM2.

  • bmalloc/IsoHeapImpl.h:
11:20 AM Changeset in webkit [246743] by dean_johnson@apple.com
  • 2 edits in trunk/Websites/perf.webkit.org

[perf.webkit.org] Update summary page calculations to use mean instead of median
https://bugs.webkit.org/show_bug.cgi?id=199050

Reviewed by Dewei Zhu.

  • public/v3/pages/summary-page.js:

(SummaryPageConfigurationGroup): Updated 'median' references to 'mean'.
(SummaryPageConfigurationGroup.set _startAndEndPointForTimeRange): Factored out logic for finding data
points in a timeSeries, within a specified timeRange.
(SummaryPageConfigurationGroup.set _meanForTimeRange): New. Returns the mean of a timeSeries across a
given timeRange.

11:18 AM Changeset in webkit [246742] by Jonathan Bedard
  • 2 edits in trunk/Tools

webkitpy: Build style should be lower-case
https://bugs.webkit.org/show_bug.cgi?id=199158

Reviewed by Aakash Jain.

  • Scripts/webkitpy/test/main.py:

(Tester._run_tests): Make all styles lower-case.

11:06 AM Changeset in webkit [246741] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] Remove iOS queue from old EWS and dashboard
https://bugs.webkit.org/show_bug.cgi?id=199150

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js:
  • QueueStatusServer/config/queues.py:
10:38 AM Changeset in webkit [246740] by mark.lam@apple.com
  • 5 edits
    1 add in trunk

ArraySlice needs to keep the source array alive.
https://bugs.webkit.org/show_bug.cgi?id=197374
<rdar://problem/50304429>

Reviewed by Michael Saboff and Filip Pizlo.

JSTests:

  • stress/array-slice-must-keep-source-array-alive.js: Added.

Source/JavaScriptCore:

The implementation of the FTL ArraySlice intrinsics may GC while allocating the
result array and its butterfly. Previously, ArraySlice already keeps the source
butterfly alive in order to copy from it to the new butterfly after the allocation.
Unfortunately, this is not enough. We also need to keep the source array alive
so that GC will scan the values in the butterfly as well. Note: the butterfly
does not have a visitChildren() method to do this scan. It's the parent object's
responsibility to do the scanning.

This patch fixes this by introducing a keepAlive() utility method, and we use it
to keep the source array alive while allocating the result array and butterfly.

keepAlive() works by using a patchpoint to communicate to B3 that a value (the
source array in this case) is still in use. It also uses a fence to keep B3 from
relocating the patchpoint, which may defeat the fix.

For the DFG's SpeculativeJIT::compileArraySlice(), we may have lucked out and the
source array cell is kept alive. This patch makes it explicit that we should
keep its cell alive till after the result array has been allocated.

For the Baseline JIT and LLInt, we use the arrayProtoFuncSlice() runtime function
and there is no issue because the source array (in "thisObj") is in the element
copying loop that follows the allocation of the result array. However, for
documentation purposes, this patch adds a call to HeapCell::use() to indicate that
the source array need to kept alive at least until after the allocation of the
result array.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileArraySlice):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileArraySlice):
(JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):
(JSC::FTL::DFG::LowerDFGToB3::keepAlive):

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncSlice):

10:37 AM Changeset in webkit [246739] by Ryan Haddad
  • 2 edits in trunk/Tools

API Test [Mojave+ WK2 Debug ] TestWebKitAPI.WKAttachmentTestsMac.InsertDroppedFilePromisesAsAttachments is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=198795

Unreviewed test gardening.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(TestWebKitAPI::TEST): Disable flaky test.

8:26 AM Changeset in webkit [246738] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] Enable iOS-12-Build queue on new EWS
https://bugs.webkit.org/show_bug.cgi?id=199149

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/config.json: Enable iOS-12-Build-EWS trigger. Also temporarily share ews152 and ews154 with

this queue.

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

(StatusBubble): Enable ios status-bubble. Also display the ios bubble first (left). Going forward
will keep the builders to the left and testers to the right.

8:11 AM Changeset in webkit [246737] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] Upload test results after running layout-tests
https://bugs.webkit.org/show_bug.cgi?id=199120

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(RunWebKitTests.evaluateCommand):

  • BuildSlaveSupport/ews-build/steps_unittest.py: Added unit-tests.
8:03 AM Changeset in webkit [246736] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Web Inspector: AXI: Audit: image label test is throwing spurious errors on elements with existing alt attr, but no value: <img alt>
https://bugs.webkit.org/show_bug.cgi?id=194754

Patch by Greg Doolittle <gr3g@apple.com> on 2019-06-24
Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/img-alt-attribute-unassigned-value.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::computedRoleString const):

LayoutTests:

  • accessibility/img-alt-attribute-unassigned-value-expected.txt: Added.
  • accessibility/img-alt-attribute-unassigned-value.html: Added.
  • inspector/dom/getAccessibilityPropertiesForNode-expected.txt:
7:58 AM Changeset in webkit [246735] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] EWS should provide option to download layout test results zip file
https://bugs.webkit.org/show_bug.cgi?id=199121

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(ExtractTestResults.resultsDownloadURL): Method to return layout test result zip file url.
(ExtractTestResults.addCustomURLs): Add url to download layout test results zip file.

7:52 AM Changeset in webkit [246734] by Adrian Perez de Castro
  • 5 edits in trunk/Source

[WPE][GTK] Fixes for compilation with unified builds disabled
https://bugs.webkit.org/show_bug.cgi?id=199155

Reviewed by Michael Catanzaro.

Source/WebCore:

No new tests needed.

  • rendering/LayerAncestorClippingStack.h: Add missing inclusion of RenderLayer.h

Source/WebKit:

  • NetworkProcess/glib/DNSCache.cpp: Add missing inclusion of wtf/glib/RunLoopSourcePriority.h
  • NetworkProcess/glib/DNSCache.h: Add missing forward declaration for GInetAddress
7:35 AM Changeset in webkit [246733] by Michael Catanzaro
  • 4 edits in trunk

Add user agent quirk for Google Drive
https://bugs.webkit.org/show_bug.cgi?id=199153

Reviewed by Carlos Garcia Campos.

Source/WebCore:

This suppresses an unsupported browser warning.

  • platform/UserAgentQuirks.cpp:

(WebCore::urlRequiresMacintoshPlatform):
(WebCore::urlRequiresLinuxDesktopPlatform):

Tools:

  • TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST):

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

[GTK] Navigation gesture should use dark fallback bg color on dark themes
https://bugs.webkit.org/show_bug.cgi?id=199104

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

Use theme_base_color instead of white background for swipe gesture fallback if no snapshot is found and
the page did not specify a color. This allows it to use dark colors for dark themes. If the color was
not found, still fall back to white.

  • UIProcess/gtk/ViewGestureControllerGtk.cpp:

(WebKit::ViewGestureController::beginSwipeGesture):

5:31 AM WebKitGTK/2.24.x edited by Michael Catanzaro
(diff)
4:33 AM Changeset in webkit [246731] by cturner@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer][MSE] Pausing video sometimes causes skip to finish
https://bugs.webkit.org/show_bug.cgi?id=197355

Reviewed by Philippe Normand.

Covered by existing tests.

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:

(WebCore::MediaPlayerPrivateGStreamerMSE::currentMediaTime const):
Assuming that when m_eosPending is on and we're paused() that the
network resource is fully loaded and the end is reached is clearly
wrong. Whether this is now correct is unclear...

4:27 AM Changeset in webkit [246730] by cturner@igalia.com
  • 3 edits in trunk/Source/WebCore

[GStreamer] Volume level sometimes changes inappropriately
https://bugs.webkit.org/show_bug.cgi?id=197358

Reviewed by Xabier Rodriguez-Calvar.

Be consistent with our application of volume scaling. We were
setting volumes using cubic interpolation in setVolume() and using
the inverse in volume(); however setting initial volumes was done
linearly in setStreamVolumeElement, which was causing strange
jumps in the volume level at non-deterministic times. The fix
looks to be that we should use linear interpolation consistently,
since PulseAudio already applies cubic scaling to software
volumes.

Covered by existing tests.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::paused const): Bump the
logging here to LOG level, it's very spammy at DEBUG.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::setVolume): Switch to
linear interpolation.
(WebCore::MediaPlayerPrivateGStreamerBase::volume const): Ditto.
(WebCore::MediaPlayerPrivateGStreamerBase::notifyPlayerOfVolumeChange):
Ditto.
(WebCore::MediaPlayerPrivateGStreamerBase::setStreamVolumeElement):
Ditto, and be consistent here with the API, do not set the raw
volume managed by MediaElement.

3:45 AM Changeset in webkit [246729] by graouts@webkit.org
  • 16 edits
    1 copy
    7 adds
    1 delete in trunk

[Pointer Events] Respect pointer capture when dispatching mouse boundary events and updating :hover
https://bugs.webkit.org/show_bug.cgi?id=198999
<rdar://problem/51979477>

Unreviewed.

Rolling back all changes made for this bug (r246728 + r246716 + r246674) as it regressed one test
(imported/w3c/web-platform-tests/pointerevents/pointerevent_mouse_pointercapture_in_frame.html).

LayoutTests/imported/w3c:

  • web-platform-tests/pointerevents/pointerevent_boundary_events_at_implicit_release_hoverable_pointers-expected.txt:
  • web-platform-tests/pointerevents/pointerevent_click_during_capture-expected.txt:
  • web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover-expected.txt:
  • web-platform-tests/pointerevents/pointerevent_setpointercapture_relatedtarget-expected.txt:

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::prepareMouseEvent):
(WebCore::Document::updateHoverActiveState):

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMousePressEvent):
(WebCore::EventHandler::handleMouseMoveEvent):
(WebCore::EventHandler::handleMouseReleaseEvent):
(WebCore::EventHandler::setCapturingMouseEventsElement):

  • page/EventHandler.h:
  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::releasePointerCapture):
(WebCore::PointerCaptureController::hasPointerCapture):
(WebCore::PointerCaptureController::dispatchEventForTouchAtIndex):
(WebCore::PointerCaptureController::dispatchEvent):
(WebCore::PointerCaptureController::processPendingPointerCapture):
(WebCore::PointerCaptureController::pointerCaptureElement): Deleted.

  • page/PointerCaptureController.h:
  • rendering/HitTestRequest.h:

(WebCore::HitTestRequest::includesAllElementsUnderPoint const):
(WebCore::HitTestRequest::pointerCaptureElementChanged const): Deleted.

LayoutTests:

  • platform/mac-highsierra-wk1/imported/w3c/web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover-expected.txt: Added.
  • platform/mac-highsierra/imported/w3c/web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover-expected.txt: Added.
  • platform/mac-wk1/imported/w3c/web-platform-tests/pointerevents/pointerevent_boundary_events_at_implicit_release_hoverable_pointers-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/pointerevents/pointerevent_click_during_capture-expected.txt: Removed.
  • platform/mac-wk1/imported/w3c/web-platform-tests/pointerevents/pointerevent_mouse_pointercapture_in_frame-expected.txt: Added.
  • platform/mac-wk1/imported/w3c/web-platform-tests/pointerevents/pointerevent_setpointercapture_relatedtarget-expected.txt:
3:00 AM Changeset in webkit [246728] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

[Pointer Events] Respect pointer capture when dispatching mouse boundary events and updating :hover
https://bugs.webkit.org/show_bug.cgi?id=198999
<rdar://problem/52005663>

Reviewed by Dean Jackson.

We should only set the mouse events capturing element in EventHandler if we're dealing with mouse-originated Pointer Events (part 2).

  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::releasePointerCapture):

Note: See TracTimeline for information about the timeline view.