Timeline



Jul 22, 2019:

9:14 PM Changeset in webkit [247718] by mitz@apple.com
  • 7 copies
    1 add in releases/Apple/watchOS 5.3

Added a tag for watchOS 5.3.

9:08 PM Changeset in webkit [247717] by mitz@apple.com
  • 8 copies
    1 add in releases/Apple/iOS 12.4

Added a tag for iOS 12.4.

9:08 PM Changeset in webkit [247716] by mitz@apple.com
  • 9 copies
    1 add in releases/Apple/Safari 12.1.2

Added a tag for Safari12.1.2.

8:45 PM Changeset in webkit [247715] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught Exception: Breakpoint at specified location already exists.
https://bugs.webkit.org/show_bug.cgi?id=197034
<rdar://problem/50049004>

Reviewed by Joseph Pecoraro.

When "adjusting" a WI.Breakpoint (e.g. removing and then re-adding with a different
configuration), make sure to only re-add the WI.Breakpoint to the WI.Target it was just
removed from, rather to all WI.targets.

Since we iterate over WI.targets in both WI.DebuggerManager.prototype._setBreakpoint and
WI.DebuggerManager.prototype._removeBreakpoint, we ended up iterating WI.targets twice.

Each time the WI.Breakpoint is removed from a WI.Target, pass the WI.Target to the
callback given to WI.DebuggerManager.prototype._removeBreakpoint, so that the eventual
call to WI.DebuggerManager.prototype._setBreakpoint can reuse it as the specificTarget,
instead of iterating WI.targets (meaning we only iterate it once).

  • UserInterface/Controllers/DebuggerManager.js:

(WI.DebuggerManager.prototype.addBreakpoint):
(WI.DebuggerManager.prototype._removeBreakpoint.didRemoveBreakpoint):
(WI.DebuggerManager.prototype._breakpointDisplayLocationDidChange):
(WI.DebuggerManager.prototype._breakpointEditablePropertyDidChange):

7:43 PM Changeset in webkit [247714] by ysuzuki@apple.com
  • 15 edits in trunk/Source

[bmalloc] Each IsoPage gets 1MB VA because VMHeap::tryAllocateLargeChunk rounds up
https://bugs.webkit.org/show_bug.cgi?id=200024

Reviewed by Saam Barati.

Source/bmalloc:

When we allocate IsoHeap's page, we reused VMHeap::tryAllocateLargeChunk. However, this function is originally designed
to be used for Large allocation in bmalloc (e.g. allocating Chunk in bmalloc). As a result, this function rounds up the
requested size with 1MB (bmalloc::chunkSize). As a result, all IsoHeap's 16KB page gets 1MB VA while it just uses 16KB of
the allocated region. This leads to VA exhaustion since IsoHeap now uses 64x VA than we expected!

This patch fixes the above VA exhaustion issue by allocating a page by using tryVMAllocate. When allocating a page, we start
using a VM tag for IsoHeap. We discussed at e-mail and we decided reusing a VM tag previously assigned to CLoop Stack since
this is less profitable. Since this tag is not Malloc-related tag, Leaks tool can scan memory region conservatively without
registering allocated region into Zone, which was previously done in VMHeap and that's why we reused VMHeap for IsoHeap.

  • bmalloc/BVMTags.h:
  • bmalloc/IsoPage.cpp:

(bmalloc::IsoPageBase::allocatePageMemory):

  • bmalloc/IsoTLS.cpp:

(bmalloc::IsoTLS::ensureEntries):

  • bmalloc/VMAllocate.h:

(bmalloc::vmAllocate):

Source/JavaScriptCore:

Discussed and we decided to use this VM tag for IsoHeap instead of CLoop stack.

  • interpreter/CLoopStack.cpp:

(JSC::CLoopStack::CLoopStack):

Source/WebCore:

Changed how we interpret VM tags. Add IsoHeap VM tag support, and rename WebAssembly tag
to Gigacage tag.

  • page/ResourceUsageData.h:
  • page/ResourceUsageOverlay.h:
  • page/cocoa/ResourceUsageOverlayCocoa.mm:

(WebCore::HistoricResourceUsageData::HistoricResourceUsageData):

  • page/cocoa/ResourceUsageThreadCocoa.mm:

(WebCore::displayNameForVMTag):
(WebCore::categoryForVMTag):

Source/WTF:

Start using a VM tag for IsoHeap instead of CLoop Stack.

  • wtf/OSAllocator.h:
  • wtf/VMTags.h:
7:24 PM Changeset in webkit [247713] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Turn off Wasm fast memory on iOS
https://bugs.webkit.org/show_bug.cgi?id=200016
<rdar://problem/53417726>

Reviewed by Yusuke Suzuki.

We turned them on when we disabled Gigacage on iOS. However, we re-enabled
Gigacage on iOS, but forgot to turn wasm fast memories back off.

  • runtime/Options.h:
7:08 PM Changeset in webkit [247712] by Simon Fraser
  • 3 edits
    2 adds in trunk

Fix WebView iframe rendering in macOS Catalina
https://bugs.webkit.org/show_bug.cgi?id=200022
rdar://problem/49102040

Reviewed by Darin Adler.
Source/WebKitLegacy/mac:

Adapt to internal NSView method renames in Catalina.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:_recursive:displayRectIgnoringOpacity:inContext:topView:]):
(-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:_recursive:displayRectIgnoringOpacity:inContext:topView:]): Deleted.

LayoutTests:

New test for rendering of overlapping iframes, defects when we fail to setAsideSubviews
in WebView.

  • fast/frames/frames-not-double-painted-expected.html: Added.
  • fast/frames/frames-not-double-painted.html: Added.
5:18 PM Changeset in webkit [247711] by ysuzuki@apple.com
  • 2 edits in trunk/Source/bmalloc

Unreviewed, follow-up fix for tls->size() access
https://bugs.webkit.org/show_bug.cgi?id=200019

  • bmalloc/IsoTLS.cpp:

(bmalloc::IsoTLS::ensureEntries):
(bmalloc::IsoTLS::destructor):

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

[ews-build] EWS fails to parse multi-line full_results.json
https://bugs.webkit.org/show_bug.cgi?id=199992

Reviewed by Alexey Proskuryakov.

  • BuildSlaveSupport/ews-build/layout_test_failures.py:

(LayoutTestFailures.results_from_string): Concatenate content into single line.

  • BuildSlaveSupport/ews-build/steps_unittest.py:

(test_parse_results_json_with_newlines): Unit-test to cover this scenario.

5:09 PM Changeset in webkit [247709] by ysuzuki@apple.com
  • 2 edits in trunk/Source/bmalloc

[bmalloc] IsoTLS is not deallocated in TLS destructor
https://bugs.webkit.org/show_bug.cgi?id=200019

Reviewed by Mark Lam.

TLS destructor for IsoTLS needs to deallocate memory used for IsoTLS itself.
While we are correctly deallocating old IsoTLS when extending it to the new one,
we lack deallocation when the thread is destroyed. IsoTLS is per-thread, so we
should destroy IsoTLS when a thread finishes.

  • bmalloc/IsoTLS.cpp:

(bmalloc::IsoTLS::ensureEntries):
(bmalloc::IsoTLS::destructor):

5:07 PM Changeset in webkit [247708] by Simon Fraser
  • 2 edits in trunk/Source/WebKitLegacy/mac

Enable CSSOMViewScrollingAPIEnabled in WebKit1
https://bugs.webkit.org/show_bug.cgi?id=200008
rdar://problem/53409062

Reviewed by Tim Horton.

Default WebKitCSSOMViewScrollingAPIEnabledPreferenceKey to YES, so that
CSSOMViewScrollingAPIEnabled is on for both WebKit1 and WebKit2.

DumpRenderTree already turns this preference on, so this change is not
detected by tests.

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

5:01 PM Changeset in webkit [247707] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Fix inspector override conversion in InspectorPageAgent::overrideSetting
https://bugs.webkit.org/show_bug.cgi?id=200017

Reviewed by Devin Rousso.

Covered by inspector/page/overrideSetting-MockCaptureDevicesEnabled.html
which should not fail on bots not having cameras

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::toOptionalBool):
(WebCore::InspectorPageAgent::overrideSetting):
Previously, the conversion for the mock capture value was implicit from a bool pointer to an optional.
Make an explicit conversion as done for regular settings.

4:47 PM Changeset in webkit [247706] by Jonathan Bedard
  • 2 edits in trunk/Tools

resultsdbpy: Handle case where the previous commit doesn't have the changelog
https://bugs.webkit.org/show_bug.cgi?id=200015

Reviewed by Aakash Jain.

  • resultsdbpy/resultsdbpy/model/repository.py:

(WebKitRepository.commit_for_id.diff_changelogs): Allow the previous_response to be None.

4:25 PM Changeset in webkit [247705] by Ross Kirsling
  • 20 edits in trunk/Source

Unreviewed non-unified build fix.

Source/JavaScriptCore:

  • runtime/CachedTypes.h:

Source/WebCore:

  • Modules/webdatabase/DatabaseContext.h:
  • html/HTMLDialogElement.cpp:
  • html/HTMLScriptElement.cpp:
  • inspector/agents/InspectorDatabaseAgent.cpp:
  • workers/service/server/SWServerWorker.cpp:
  • workers/service/server/SWServerWorker.h:
  • worklets/WorkletGlobalScope.cpp:
  • worklets/WorkletGlobalScope.h:

Source/WebKit:

  • NetworkProcess/NetworkCORSPreflightChecker.h:
  • NetworkProcess/NetworkLoadChecker.h:
  • UIProcess/API/C/WKContext.cpp:
  • UIProcess/API/C/WKPageConfigurationRef.cpp:
  • UIProcess/Downloads/DownloadProxy.cpp:
  • UIProcess/WebPageInjectedBundleClient.cpp:
  • UIProcess/WebPreferences.cpp:
  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::PendingMessage::PendingMessage):

4:09 PM Changeset in webkit [247704] by Megan Gardner
  • 2 edits in trunk/Source/WebKit

Remove Staging for scrolling bug
https://bugs.webkit.org/show_bug.cgi?id=199894

Reviewed by Wenson Hsieh.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKUIWKTextInteractionAssistant scrollSelectionToVisible]): Deleted.

4:07 PM Changeset in webkit [247703] by ysuzuki@apple.com
  • 5 edits in trunk

[JSC] Make DFG Local CSE and AI conservative for huge basic block
https://bugs.webkit.org/show_bug.cgi?id=199929
<rdar://problem/49309924>

Reviewed by Filip Pizlo.

In CNN page, the main thread hangs several seconds. On less-powerful devices (like iPhone7), it hangs for ~11 seconds. This is not an acceptable behavior.
The reason of this is that the DFG compiler takes too long time in the compilation for a particular function. It takes 8765 ms even in powerful x64 machine!
DFG compiler is concurrent one. However, when GC requires all the peripheral threads to be stopped, the main thread needs to wait for the DFG compiler's stop.
DFG compiler stops at GC safepoints, and they are inserted between DFG phases. So, if some of DFG phases take very long time, the main thread is blocked during that.
As a result, the main thread is blocked due to this pathological compilation.

By measuring the time taken in each DFG phase, we found that our AI and CSE phase have a problem having quadratic complexity for # of DFG nodes in a basic block.
In this patch, we add a threshold for # of DFG nodes in a basic block. If a basic block exceeds this threshold, we use conservative but O(1) algorithm for AI and Local CSE phase.
We did not add this threshold for Global CSE since FTL has another bytecode cost threshold which prevents us from compiling the large functions. But on the other hand,
DFG should compile them because DFG is intended to be a fast compiler even for a bit larger CodeBlock.

We first attempted to reduce the threshold for DFG compilation. We are using 100000 bytecode cost for DFG compilation and it is very large. However, we found that bytecode cost
is not the problem in CNN page. The problematic function has 67904 cost, and it takes 8765 ms in x64 machine. However, JetStream2/octane-zlib has 61949 function and it only takes
~400 ms. This difference comes from the # of DFG nodes in a basic block. The problematic function has 43297 DFG nodes in one basic block and it makes AI and Local CSE super time-consuming.
Rather than relying on the bytecode cost which a bit indirectly related to this pathological compile-time, we should look into # of DFG nodes in a basic block which is more directly
related to this problem. And we also found that 61949's Octane-zlib function is very critical for performance. This fact makes a bit hard to pick a right threshold: 67904 causes the problem,
and 61949 must be compiled. This is why this patch is introducing conservative analysis instead of adjusting the threshold for DFG.

This patch has two changes.

  1. DFG AI has structure transition tracking which has quadratic complexity

Structure transition tracking takes very long time since its complexity is O(N2) where N is # of DFG nodes in a basic block.
CNN has very pathological script and it shows 43297 DFG nodes. We should reduce the complexity of this algorithm.
For now, we just say "structures are clobbered" if # of DFG nodes in a basic block exceeds the threshold (20000).
We could improve the current algorithm from O(N
2) to O(2N) without being conservative, and I'm tracking this in [1].

  1. DFG Local CSE has quadratic complexity

Local CSE's clobbering iterates all the impure heap values to remove the clobbered one. Since # of impure heap values tend to be proportional to # of DFG nodes we visited,
each CSE for a basic block gets O(N2) complexity. To avoid this, we introduce HugeMap. This has the same interface to LargeMap and SmallMap in CSE, but its clobbering
implementation just clears the map completely. We can further make this O(N) without introducing conservative behavior by using epochs. For now, we do not see such a huge basic block in
JetStream2 and Speedometer2 so I'll track it in a separate bug[2].

This patch reduces the compilation time from ~11 seconds to ~200 ms.

[1]: https://bugs.webkit.org/show_bug.cgi?id=199959
[2]: https://bugs.webkit.org/show_bug.cgi?id=200014

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::observeTransition):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::observeTransitions):

  • dfg/DFGCSEPhase.cpp:
  • runtime/Options.h:
3:14 PM Changeset in webkit [247702] by Wenson Hsieh
  • 7 edits
    1 add in trunk

[iOS] [WK1] UIWebView always jumps to the top left corner when scrolling to reveal the selection
https://bugs.webkit.org/show_bug.cgi?id=200013
<rdar://problem/52526901>

Reviewed by Simon Fraser.

Source/WebCore:

After <https://trac.webkit.org/r244141>, we no longer attempt to scroll to reveal the text selection in
UIWebView after changing the selection, due to how we use the legacy document view rect in legacy WebKit when
computing the visual viewport. This causes the viewRect in RenderLayer::scrollRectToVisible to be the same size
as the content size, which then causes us to always scroll to the origin when revealing the selection.

To make selection revealing work again in legacy WebKit, conditionally restore the old behavior of using the
unobscured content rect as the view rect, only in the case where scrolling is delegated and the platform widget
is present.

Test: WebKitLegacy.ScrollToRevealSelection

  • page/FrameView.cpp:

(WebCore::FrameView::viewRectExpandedByContentInsets const):
(WebCore::FrameView::visualViewportRectExpandedByContentInsets const): Deleted.

Additionally rename visualViewportRectExpandedByContentInsets to viewRectExpandedByContentInsets, to reflect the
fact that this may either be the visual viewport rect or unobscured content rect.

  • page/FrameView.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollRectToVisible):

Tools:

Add a new API test to verify that inserting text in UIWebView causes the document to scroll.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitLegacy/ios/ScrollToRevealSelection.mm: Added.

(-[LegacyLoadingDelegate webViewDidFinishLoad:]):
(-[LegacyLoadingDelegate waitForDidFinishLoad]):

  • TestWebKitAPI/ios/UIKitSPI.h:
3:02 PM Changeset in webkit [247701] by Brent Fulgham
  • 4 edits in trunk/Source

Correct web audio-related crash in seed reports
https://bugs.webkit.org/show_bug.cgi?id=200009
<rdar://problem/51565203>

Reviewed by Per Arne Vollan.

Source/WebCore:

Update the 'createMix' method to do proper return value checking so that
we can clear the result of MTAudioProcessingTapCreate if the create operation
failed.

  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:

(WebCore::AudioSourceProviderAVFObjC::createMix):

Source/WebKit:

Revise the iOS sandbox to allow the WebContent process to communicate with
the 'com.apple.coremedia.audioprocessingtap.xpc' service, which is needed by
some types of WebAudio.

  • WebProcess/com.apple.WebKit.WebContent.sb.in:
1:38 PM Changeset in webkit [247700] by dino@apple.com
  • 2 edits in trunk/Source/WebKit

WebKit SPI fix for [ClickyOrb] Audio continues playing after dismissing a video preview in Safari
https://bugs.webkit.org/show_bug.cgi?id=200011
<rdar://problem/53409457>

Reviewed by Tim Horton.

Don't check for the SPI @selector(_webView:contextMenuDidEndForElement:)
on the WKUIDelegate so that clients that got caught implementing the
SPI before moving to the real API can still clean-up state. In other words,
don't force a client that only implements that method to move completely
to the new API.

  • UIProcess/ios/WKContentViewInteraction.mm:

(needsDeprecatedPreviewAPI):

1:24 PM Changeset in webkit [247699] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

Prewarmed font does not find any matches
https://bugs.webkit.org/show_bug.cgi?id=200007

Reviewed by Brent Fulgham.

Prewarming the font name 'SF Pro Text' does not find any matches. The font name ".SF NS Text/Display"
should be used instead. Also add 'Lucida Grande' to the list of prewarmed font, since it is used as
fallback font in many cases.

No new tests, covered by existing tests.

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::fontFamiliesForPrewarming):

1:03 PM Changeset in webkit [247698] by youenn@apple.com
  • 8 edits
    3 adds in trunk

Make sure the player underlying volume is correctly set after creating a new player
https://bugs.webkit.org/show_bug.cgi?id=199974
<rdar://problem/52762559>

Reviewed by Eric Carlson.

Source/WebCore:

When creating a player before starting to play, the volume might not be correctly initialized.
Fix that by updating the volume like done for rate and muted state.
A future refactoring should probably move that code in MediaPlayer.

Add an internal API to query the volume value from the underlying player.

Test: http/tests/media/audio-volume-zero.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::updateVolume):
(WebCore::HTMLMediaElement::updatePlayState):
(WebCore::HTMLMediaElement::effectiveVolume const):
(WebCore::HTMLMediaElement::effectiveMuted const):

  • html/HTMLMediaElement.h:
  • testing/Internals.cpp:

(WebCore::Internals::privatePlayerVolume):

  • testing/Internals.h:
  • testing/Internals.idl:
  • testing/Internals.mm:

(WebCore::Internals::privatePlayerVolume):

LayoutTests:

  • http/tests/media/128kbps-44khz.mp3: Added.
  • http/tests/media/audio-volume-zero-expected.txt: Added.
  • http/tests/media/audio-volume-zero.html: Added.
12:46 PM Changeset in webkit [247697] by Devin Rousso
  • 2 edits in trunk/Source/WebCore

Web Inspector: Page: mark any WebCore::Setting inspector override as UNLIKELY
https://bugs.webkit.org/show_bug.cgi?id=199925

Reviewed by Joseph Pecoraro.

  • Scripts/SettingsTemplates/Settings.cpp.erb:
12:39 PM Changeset in webkit [247696] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Localization: change fps to FPS
<rdar://problem/53342508>

Rubber-stamped by Joseph Pecoraro.

  • UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:

(WI.RenderingFrameTimelineOverviewGraph.prototype._updateDividers.createDividerAtPosition):

  • Localizations/en.lproj/localizedStrings.js:
12:38 PM Changeset in webkit [247695] by jer.noble@apple.com
  • 4 edits
    1 add in trunk

REGRESSION(rUnknown): YouTube playback pauses when switching to a new tab
https://bugs.webkit.org/show_bug.cgi?id=199971
<rdar://problem/51951218>

Reviewed by Alex Christensen.

Source/WebKit:

When we get a message notifying us that the view has been removed from the window, we unconditionally
ask the fullscreen manager to exit fullscreen, which has the side effect (on iOS) of pausing the video
unconditionally. Only ask the fullscreen manager to exit fullscreen if there is actually a video in
fullscreen mode.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::viewDidLeaveWindow):

Tools:

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

(TestWebKitAPI::TEST):

12:16 PM Changeset in webkit [247694] by aakash_jain@apple.com
  • 7 edits in trunk/Tools

[ews-build] Add an EWS to run services tests
https://bugs.webkit.org/show_bug.cgi?id=199994

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/config.json: Added Services-EWS configuration.
  • BuildSlaveSupport/ews-build/factories.py: Added ServicesFactory.
  • BuildSlaveSupport/ews-build/steps.py:

(CheckPatchRelevance): Run this EWS only for patches with changes in relevant files.
(RunEWSUnitTests): Build step to run EWS unit-tests.
(RunEWSBuildbotCheckConfig): Build step to run buildbot checkconfig command.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Added unit-tests.
  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py: Added services status-bubble.
11:51 AM Changeset in webkit [247693] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Make sure to unref captured lambda variables given to _strictTrustEvaluate in the main thread
https://bugs.webkit.org/show_bug.cgi?id=199948

Reviewed by Alex Christensen.

Use a weak pointer instead of a Ref for the NetworkSession.
Add a null check in processServerTrustEvaluation for extra safety if we decide to remove the data task NetworkSession ref.
Make sure to move the NetworkDataTask ref in the completion handler so that the unrefing is done in the main thread.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(processServerTrustEvaluation):
(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):

11:19 AM Changeset in webkit [247692] by youenn@apple.com
  • 5 edits in trunk

Disable MediaRecorder for legacy WebKit
https://bugs.webkit.org/show_bug.cgi?id=200001
<rdar://problem/53400030>

Reviewed by Eric Carlson.

Source/WebKitLegacy/mac:

Disable MediaRecorder by default in legacy WebKit.
Add SPI to set/get this preference.

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences _mediaRecorderEnabled]):
(-[WebPreferences _setMediaRecorderEnabled:]):

  • WebView/WebPreferencesPrivate.h:

Tools:

Enable MediaRecorder for testing purposes.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(createWebViewAndOffscreenWindow):

11:18 AM Changeset in webkit [247691] by Jonathan Bedard
  • 2 edits in trunk/Tools

results.webkit.org: Timeline header is too small
https://bugs.webkit.org/show_bug.cgi?id=199955

Reviewed by Aakash Jain.

  • resultsdbpy/resultsdbpy/view/static/css/timeline.css:

(.timeline>.header): Make timeline header larder to fit configuration names.

11:16 AM Changeset in webkit [247690] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Need to skip test cache directory data vault for non internal build
https://bugs.webkit.org/show_bug.cgi?id=199951

Patch by Zhifei Fang <zhifei_fang@apple.com> on 2019-07-22
Reviewed by Alexey Proskuryakov.

  • API/tests/testapi.mm:

(testBytecodeCacheValidation): "Cache directory /private/tmp is not a data vault" this error message will only be created for internal build see JSScript.mm:97

11:12 AM Changeset in webkit [247689] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Don't always look for a JSC configuration file after r247685
https://bugs.webkit.org/show_bug.cgi?id=199917

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
(API::ProcessPoolConfiguration::ProcessPoolConfiguration):
ProcessPoolConfiguration's javaScriptConfigurationDirectory wasn't used before r247685,
which made it always look for a file with 'JavaScriptCoreDebug' in its name. I had assumed
m_javaScriptConfigurationDirectory would default to a null string, but it was defaulting to
defaultJavaScriptConfigurationDirectory. Make it a null string instead.

11:05 AM Changeset in webkit [247688] by Simon Fraser
  • 47 edits in trunk/Source

Make some constructors explicit
https://bugs.webkit.org/show_bug.cgi?id=199981

Reviewed by Daniel Bates.

Make explicit public constructors of objects that take POD or String& arguments,
to reduce the changes of the compiler doing implicit conversions.

Source/WebCore:

  • Modules/indexeddb/server/IndexValueEntry.h:
  • Modules/indexeddb/server/IndexValueStore.h:
  • Modules/indexeddb/shared/IDBDatabaseInfo.h:
  • Modules/webdatabase/ChangeVersionData.h:

(WebCore::ChangeVersionData::ChangeVersionData):

  • Modules/webdatabase/OriginLock.h:
  • Modules/websockets/WebSocketExtensionParser.h:

(WebCore::WebSocketExtensionParser::WebSocketExtensionParser):

  • bindings/js/ScriptCachedFrameData.h:
  • contentextensions/URLFilterParser.cpp:

(WebCore::ContentExtensions::PatternParser::PatternParser):

  • css/parser/CSSTokenizer.h:
  • css/parser/SizesAttributeParser.h:
  • dom/SpaceSplitString.cpp:

(WebCore::TokenIsEqualToCStringTokenProcessor::TokenIsEqualToCStringTokenProcessor):

  • html/FormController.cpp:

(WebCore::SavedFormState::appendControlState):
(WebCore::SavedFormState::takeControlState):

  • loader/ProgressTracker.cpp:

(WebCore::ProgressItem::ProgressItem):

  • page/DragController.cpp:

(WebCore::DragController::DragController):
(WebCore::DragController::performDragOperation):

  • page/DragController.h:
  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::AnimationPropertyWrapperBase::AnimationPropertyWrapperBase):

  • page/ios/DOMTimerHoldingTank.h:

(WebCore::DeferDOMTimersForScope::DeferDOMTimersForScope):

  • platform/CountedUserActivity.h:

(WebCore::CountedUserActivity::CountedUserActivity):

  • platform/audio/DirectConvolver.h:
  • platform/audio/DownSampler.h:
  • platform/audio/DynamicsCompressorKernel.h:
  • platform/audio/EqualPowerPanner.h:
  • platform/audio/MultiChannelResampler.h:
  • platform/audio/ReverbAccumulationBuffer.h:
  • platform/audio/ReverbInputBuffer.h:
  • platform/audio/SincResampler.cpp:
  • platform/audio/UpSampler.h:
  • platform/audio/ios/AudioFileReaderIOS.h:
  • platform/audio/mac/AudioFileReaderMac.h:
  • platform/audio/mac/AudioSessionMac.cpp:

(WebCore::AudioSessionPrivate::AudioSessionPrivate):

  • platform/cf/KeyedDecoderCF.h:
  • platform/graphics/WidthIterator.cpp:

(WebCore::OriginalAdvancesForCharacterTreatedAsSpace::OriginalAdvancesForCharacterTreatedAsSpace):

  • platform/graphics/cocoa/FontCacheCoreText.h:

(WebCore::SynthesisPair::SynthesisPair):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::DrawingItem::DrawingItem):

  • platform/network/cf/ResourceRequest.h:

(WebCore::ResourceRequest::ResourceRequest):

  • platform/text/TextCodecICU.h:
  • rendering/RenderTableSection.h:

(WebCore::CellSpan::CellSpan):

  • rendering/shapes/RasterShape.cpp:
  • rendering/shapes/RasterShape.h:

(WebCore::RasterShapeIntervals::RasterShapeIntervals):

  • testing/MockLibWebRTCPeerConnection.h:

(WebCore::MockLibWebRTCIceCandidate::MockLibWebRTCIceCandidate):

Source/WebCore/PAL:

  • pal/system/cocoa/SleepDisablerCocoa.cpp:

(PAL::SleepDisablerCocoa::SleepDisablerCocoa):

  • pal/system/cocoa/SleepDisablerCocoa.h:

Source/WebKit:

  • Platform/Module.h:
  • WebProcess/WebPage/WebInspector.cpp:

(WebKit::WebInspector::openInNewTab):

10:34 AM Changeset in webkit [247687] by dbates@webkit.org
  • 5 edits in trunk/Source/WebKit

[iOS] REGRESSION (r241734): Autocorrection highlight should hide when field becomes defocused
https://bugs.webkit.org/show_bug.cgi?id=199807
<rdar://problem/52760259>

Fix a bad merge of r247653. svn-apply was way too forgiving. The original patch touched
the non-existent function, -_didCommitLoadForMainFrame in WKContentViewInteraction.mm. Because
that didn't exist, svn-apply patched up -clearSelection.

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

(-[WKContentView _didCommitLoadForMainFrame]): Deleted; moved to WKContentViewInteraction.mm

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

(-[WKContentView clearSelection]): Remove code that should be in -_didCommitLoadForMainFrame.
(-[WKContentView _didCommitLoadForMainFrame]): Moved from WKContentView.mm

10:21 AM Changeset in webkit [247686] by achristensen@apple.com
  • 8 edits in trunk

Add SPI to _WKWebsiteDataStoreConfiguration for configuring application cache storage location
https://bugs.webkit.org/show_bug.cgi?id=199954

Reviewed by Geoff Garen.

Source/WebKit:

This is a step towards removing WebsiteDataStore::legacyDefaultDataStoreConfiguration
Covered by a new API test.

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _initWithConfiguration:]):

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

(-[_WKWebsiteDataStoreConfiguration applicationCacheDirectory]):
(-[_WKWebsiteDataStoreConfiguration setApplicationCacheDirectory:]):
(-[_WKWebsiteDataStoreConfiguration applicationCacheFlatFileSubdirectoryName]):
(-[_WKWebsiteDataStoreConfiguration setApplicationCacheFlatFileSubdirectoryName:]):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::sendWebProcessDataStoreParameters):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::applicationCacheFlatFileSubdirectoryName const):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:

(TEST):

10:19 AM Changeset in webkit [247685] by achristensen@apple.com
  • 6 edits in trunk

Add SPI _WKProcessPoolConfiguration.javaScriptConfigurationDirectory
https://bugs.webkit.org/show_bug.cgi?id=199917

Reviewed by Sam Weinig.

Source/WebKit:

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

(-[_WKProcessPoolConfiguration javaScriptConfigurationDirectory]):
(-[_WKProcessPoolConfiguration setJavaScriptConfigurationDirectory:]):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::sendWebProcessDataStoreParameters):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKProcessPoolConfiguration.mm:

(TEST):

9:59 AM Changeset in webkit [247684] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mojave Debug WK1 ] Layout Test imported/blink/storage/indexeddb/blob-basics-metadata.html is Timing out (200002)
https://bugs.webkit.org/show_bug.cgi?id=200002

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
8:48 AM Changeset in webkit [247683] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] ReRunWebKitTests should use similar logic for evaluateCommand as RunWebKitTests
https://bugs.webkit.org/show_bug.cgi?id=199980

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(ReRunWebKitTests.evaluateCommand): Updatd to use similar logic as RunWebKitTests.

  • BuildSlaveSupport/ews-build/steps_unittest.py:

(TestRunWebKitTests): Modified to make it generic so as to re-use tests.
(TestReRunWebKitTests): Run all TestRunWebKitTests unit-tests for ReRunWebKitTests as well.

7:25 AM Changeset in webkit [247682] by clopez@igalia.com
  • 2 edits in trunk/Tools

[webkitpy] Add an unit test for setting up the driver environment without starting it.
https://bugs.webkit.org/show_bug.cgi?id=199945

Reviewed by Michael Catanzaro.

This adds an unit test for the change implemented in r247663.

  • Scripts/webkitpy/port/driver_unittest.py:

(DriverTest.test_setup_environ_base_vars):
(DriverTest):
(DriverTest.test_setup_environ_without_starting_driver):

6:47 AM Changeset in webkit [247681] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Remove some unneeded code in MathOperator
https://bugs.webkit.org/show_bug.cgi?id=199935

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

Remove unused method.

No new tests, not changing behavior.

  • rendering/mathml/MathOperator.h:
1:47 AM Changeset in webkit [247680] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[SOUP] WebSockets: use new api to send text messages
https://bugs.webkit.org/show_bug.cgi?id=199936

Reviewed by Michael Catanzaro.

New API allows to include null character in text messages.

  • NetworkProcess/soup/WebSocketTaskSoup.cpp:

(WebKit::WebSocketTask::didReceiveMessageCallback): Pass data size to String::fromUTF8().
(WebKit::WebSocketTask::sendString): Use soup_websocket_connection_send_message() instead of
soup_websocket_connection_send_text() when available. Also use
StrictConversionReplacingUnpairedSurrogatesWithFFFD options when converting to UTF-8.

Jul 21, 2019:

8:35 PM Changeset in webkit [247679] by Wenson Hsieh
  • 8 edits in trunk

[iOS] [WebKit2] Add limited support for -isPosition:atBoundary:inDirection: in WKContentView
https://bugs.webkit.org/show_bug.cgi?id=199993
<rdar://problem/49523528>

Reviewed by Beth Dakin.

Source/WebKit:

Add support for -isPosition:atBoundary:inDirection:, only in the cases where the given position is the start or
and position and the given granularity is UITextGranularityParagraph.

Test: EditorStateTests.ParagraphBoundary

  • Shared/EditorState.cpp:

(WebKit::EditorState::PostLayoutData::encode const):
(WebKit::EditorState::PostLayoutData::decode):

  • Shared/EditorState.h:

Add a couple of bits to indicate whether the selection start or end positions are at paragraph boundaries.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView isPosition:atBoundary:inDirection:]):

Implement this to return selectionStartIsAtParagraphBoundary or selectionEndIsAtParagraphBoundary.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::platformEditorState const):

Tools:

Add a new API test to verify the behavior of -isPosition:atBoundary:inDirection:.

  • TestWebKitAPI/Tests/WebKitCocoa/EditorStateTests.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
3:59 PM Changeset in webkit [247678] by Konstantin Tokarev
  • 3 edits in trunk/Source/WebCore

Add DataListButtonElement.cpp to unified sources
https://bugs.webkit.org/show_bug.cgi?id=199989

Reviewed by Michael Catanzaro.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
3:15 PM Changeset in webkit [247677] by commit-queue@webkit.org
  • 8 edits in trunk

Add accessibilityInsertText for text insertion in edit fields.
https://bugs.webkit.org/show_bug.cgi?id=199973

Patch by Andres Gonzalez <Andres Gonzalez> on 2019-07-21
Reviewed by Chris Fleizach.

Renamed accessibilityInsertText to _accessibilityInsertText.

Source/WebCore:

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper _accessibilityInsertText:]):
(-[WebAccessibilityObjectWrapper accessibilityInsertText:]): Deleted.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper _accessibilityInsertText:]):
(-[WebAccessibilityObjectWrapper accessibilityInsertText:]): Deleted.

Tools:

  • DumpRenderTree/ios/AccessibilityUIElementIOS.mm:

(AccessibilityUIElement::insertText):

  • DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(AccessibilityUIElement::insertText):

  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::insertText):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::insertText):

11:35 AM Changeset in webkit [247676] by sbarati@apple.com
  • 3 edits
    2 adds in trunk

[WHLSL] Checker needs to setError() when a property access node can't commit its base type
https://bugs.webkit.org/show_bug.cgi?id=199978

Reviewed by Dean Jackson.

Source/WebCore:

Test: webgpu/whlsl/null-array-property-access.html

  • Modules/webgpu/WHLSL/WHLSLChecker.cpp:

(WebCore::WHLSL::Checker::finishVisiting):

LayoutTests:

  • webgpu/whlsl/null-array-property-access-expected.txt: Added.
  • webgpu/whlsl/null-array-property-access.html: Added.
11:31 AM Changeset in webkit [247675] by sbarati@apple.com
  • 3 edits
    2 adds in trunk

[WHLSL] Return the zero-value enum in the enum-from-integer constructor when the integer is not a valid enum value
https://bugs.webkit.org/show_bug.cgi?id=199853

Reviewed by Dean Jackson.

Source/WebCore:

Test: webgpu/whlsl/enum-integer-constructor.html

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

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

LayoutTests:

  • webgpu/whlsl/enum-integer-constructor-expected.txt: Added.
  • webgpu/whlsl/enum-integer-constructor.html: Added.
10:23 AM Changeset in webkit [247674] by mmaxfield@apple.com
  • 12 edits
    2 adds in trunk

[iOS] Fast and complex text codepaths disagree about how to lay out bopomofo with tone marks
https://bugs.webkit.org/show_bug.cgi?id=199912
<rdar://problem/52182454>

Reviewed by Simon Fraser.

Source/WebCore:

This is because CoreText has special composition rules for CJK languages, which we don't have in our simple
text codepath. Rather than implementing the composition rules in WebKit, we can simply disable them in
CoreText.

Test: fast/text/international/system-language/composition.html

  • platform/graphics/mac/SimpleFontDataCoreText.cpp:

(WebCore::Font::getCFStringAttributes const):

Source/WebCore/PAL:

  • pal/spi/cocoa/CoreTextSPI.h:

LayoutTests:

  • css3/font-feature-font-face-local-expected.html:
  • css3/font-feature-font-face-local.html:
  • editing/mac/selection/word-thai-expected.txt:
  • editing/mac/selection/word-thai.html:
  • fast/text/international/system-language/composition-expected.txt: Added.
  • fast/text/international/system-language/composition.html: Added.
  • platform/ios/fast/text/crash-complex-text-surrogate-expected.txt:
  • svg/custom/glyph-selection-arabic-forms-expected.txt:

Jul 20, 2019:

8:53 PM Changeset in webkit [247673] by Chris Dumez
  • 9 edits in trunk

Speed up HashTable decoding by reserving capacity and avoiding rehashing
https://bugs.webkit.org/show_bug.cgi?id=199982

Reviewed by Saam Barati.

Source/WebKit:

Use HashMap::reserveInitialCapacity() in the HashMap IPC decoder for
performance. I measured a ~35% improvement when decoding a very large
HashMap of Strings (~160k entries) in the context of the
StorageManager::GetValues IPC.

  • Platform/IPC/ArgumentCoders.h:
  • Shared/API/c/WKDictionary.cpp:

(WKDictionaryCreate):

Source/WTF:

Introduce reserveInitialCapacity() on HashMap to reserve capacity on a
HashMap and cut down on rehashing cost when possible.

  • wtf/HashMap.h:
  • wtf/HashTable.h:

(WTF::HashTable::reserveInitialCapacity):

  • wtf/persistence/PersistentCoders.h:

Use HashMap::reserveInitialCapacity() in the HashMap persistent decoder for
performance.

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WTF/HashMap.cpp:

(TestWebKitAPI::TEST):

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

Micro-optimize HashMap & String IPC decoding
https://bugs.webkit.org/show_bug.cgi?id=199967

Reviewed by Geoffrey Garen.

The legacy HashMap decoder (returning a boolean) was failing to WTFMove()
the key & value when calling HashMap::add(). The modern decoder (returning
an Optional) was properly using WTFMove(). Rewrite the legacy HashMap decoder
to call the modern one to reduce code duplication and to get this optimization.

Also, encode HashMap::size() as a uint32_t instead of a uint64_t since
HashMap::size() returns an 'unsigned int' type. Finally, update the modern
decoder to WTFMove(hashMap) when returning. Because the function returns an
Optional<HashMap> and not a HashMap, I do not believe we get return value
optimization (RVO).

Do similar changes to String IPC coders.

  • Platform/IPC/ArgumentCoders.cpp:

(IPC::decodeStringText):
(IPC::ArgumentCoder<String>::decode):

  • Platform/IPC/ArgumentCoders.h:
3:04 PM Changeset in webkit [247671] by commit-queue@webkit.org
  • 19 edits
    2 adds in trunk

Add accessibilityInsertText for text insertion in edit fields.
https://bugs.webkit.org/show_bug.cgi?id=199973

Patch by Andres Gonzalez <Andres Gonzalez> on 2019-07-20
Reviewed by Chris Fleizach.

Source/WebCore:

Tests: accessibility/insert-newline.html

accessibility/ios-simulator/insert-newline.html

Accessibility clients like VoiceOver and Voice Control were entering
text in text fields by replacing the entire content of the field
(SetValue) and then setting the insertion point to the appropriate
offset (SetSelectedTextRange). accessibilityInsertText gives a simpler
interface to clients to insert text at the insertion point location.
In addition, this provides a workaround for the issue encountered with
the previous method when inserting a linebreak.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::insertText):

  • accessibility/AccessibilityObject.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityInsertText:]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityInsertText:]):

Tools:

Glue code to run new LayoutTests.

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

(WTR::AccessibilityUIElement::insertText):

  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::insertText):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::insertText):

  • WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp:

(WTR::AccessibilityUIElement::insertText):

LayoutTests:

Tests for inserting a newline in the middle of a text line and checking
that the insertion point and text ranges are correct.

  • accessibility/insert-newline-expected.txt: Added.
  • accessibility/insert-newline.html: Added.
  • accessibility/ios-simulator/insert-newline-expected.txt: Added.
  • accessibility/ios-simulator/insert-newline.html: Added.
1:11 PM Changeset in webkit [247670] by commit-queue@webkit.org
  • 8 edits in trunk/Source

REGRESSION(r246033/r246496): [GTK] Kinetic scrolling doesn't work
https://bugs.webkit.org/show_bug.cgi?id=199322

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

Source/WebCore:

Check ENABLE(KINETIC_SCROLLING) instead of ENABLE(ASYNC_SCROLLING) for kinetic scrolling.

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

(WebCore::ScrollAnimatorGeneric::handleWheelEvent):

  • platform/gtk/PlatformWheelEventGtk.cpp:

(WebCore::PlatformWheelEvent::PlatformWheelEvent):

Source/WebKit:

Check ENABLE(KINETIC_SCROLLING) instead of ENABLE(ASYNC_SCROLLING) when setting wheel event phase and momentum phase.

  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent):

Source/WTF:

Introduce ENABLE_KINETIC_SCROLLING to explicitly always have kinetic scrolling on GTK.

  • wtf/Platform.h:
11:53 AM Changeset in webkit [247669] by Alan Bujtas
  • 4 edits
    7 adds in trunk/Source/WebCore

[LFC][TFC] Introduce table formatting context.
https://bugs.webkit.org/show_bug.cgi?id=199979
<rdar://problem/53346292>

Reviewed by Antti Koivisto.

Add the basic class structure for the table formatting context.
https://www.w3.org/TR/CSS22/tables.html

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/FormattingState.h:

(WebCore::Layout::FormattingState::isTableFormattingState const):

  • layout/tableformatting/TableFormattingContext.cpp: Added.

(WebCore::Layout::TableFormattingContext::TableFormattingContext):
(WebCore::Layout::TableFormattingContext::layout const):

  • layout/tableformatting/TableFormattingContext.h: Added.
  • layout/tableformatting/TableFormattingState.cpp: Added.

(WebCore::Layout::TableFormattingState::TableFormattingState):
(WebCore::Layout::TableFormattingState::~TableFormattingState):

  • layout/tableformatting/TableFormattingState.h: Added.
  • layout/tableformatting/TableInvalidation.cpp: Added.

(WebCore::Layout::TableInvalidation::invalidate):

  • layout/tableformatting/TableInvalidation.h: Added.
11:52 AM Changeset in webkit [247668] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Add support for mid-word break.
https://bugs.webkit.org/show_bug.cgi?id=199976
<rdar://problem/53337349>

Reviewed by Antti Koivisto.

Introduce leading and trailing InlineTextItem to support incoming and outgoing partial content.
TextUtil::split is a straight copy of SimpleLineLayout::split.

  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:

(WebCore::Layout::inlineItemWidth):
(WebCore::Layout::LineLayout::close):
(WebCore::Layout::LineLayout::placeInlineItem):
(WebCore::Layout::LineLayout::layout):

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::split const):
(WebCore::Layout::InlineTextItem::split): Deleted.

  • layout/inlineformatting/InlineTextItem.h:

(WebCore::Layout::InlineTextItem::inlineBox const):

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::split):

  • layout/inlineformatting/text/TextUtil.h:
6:47 AM Changeset in webkit [247667] by Alan Bujtas
  • 10 edits in trunk/Source

[Text autosizing] Do not nuke the style on dynamicViewportSizeUpdate
https://bugs.webkit.org/show_bug.cgi?id=199718
<rdar://problem/53344961>

Reviewed by Simon Fraser.

Source/WebCore:

When the page scale changes (e.g. as the result of shink to fit mode) we need to visit all the text content on the page and check whether they need to be boosted.
Currently we call setNeedsRecalcStyleInAllFrames() to accomplish it. Unfortunatelly setNeedsRecalcStyleInAllFrames destroys all the style information which means that the
subsequent styleResolve() needs to start from scratch.
This patch addresses this issue by directly adjusting the computed style information when text boosting is required and schedules layout accordingly. We also trigger this style adjusting
on a timer so that rapid dynamicViewportSizeUpdate() calls won't trigger redundant layouts.

  • css/StyleResolver.cpp:

(WebCore::hasTextChild):
(WebCore::StyleResolver::adjustRenderStyleForTextAutosizing):
(WebCore::hasTextChildren): Deleted.

  • css/StyleResolver.h:
  • page/FrameView.h:
  • page/Page.cpp:

(WebCore::Page::invalidateTextAutoSizeInAllFrames):

  • page/Page.h:

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_textAutoSizingAdjustmentTimer):
(WebKit::WebPage::close):
(WebKit::WebPage::didCommitLoad):
(WebKit::WebPage::textAutoSizingAdjustmentTimerFired):
(WebKit::m_shrinkToFitContentTimer): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::dynamicViewportSizeUpdate):
(WebKit::WebPage::resetIdempotentTextAutosizingIfNeeded):
(WebKit::WebPage::resetTextAutosizing):
(WebKit::WebPage::viewportConfigurationChanged):

5:40 AM Changeset in webkit [247666] by sbarati@apple.com
  • 10 edits
    4 adds in trunk

[WHLSL] Make enums work
https://bugs.webkit.org/show_bug.cgi?id=199634

Reviewed by Robin Morisset.

Source/WebCore:

This patch makes enums work. There were a couple changes needed to do this work:

  1. In the metal codegen, we were emitting code like "EnumType.EnumValue"

instead of "EnumType::EnumValue".

  1. Inside the enumeration declaration AST node, we track enums in a HashMap

because we need to look up names of enum values in that map in parts of the
compiler. However, HashMap is not ordered but we were relying on the iteration
order of it to generate the default values of enums. E.g, in: "enum { Foo = 10, Bar }",
Bar should be 11. However, there was no guarantee that we iterated over Bar
after Foo. Instead, we just track the default values as we parse an enum
inside of the parser. This allows us to continue to keep using HashMap without
also adding an auxiliary data structure (or using more memory in some way) to
track the order of the enum elements.

I've also filed a patch to do follow-up work on implementing the correct
operational behavior when constructing an enum from its underlying type when
the underlying value does not match any enum value:
https://bugs.webkit.org/show_bug.cgi?id=199853

Tests: webgpu/whlsl/enums-2.html

webgpu/whlsl/enums.html

  • Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:

(WebCore::WHLSL::AST::EnumerationMember::EnumerationMember):
(WebCore::WHLSL::AST::EnumerationMember::value):
(WebCore::WHLSL::AST::EnumerationMember::setValue): Deleted.

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

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

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

(WebCore::WHLSL::Metal::TypeNamer::emitNamedTypeDefinition):

  • Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:

(WebCore::WHLSL::ASTDumper::visit):

  • Modules/webgpu/WHLSL/WHLSLChecker.cpp:

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

  • Modules/webgpu/WHLSL/WHLSLParser.cpp:

(WebCore::WHLSL::Parser::parseEnumerationDefinition):
(WebCore::WHLSL::Parser::parseEnumerationMember):

  • Modules/webgpu/WHLSL/WHLSLParser.h:
  • Modules/webgpu/WHLSL/WHLSLVisitor.cpp:

(WebCore::WHLSL::Visitor::visit):

LayoutTests:

  • webgpu/whlsl/enums-2-expected.txt: Added.
  • webgpu/whlsl/enums-2.html: Added.
  • webgpu/whlsl/enums-expected.txt: Added.
  • webgpu/whlsl/enums.html: Added.

Jul 19, 2019:

7:01 PM Changeset in webkit [247665] by commit-queue@webkit.org
  • 1 edit
    5 adds in trunk/Tools

Move webkit.css to opensource to support resultsdbpy's frontend
https://bugs.webkit.org/show_bug.cgi?id=199957

Patch by Zhifei Fang <zhifei_fang@apple.com> on 2019-07-19
Reviewed by Jonathan Bedard.

  • resultsdbpy/resultsdbpy/view/static/library/css/docs.yaml: Added.
  • resultsdbpy/resultsdbpy/view/static/library/css/generate-webkit-css-docs: Added.
  • resultsdbpy/resultsdbpy/view/static/library/css/index.html: Added.
  • resultsdbpy/resultsdbpy/view/static/library/css/webkit.css: Added.
6:15 PM Changeset in webkit [247664] by commit-queue@webkit.org
  • 10 edits
    7 adds in trunk/Tools

Move Ref.js to WebKit to support resultsdbpy's frontend
https://bugs.webkit.org/show_bug.cgi?id=199956

Patch by Zhifei Fang <zhifei_fang@apple.com> on 2019-07-19
Reviewed by Jonathan Bedard.

  • resultsdbpy/resultsdbpy/view/static/js/drawer.js:
  • resultsdbpy/resultsdbpy/view/static/js/search.js:
  • resultsdbpy/resultsdbpy/view/static/js/timeline.js:
  • resultsdbpy/resultsdbpy/view/static/library/js/Ref.js: Added.
  • resultsdbpy/resultsdbpy/view/static/library/js/Utils.js: Added.
  • resultsdbpy/resultsdbpy/view/static/library/js/components/BaseComponents.js: Added.
  • resultsdbpy/resultsdbpy/view/static/library/js/components/TimelineComponents.js: Added.
  • resultsdbpy/resultsdbpy/view/templates/base.html:
  • resultsdbpy/resultsdbpy/view/templates/commits.html:
  • resultsdbpy/resultsdbpy/view/templates/documentation.html:
  • resultsdbpy/resultsdbpy/view/templates/search.html:
  • resultsdbpy/resultsdbpy/view/templates/suite_results.html:
  • resultsdbpy/resultsdbpy/view/view_routes.py:
5:55 PM Changeset in webkit [247663] by clopez@igalia.com
  • 5 edits in trunk/Tools

[webkitpy] Allow the testrunner driver to setup the environment completely without needing to start the server process.
https://bugs.webkit.org/show_bug.cgi?id=199945

Reviewed by Michael Catanzaro.

Refactor the code to create the Driver temporal directories inside Driver._setup_environ_for_driver().
This allows external callers to setup the environment for running tests by calling that method without needing to start the server process.
When this callers finish testing, it is enough with calling either Driver.stop() or Driver._delete_temporal_directories().

  • Scripts/webkitpy/port/driver.py:

(Driver._setup_environ_for_driver):
(Driver._create_temporal_directories):
(Driver):
(Driver._start):
(Driver._delete_temporal_directories):
(Driver.stop):

  • Scripts/webkitpy/w3c/wpt_runner.py: Not needed anymore to start the driver since this doesnt need the server process running.

(main):

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py: Ditto.

(WebDriverTestRunner.init):

  • glib/api_test_runner.py:

(TestRunner._setup_testing_environment): Ditto.

5:55 PM Changeset in webkit [247662] by youenn@apple.com
  • 16 edits in trunk/Source

Remote WebInspector should enable mock capture devices in UIProcess if doing it in WebProcess
https://bugs.webkit.org/show_bug.cgi?id=199924
<rdar://problem/50552067>

Reviewed by Devin Rousso.

Source/WebCore:

Add necessary API to set mock capture devices override.
In case of desynchronization between webprocess and uiprocess, make sure to return early
and fail capture instead of crashing.

  • inspector/InspectorClient.h:

(WebCore::InspectorClient::setMockCaptureDevicesEnabled):

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::disable):
(WebCore::InspectorPageAgent::overrideSetting):

  • platform/mock/MockRealtimeMediaSourceCenter.cpp:

Source/WebKit:

Add IPC plumbery to pass inspector override value for mock capture devices.
Add an override in UserMediaPermissionRequestManagerProxy so that the value stays in sync with web inspector.
The override will be removed when web inspector goes away.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::syncWithWebCorePrefs const):

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:

(WebKit::UserMediaPermissionRequestManagerProxy::setMockCaptureDevicesEnabledOverride):

  • UIProcess/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::setMockCaptureDevicesEnabled):

  • UIProcess/WebInspectorProxy.h:
  • UIProcess/WebInspectorProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setMockCaptureDevicesEnabledOverride):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebCoreSupport/WebInspectorClient.cpp:

(WebKit::WebInspectorClient::setMockCaptureDevicesEnabled):

  • WebProcess/WebCoreSupport/WebInspectorClient.h:
  • WebProcess/WebPage/WebInspector.cpp:

(WebKit::WebInspector::setMockCaptureDevicesEnabled):

  • WebProcess/WebPage/WebInspector.h:
5:40 PM Changeset in webkit [247661] by Jonathan Bedard
  • 3 edits in trunk/LayoutTests

fast/scrolling/ipad/* tests running on Mac
https://bugs.webkit.org/show_bug.cgi?id=199969
<rdar://problem/52531653>

Unreviewed test gardening.

4:56 PM Changeset in webkit [247660] by Kocsen Chung
  • 3 edits in branches/safari-608-branch/LayoutTests

Cherry-pick r247648. rdar://problem/53279094

Rebase fast/forms/ios/typing-in-input-in-iframe.html after r244141
https://bugs.webkit.org/show_bug.cgi?id=199875
<rdar://problem/50060561>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-07-19
Reviewed by Megan Gardner.

With r247571 and its justification, we need to rebase another test.

  • fast/forms/ios/typing-in-input-in-iframe-expected.txt:
  • fast/forms/ios/typing-in-input-in-iframe.html:

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

4:55 PM Changeset in webkit [247659] by Kocsen Chung
  • 3 edits in branches/safari-608-branch/LayoutTests

Cherry-pick r247571. rdar://problem/53279094

Rebase fast/forms/ios/delete-in-input-in-iframe.html after r244141
https://bugs.webkit.org/show_bug.cgi?id=199875
<rdar://problem/50060561>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-07-18
Reviewed by Megan Gardner.

In r202295, we added an ios-specific quirk to prevent scrolling on iOS because of UIKit/WebKit scrolling discrepancies.
In r244141, we changed the scrolling behavior to be more like macOS, and the test was broken. Since this was an intentional
change and the bugs reported in rdar://problem/26805722 (initially fixed by r202295) and rdar://problem/49225507 (fixed by r244141)
are both behaving as desired, the intentional change in r244141 should be reflected by new test expectations.
We do want typing in an input field in an iframe to scroll as we type.

  • fast/forms/ios/delete-in-input-in-iframe-expected.txt:
  • fast/forms/ios/delete-in-input-in-iframe.html:

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

4:10 PM Changeset in webkit [247658] by timothy_horton@apple.com
  • 4 edits in trunk/Source/WebKit

Web Content process gets stuck suspended after navigating away from a system preview
https://bugs.webkit.org/show_bug.cgi?id=199965
<rdar://problem/53109004>

Reviewed by Dean Jackson.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _isBackground]):

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

(-[WKSystemPreviewView web_initWithFrame:webView:mimeType:]):
(-[WKSystemPreviewView web_isBackground]):
Apply the fix from r193481 to WKSystemPreviewView as well, having it
become a WKApplicationStateTrackingView and plumbing that through
to our is-background machinery.

We really, really should instead have WKWebView itself be the application
state tracking view, but that is a bigger change (and has some implications
for full-screen video and whatnot).

3:50 PM Changeset in webkit [247657] by dino@apple.com
  • 3 edits in trunk/Source/WebKit

Provide correct names for UIContextMenuInteraction API replacements
https://bugs.webkit.org/show_bug.cgi?id=199966

Reviewed by Tim Horton.

We had some old incorrect names for replacements to SPI. While
here, I reordered and expanded the documentation for the new API.

  • UIProcess/API/Cocoa/WKUIDelegate.h:
  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
3:49 PM Changeset in webkit [247656] by Simon Fraser
  • 4 edits in trunk/Source/WebKit

[iOS WK2] Allow scrolling interaction on frames and oveflow scroll even when the main frame is rubber-banding
https://bugs.webkit.org/show_bug.cgi?id=199963
rdar://problem/52897797

Reviewed by Tim Horton.

Adopt UIKit SPI to allow for scrolling of inner UIScrollViews when the outer one is still rubber-banding.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

3:30 PM Changeset in webkit [247655] by aestes@apple.com
  • 2 edits in trunk/Source/WebCore

[Apple Pay] Log less in PaymentCoordinator::shouldEnableApplePayAPIs()
https://bugs.webkit.org/show_bug.cgi?id=199958

Reviewed by Tim Horton.

Only log when APIs are disabled due to user scripts.

  • Modules/applepay/PaymentCoordinator.cpp:

(WebCore::PaymentCoordinator::shouldEnableApplePayAPIs const):

3:11 PM Changeset in webkit [247654] by Kocsen Chung
  • 1 copy in tags/Safari-608.1.37

Tag Safari-608.1.37.

2:58 PM Changeset in webkit [247653] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit

[iOS] REGRESSION (r241734): Autocorrection highlight should hide when field becomes defocused
https://bugs.webkit.org/show_bug.cgi?id=199807
<rdar://problem/52760259>

Reviewed by Wenson Hsieh.

Sometimes the correction highlight may not hide when defocusing an editable field.
This occurs only when a person pressed a key in a non-editable element beforehand.
We need to reset some state to force a re-computation of whether a keyboard is still
needed whenever an element is defocused (blurred in web paralance).

Following r241734 both editable and non-editable key events are handled using the same
code path. This is accomplished by having WKContentView's -_requiresKeyboardWhenFirstResponder
return YES to tell UIKit it needs a keyboard even when there is no editable element focused.
As a result UIKit retains all the keyboard state, including keeping the correction highlight
visible. Prior to r241734 WKContentView's -_requiresKeyboardWhenFirstResponder would not return
YES when a non-editable element was focused and hence UIKit would tear down the keyboard
and its state, including the correction highlight. In r245154, we made keyboard instantiate
for a focused non-editable element lazy as a performance optimization. Although r245154
kept the r241734 behavior (just made it lazy) it re-wrote the code in such a way that we
can utilize it as a hook to fix this bug. In particular, we now clear the bit about a
seen keydown in a non-editable element whenever we are defocusing an editable element
before we reload the input views, as part of hiding the keyboard. On the reload, UIKit
will call -_requiresKeyboardWhenFirstResponder, WebKit will respond with NO now that
a non-editable element is focused and hence UIKit will do what it did pre r241734: tear
down the keyboard.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _didCommitLoadForMainFrame]): Clear the bit about a seen keydown here
so that we don't keep the keyboard around on a new page commit. This includes the case
when the same page is reloaded. There is not much advantage to keeping the keyboard
around across reloads and not doing so will reduce our memory footprint.
(-[WKContentView _elementDidBlur]): Clear the same bit as well when defocusing an
editable element. This will cause UIKit to tear down the keyboard on reload removing
the correction highlight.

2:17 PM Changeset in webkit [247652] by dino@apple.com
  • 8 edits in trunk/Source

Add a menu item to toggle between showing and hiding link previews
https://bugs.webkit.org/show_bug.cgi?id=199940
<rdar://problem/53032288>

Reviewed by Beth Dakin.

Source/WebCore:

New strings for Show/Hide Link Previews.

  • en.lproj/Localizable.strings:

Source/WebKit:

Add a new _WKElementAction that toggles the display of link previews
in context menus, and add it to the default set of actions we provide
for links.

When a UIAction is created from this new _WKElementAction type,
it can be identified by WKElementActionTypeToggleShowLinkPreviewsIdentifier.
This allows us to check a UIMenu provided by a delegate to make sure
that they have provided the toggle menu item. If they haven't, we add it
back.

The preference for showing links is moved from kCFPreferencesAnyApplication
to standard user defaults, so that it can be set no matter what the
hosting application is.

  • UIProcess/API/Cocoa/_WKElementAction.h: New action type.
  • UIProcess/API/Cocoa/_WKElementAction.mm:

(+[_WKElementAction _elementActionWithType:customTitle:assistant:]):
(+[_WKElementAction imageForElementActionType:]): Use eye.fill for now.
I'll need to check with HI to see if there is a more appropriate glyph.
(elementActionTypeToUIActionIdentifier):
(uiActionIdentifierToElementActionType):

  • UIProcess/ios/WKActionSheetAssistant.mm: Add the toggle action to

the default set.
(-[WKActionSheetAssistant defaultActionsForLinkSheet:]):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _registerPreview]): No need to listen for CFPreferences
notifications any more.
(-[WKContentView _unregisterPreview]):
(menuWithShowLinkPreviewAction): New method that adds the UIAction
for toggling previews to a UIMenu if necessary.
(-[WKContentView assignLegacyDataForContextMenuInteraction]):
(-[WKContentView _contextMenuInteraction:configurationForMenuAtLocation:completion:]):
(-[WKContentView _showLinkPreviewsPreferenceChanged:]): Deleted.
(titleForMenu): Deleted. URL text previews will be provided separately.

12:55 PM Changeset in webkit [247651] by Wenson Hsieh
  • 5 edits
    2 adds in trunk

[iOS] Entering 2FA code on idmsa.apple.com causes unexpected scrolling
https://bugs.webkit.org/show_bug.cgi?id=199949
<rdar://problem/49944428>

Reviewed by Tim Horton and Megan Gardner.

Source/WebKit:

Since at least iOS 11, -[UIScrollView _adjustForAutomaticKeyboardInfo:animated:lastAdjustment:] adjusts the
scroll view's content offset to account for updated keyboard bottom insets. In WebKit, we call this method
whenever keyboard geometry changes (based on system notifications, such as UIKeyboardWillHideNotification).

When switching between focused form fields, we hide the keyboard for the previous focused element prior to
showing the keyboard for the newly focused element. This means that we will actually dismiss the keyboard in the
process of changing the focused element, which posts keyboard geometry notifications, which causes us to scroll
WKScrollView.

On iOS 12, this would be immediately followed by re-presenting the keyboard for the new focused element, which
causes us to adjust the scroll view back to its original position right away; this means that the scrolling that
happens as a result of adjusting for the keyboard insets after dismissal doesn't result in any visible change.

However, on iOS 13, after r239441 and r244546, we now defer scrolling and zooming to reveal the focused element
until later; this means the scrolling that happens as a result of initially dismissing the keyboard now causes a
consistent jump in the scroll view's scroll position (whereas on iOS 12, this only happens rarely, and the jump
is also less noticeable).

To mitigate this, we detect the case where we're moving focus from one element to another; if we're about to
show a keyboard for the newly focused element, then we should avoid scrolling as a result of the impending
"keyboard will hide" notification.

Test: fast/forms/ios/no-scrolling-when-moving-focus-between-adjacent-fields.html

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _keyboardChangedWithInfo:adjustScrollView:]):
(-[WKWebView _keyboardWillHide:]):

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

(shouldShowKeyboardForElement):

Add a helper to determine whether we're focusing an element which presents a "keyboard" (i.e. a UIKit input
view, as opposed to modal select pickers, modal date pickers, or fields with inputmode="none", for which we
don't show an input view).

(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):
(-[WKContentView shouldIgnoreKeyboardWillHideNotification]):

LayoutTests:

Add a new layout test to verify that moving focus between horizontally adjacent form controls doesn't induce
vertical scrolling.

  • fast/forms/ios/no-scrolling-when-moving-focus-between-adjacent-fields-expected.txt: Added.
  • fast/forms/ios/no-scrolling-when-moving-focus-between-adjacent-fields.html: Added.
12:47 PM Changeset in webkit [247650] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Links stop working after long-pressing a link (WK1)
https://bugs.webkit.org/show_bug.cgi?id=199952
<rdar://problem/52291860>

Patch by Antoine Quint <Antoine Quint> on 2019-07-19
Reviewed by Wenson Hsieh.

Source/WebCore:

Test: fast/events/touch/ios/click-after-long-press.html

When EventHandler::tryToBeginDragAtPoint() is called, we must reset m_mousePressed to false so that
WebChromeClientIOS::observedContentChange() is called by EventHandler::mousePressed() when we would
process the next tap after a drag interaction.

  • page/ios/EventHandlerIOS.mm:

(WebCore::EventHandler::tryToBeginDragAtPoint):

LayoutTests:

  • fast/events/touch/ios/click-after-long-press-expected.txt: Added.
  • fast/events/touch/ios/click-after-long-press.html: Added.
11:06 AM Changeset in webkit [247649] by sihui_liu@apple.com
  • 3 edits in trunk/Source/WebCore

IndexedDB: error in starting version change transaction may be neglected
https://bugs.webkit.org/show_bug.cgi?id=199818
<rdar://problem/52925738>

Reviewed by Brady Eidson.

For version change transaction, IDBServer didn't wait the result of beginTransaction on the background thread
before giving the IDBClient the result of open request. In this case, beginTransaction may fail to update the
DatabaseVersion in database file or set m_originalDatabaseInfoBeforeVersionChange, but the transaction was
marked as started. When we later set m_databaseInfo with m_originalDatabaseInfoBeforeVersionChange,
m_databaseInfo could become nullptr.

To write a test for this, we will need to simulate an SQLite error. I manually tested this by crafting the
SQLiteStatement in beginTransaction, making it an invalid statement, and verified that error event, instead of
ungradeneeded event is dispatched to the IDBRequest.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::startVersionChangeTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::performStartVersionChangeTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformStartVersionChangeTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete):
(WebCore::IDBServer::UniqueIDBDatabase::beginTransactionInBackingStore): Deleted.

  • Modules/indexeddb/server/UniqueIDBDatabase.h:
9:56 AM Changeset in webkit [247648] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

Rebase fast/forms/ios/typing-in-input-in-iframe.html after r244141
https://bugs.webkit.org/show_bug.cgi?id=199875
<rdar://problem/50060561>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-07-19
Reviewed by Megan Gardner.

With r247571 and its justification, we need to rebase another test.

  • fast/forms/ios/typing-in-input-in-iframe-expected.txt:
  • fast/forms/ios/typing-in-input-in-iframe.html:
8:58 AM Changeset in webkit [247647] by aakash_jain@apple.com
  • 2 edits in trunk/Websites/bugs.webkit.org

[ews-app] EWS status-bubbles are sometimes multi-row with scroll-bar
https://bugs.webkit.org/show_bug.cgi?id=199939

Reviewed by Jonathan Bedard.

  • code-review.js: Disable scrolling.
8:54 AM Changeset in webkit [247646] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Display pre-existing Layout test failure names in the build summary
https://bugs.webkit.org/show_bug.cgi?id=199941

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(AnalyzeLayoutTestsResults.report_pre_existing_failures):

8:51 AM Changeset in webkit [247645] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Unable to bring up custom media controls on iOS for video.sina.cn
https://bugs.webkit.org/show_bug.cgi?id=199889
<rdar://problem/51883919>

Unreviewed test gardening.

This new test can only run on Internal bots.

Patch by Antoine Quint <Antoine Quint> on 2019-07-19

  • platform/ios/TestExpectations:
6:35 AM Changeset in webkit [247644] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Add partial content handling
https://bugs.webkit.org/show_bug.cgi?id=199930

Reviewed by Antti Koivisto.

Move the actual inline item placement to a dedicated functions. This enables us to
construct a dedicated InlineItem for the partial content and pass it in to this function.

<span>The quick brown fox jumps over the lazy dog</span> <- inline content
[The][ ][quick][ ][brown][ ][fox][ ][jumps][ ][over][ ][the][ ][lazy][ ][dog] <- InlineItems

Line breaking:
[The][ ][qu]
[ick] <- Partial InlineItem (position: 6 length: 3) from [quick] (position: 4 length: 5)

  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:

(WebCore::Layout::LineLayout::close):
(WebCore::Layout::LineLayout::placeInlineItem):
(WebCore::Layout::LineLayout::layout):
(WebCore::Layout::LineInput::LineInput):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::split):

  • layout/inlineformatting/InlineTextItem.h:
4:43 AM Changeset in webkit [247643] by cturner@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Flush get_range calls during PAUSED->READY in WebKitWebSource
https://bugs.webkit.org/show_bug.cgi?id=199934

Reviewed by Xabier Rodriguez-Calvar.

Unit testing not applicable.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcChangeState): A well-behaved element should unblock streaming threads
during a PAUSED->READY transition, so do that here.

2:56 AM Changeset in webkit [247642] by clopez@igalia.com
  • 3 edits in trunk/Tools

[GTK][WPE] run-webkit-tests should run with a temporal homedir
https://bugs.webkit.org/show_bug.cgi?id=199738

Reviewed by Michael Catanzaro.

Run the tests with an empty homedir that is created inside the driver tmpdir.
The driver tmpdir is a random directory created for each test runner that is purged after the run.

This is done to ensure that the test results are not affected by the user settings of any library.

  • Scripts/webkitpy/port/driver.py:

(Driver._setup_environ_for_driver):

  • Scripts/webkitpy/port/driver_unittest.py:

(DriverTest.test_setup_environ_base_vars):
(DriverTest):
(DriverTest.test_create_temporal_home_dir):

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

Remove some unneeded code in MathOperator
https://bugs.webkit.org/show_bug.cgi?id=199935

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

The initialize method is unneeded since the member
variables all use default initialization.

No new tests, not changing behavior.

  • rendering/mathml/MathOperator.cpp:

(WebCore::MathOperator::MathOperator):
(WebCore::MathOperator::GlyphAssemblyData::initialize): Deleted.

1:34 AM Changeset in webkit [247640] by commit-queue@webkit.org
  • 7 edits
    1 delete in trunk

Remove pywebsockets from thirdparty
https://bugs.webkit.org/show_bug.cgi?id=199710

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-07-19
Reviewed by Jonathan Bedard.

Tools:

We have a very old version of pywebsocket in webkitpy thirdparty, but we are also importing pywebsocket as part
of wpt tools. We can simply use the wpt one for all websocket tests and remove the old copy from sources.

  • Scripts/webkitpy/layout_tests/servers/websocket_server.py:

(PyWebSocket._prepare_config): Use pywebsocket from imported w3c tools directory.

  • Scripts/webkitpy/thirdparty/mod_pywebsocket/COPYING: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/init.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_base.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hixie75.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hybi.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/common.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/dispatch.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/extensions.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/init.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/_base.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/hybi.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/hybi00.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/headerparserhandler.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/http_header_util.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/memorizingfile.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/msgutil.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/mux.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/standalone.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/stream.py: Removed.
  • Scripts/webkitpy/thirdparty/mod_pywebsocket/util.py: Removed.

LayoutTests:

Update two tests that timeout with the new pywebsocket version, because the server doesn't close the connection
after handshake.AbortedByUserException(). Simply assume onopen to be called a success in handshake like other
tests using handshake.AbortedByUserException() do.

  • http/tests/websocket/tests/hybi/handshake-ok-with-legacy-sec-websocket-response-headers-expected.txt:
  • http/tests/websocket/tests/hybi/handshake-ok-with-legacy-sec-websocket-response-headers.html:
  • http/tests/websocket/tests/hybi/handshake-ok-with-legacy-websocket-response-headers-expected.txt:
  • http/tests/websocket/tests/hybi/handshake-ok-with-legacy-websocket-response-headers.html:
12:39 AM Changeset in webkit [247639] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Issues toggling multiple breakpoints on one line
https://bugs.webkit.org/show_bug.cgi?id=199918

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/SourceCodeTextEditor.js:

(WI.SourceCodeTextEditor):
(WI.SourceCodeTextEditor.prototype.close):
(WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
(WI.SourceCodeTextEditor.prototype.textEditorUpdatedFormatting):
(WI.SourceCodeTextEditor.prototype._handleFormatterDidChange): Added.
Listen for WI.SourceCode.Event.FormatterDidChange events as there may be multiple content
views for the same WI.SourceCode. Previously, if there were, only the active one would
properly update it's "line -> column -> breakpoint" mapping, causing an error to be thrown
when the non-active content views tried to retrieve the breakpoint for the new line/column.

Jul 18, 2019:

11:07 PM Changeset in webkit [247638] by bshafiei@apple.com
  • 2 edits in tags/Safari-608.1.36.0.1/Source/WebKit

Cherry-pick r247494. rdar://problem/53036744

[macCatalyst] Do not include WebKitLegacy.h in WebKit.h
https://bugs.webkit.org/show_bug.cgi?id=199833
<rdar://problem/53036744>

Reviewed by Tim Horton.

  • Shared/API/Cocoa/WebKit.h:

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

11:05 PM Changeset in webkit [247637] by bshafiei@apple.com
  • 7 edits in tags/Safari-608.1.36.0.1/Source

Versioning.

11:02 PM Changeset in webkit [247636] by bshafiei@apple.com
  • 1 copy in tags/Safari-608.1.36.0.1

Tag Safari-608.1.36.0.1.

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

Fix warning when importing WebKit in Swift
https://bugs.webkit.org/show_bug.cgi?id=199914
<rdar://problem/52854930>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-07-18
Reviewed by Wenson Hsieh.

  • UIProcess/API/Cocoa/NSAttributedString.h:

Declare NSAttributedString and update a swift name.
This fix was proposed by Argyrios Kyrtzidis.

6:40 PM Changeset in webkit [247634] by Alan Coon
  • 7 edits in branches/safari-608-branch/LayoutTests

Cherry-pick r247619. rdar://problem/53279090

[iOS Sim] Multiple quicklook tests are failing
https://bugs.webkit.org/show_bug.cgi?id=191711

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-07-18
Reviewed by Simon Fraser.

Rebaseline expected results for quicklook layout tests.

  • platform/ios/TestExpectations:
  • platform/ios/quicklook/powerpoint-expected.txt:
  • platform/ios/quicklook/powerpoint-legacy-expected.txt:
  • platform/ios/quicklook/resources/numbers-expected.pdf:
  • quicklook/resources/keynote-expected.pdf:
  • quicklook/resources/pages-expected.pdf:

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

6:40 PM Changeset in webkit [247633] by Alan Coon
  • 3 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r247568. rdar://problem/53279098

REGRESSION: Panning on an Amazon product image scrolls the page on iPadOS
https://bugs.webkit.org/show_bug.cgi?id=199905
<rdar://problem/49124529>

Reviewed by Dean Jackson.

Amazon product pages include images that the user can touch and pan to show zoomed details in a side image. This
currently works on iPadOS thanks to the dispatch of simulated "mousemove" events on the product image, but the site
doesn't call preventDefault() when handling those events as it wasn't necessary for macOS.

We add a new quirk that will indicate that a given element is such a product image.

  • page/Quirks.cpp: (WebCore::Quirks::isAmazon const): (WebCore::Quirks::shouldDispatchSimulatedMouseEvents const): (WebCore::Quirks::shouldDispatchedSimulatedMouseEventsAssumeDefaultPrevented const): (WebCore::Quirks::simulatedMouseEventTypeForTarget const):
  • page/Quirks.h:

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

6:40 PM Changeset in webkit [247632] by Alan Coon
  • 12 edits
    5 adds in branches/safari-608-branch

Cherry-pick r247566. rdar://problem/53279081

Make sure to set kCTFontFallbackOptionAttribute to kCTFontFallbackOptionSystem for system fonts
https://bugs.webkit.org/show_bug.cgi?id=199769
<rdar://problem/49390297>

Reviewed by Myles C. Maxfield.

Source/WebCore:

When getting a system font, set the appropriate attribute so that it
does not fallback to a user initiated font.
Add an ASSERT that checks that the font in use is not a user font if
policy is to not use user installed fonts.

Tests: fast/text/user-installed-fonts/extended-character-with-user-font.html

fast/text/user-installed-fonts/extended-character.html

  • platform/graphics/Font.h:
  • platform/graphics/FontCascadeFonts.cpp: (WebCore::FontCascadeFonts::glyphDataForSystemFallback):
  • platform/graphics/cocoa/FontCacheCoreText.cpp: (WebCore::preparePlatformFont): (WebCore::FontDatabase::singletonAllowingUserInstalledFonts): (WebCore::FontDatabase::singletonDisallowingUserInstalledFonts): (WebCore::addAttributesForInstalledFonts): (WebCore::addAttributesForWebFonts): (WebCore::installedFontMandatoryAttributes):
  • platform/graphics/mac/SimpleFontDataCoreText.cpp: (WebCore::Font::isUserInstalledFont const):

Source/WTF:

  • wtf/Platform.h:

Tools:

Add a font containing one extended character not found in system fonts.

  • WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
  • WebKitTestRunner/fonts/FakeHelvetica-SingleExtendedCharacter.ttf: Added.

LayoutTests:

Tests require WTR and recent MacOS, hence why they are disabled elsewhere.

  • TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • fast/text/user-installed-fonts/extended-character-expected.html: Added.
  • fast/text/user-installed-fonts/extended-character-with-user-font-expected-mismatch.html: Added.
  • fast/text/user-installed-fonts/extended-character-with-user-font.html: Added.
  • fast/text/user-installed-fonts/extended-character.html: Added.

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

6:39 PM Changeset in webkit [247631] by Alan Coon
  • 3 edits in branches/safari-608-branch/Source/WebKit

Cherry-pick r247565. rdar://problem/53279116

Regression(r247486) Multiple Layout Tests in http/tests/cache/* are crashing on iOS Debug WK2
https://bugs.webkit.org/show_bug.cgi?id=199892
<rdar://problem/53230217>

Reviewed by Geoffrey Garen.

The StorageManager was unregistering itself as a WorkQueueMessageReceiver on a given IPC
connection too early. As a result, we would sometimes receive a 'StorageManager:DestroyStorageMap'
IPC in NetworkConnectionToWebProcess::didReceiveMessage() with nobody to process it, which would
trigger an assertion. To address the issue, we stop unregistering the StorageManager as a
WorkQueueMessageReceiver inside removeAllowedSessionStorageNamespaceConnection(). Instead, we
let the logic inside processDidCloseConnection() take care of it once the connection closes.

  • NetworkProcess/WebStorage/StorageManager.cpp: (WebKit::StorageManager::removeAllowedSessionStorageNamespaceConnection): (WebKit::StorageManager::processDidCloseConnection):
  • NetworkProcess/WebStorage/StorageManager.h:

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

6:39 PM Changeset in webkit [247630] by Alan Coon
  • 6 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r247562. rdar://problem/53279086

[LFC][IFC] InlineFormattingContext::LineLayout::placeInlineItems is getting too complex.
https://bugs.webkit.org/show_bug.cgi?id=199898
<rdar://problem/53235958>

Reviewed by Antti Koivisto.

It's time to restructure LineLayout::placeInlineItems to be able to expand it further.
Introduce the LineLayout class. This class is responsible to place the inline items on the current line.
(Rename InlineFormattingContext::lineLayout -> InlineFormattingContext::InlineLayout and
use Line::InitialConstraints in LineInput)

  • layout/inlineformatting/InlineFormattingContext.cpp: (WebCore::Layout::InlineFormattingContext::layout const): (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthConstraints const):
  • layout/inlineformatting/InlineFormattingContext.h: (WebCore::Layout::InlineFormattingContext::LineLayout::layoutState const): Deleted.
  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp: (WebCore::Layout::inlineItemWidth): (WebCore::Layout::LineLayout::layoutState const): (WebCore::Layout::LineLayout::UncommittedContent::runs): (WebCore::Layout::LineLayout::UncommittedContent::isEmpty const): (WebCore::Layout::LineLayout::UncommittedContent::size const): (WebCore::Layout::LineLayout::UncommittedContent::width const): (WebCore::Layout::LineLayout::UncommittedContent::add): (WebCore::Layout::LineLayout::UncommittedContent::reset): (WebCore::Layout::LineLayout::LineLayout): (WebCore::Layout::LineLayout::commitPendingContent): (WebCore::Layout::LineLayout::close): (WebCore::Layout::LineLayout::layout): (WebCore::Layout::LineInput::LineInput): (WebCore::Layout::InlineFormattingContext::InlineLayout::InlineLayout): (WebCore::Layout::InlineFormattingContext::InlineLayout::layout const): (WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const): (WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const): (WebCore::Layout::InlineFormattingContext::InlineLayout::alignRuns const): (WebCore::Layout::UncommittedContent::runs): Deleted. (WebCore::Layout::UncommittedContent::isEmpty const): Deleted. (WebCore::Layout::UncommittedContent::size const): Deleted. (WebCore::Layout::UncommittedContent::width const): Deleted. (WebCore::Layout::UncommittedContent::add): Deleted. (WebCore::Layout::UncommittedContent::reset): Deleted. (WebCore::Layout::LineInput::HorizontalConstraint::HorizontalConstraint): Deleted. (WebCore::Layout::InlineFormattingContext::LineLayout::LineLayout): Deleted. (WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const): Deleted. (WebCore::Layout::InlineFormattingContext::LineLayout::layout const): Deleted. (WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const): Deleted. (WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const): Deleted. (WebCore::Layout::InlineFormattingContext::LineLayout::alignRuns const): Deleted.
  • layout/inlineformatting/InlineLine.cpp: (WebCore::Layout::Line::Line):
  • layout/inlineformatting/InlineLine.h:

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

6:39 PM Changeset in webkit [247629] by Alan Coon
  • 2 edits in branches/safari-608-branch/Source/WebKit

Cherry-pick r247552. rdar://problem/53279120

Set WordIsNearTap flag, was not being set at all before
https://bugs.webkit.org/show_bug.cgi?id=199880

Reviewed by Wenson Hsieh.

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

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

6:34 PM Changeset in webkit [247628] by Jonathan Bedard
  • 2 edits
    94 adds in trunk/Tools

results.webkit.org: Move resultsdbpy to WebKit
https://bugs.webkit.org/show_bug.cgi?id=199837
<rdar://problem/53172130>

Rubber-stamped by Aakash Jain.

Moving the entirety of the resultsdbpy library, which provides utilities to build
a database designed to store, visualize and organize test results, into WebKit.

  • Scripts/webkitpy/style/checker.py:

(CheckerDispatcher._create_checker): resulltsdbpy is a Python 3 library.

  • resultsdbpy: Added.
  • resultsdbpy/MANIFEST.in: Added.
  • resultsdbpy/README.md: Added.
  • resultsdbpy/resultsdbpy: Added.
  • resultsdbpy/resultsdbpy/init.py: Added.
  • resultsdbpy/resultsdbpy/controller: Added.
  • resultsdbpy/resultsdbpy/controller/init.py: Added.
  • resultsdbpy/resultsdbpy/controller/api_routes.py: Added.
  • resultsdbpy/resultsdbpy/controller/ci_controller.py: Added.
  • resultsdbpy/resultsdbpy/controller/ci_controller_unittest.py: Added.
  • resultsdbpy/resultsdbpy/controller/commit.py: Added.
  • resultsdbpy/resultsdbpy/controller/commit_controller.py: Added.
  • resultsdbpy/resultsdbpy/controller/commit_controller_unittest.py: Added.
  • resultsdbpy/resultsdbpy/controller/commit_unittest.py: Added.
  • resultsdbpy/resultsdbpy/controller/configuration.py: Added.
  • resultsdbpy/resultsdbpy/controller/configuration_controller.py: Added.
  • resultsdbpy/resultsdbpy/controller/configuration_controller_unittest.py: Added.
  • resultsdbpy/resultsdbpy/controller/configuration_unittest.py: Added.
  • resultsdbpy/resultsdbpy/controller/suite_controller.py: Added.
  • resultsdbpy/resultsdbpy/controller/suite_controller_unittest.py: Added.
  • resultsdbpy/resultsdbpy/controller/test_controller.py: Added.
  • resultsdbpy/resultsdbpy/controller/test_controller_unittest.py: Added.
  • resultsdbpy/resultsdbpy/controller/upload_controller.py: Added.
  • resultsdbpy/resultsdbpy/controller/upload_controller_unittest.py: Added.
  • resultsdbpy/resultsdbpy/flask_support: Added.
  • resultsdbpy/resultsdbpy/flask_support/init.py: Added.
  • resultsdbpy/resultsdbpy/flask_support/authed_blueprint.py: Added.
  • resultsdbpy/resultsdbpy/flask_support/flask_test_context.py: Added.
  • resultsdbpy/resultsdbpy/flask_support/flask_testcase.py: Added.
  • resultsdbpy/resultsdbpy/flask_support/util.py: Added.
  • resultsdbpy/resultsdbpy/flask_support/util_unittest.py: Added.
  • resultsdbpy/resultsdbpy/model: Added.
  • resultsdbpy/resultsdbpy/model/init.py: Added.
  • resultsdbpy/resultsdbpy/model/cassandra_context.py: Added.
  • resultsdbpy/resultsdbpy/model/cassandra_context_unittest.py: Added.
  • resultsdbpy/resultsdbpy/model/casserole.py: Added.
  • resultsdbpy/resultsdbpy/model/casserole_unittest.py: Added.
  • resultsdbpy/resultsdbpy/model/ci_context.py: Added.
  • resultsdbpy/resultsdbpy/model/ci_context_unittest.py: Added.
  • resultsdbpy/resultsdbpy/model/commit_context.py: Added.
  • resultsdbpy/resultsdbpy/model/commit_context_unittest.py: Added.
  • resultsdbpy/resultsdbpy/model/configuration_context.py: Added.
  • resultsdbpy/resultsdbpy/model/configuration_context_unittest.py: Added.
  • resultsdbpy/resultsdbpy/model/docker-compose.yml: Added.
  • resultsdbpy/resultsdbpy/model/docker.py: Added.
  • resultsdbpy/resultsdbpy/model/docker_unittest.py: Added.
  • resultsdbpy/resultsdbpy/model/mock_cassandra_context.py: Added.
  • resultsdbpy/resultsdbpy/model/mock_model_factory.py: Added.
  • resultsdbpy/resultsdbpy/model/mock_repository.py: Added.
  • resultsdbpy/resultsdbpy/model/model.py: Added.
  • resultsdbpy/resultsdbpy/model/partitioned_redis.py: Added.
  • resultsdbpy/resultsdbpy/model/partitioned_redis_unittest.py: Added.
  • resultsdbpy/resultsdbpy/model/redis_unittest.py: Added.
  • resultsdbpy/resultsdbpy/model/repository.py: Added.
  • resultsdbpy/resultsdbpy/model/repository_unittest.py: Added.
  • resultsdbpy/resultsdbpy/model/suite_context.py: Added.
  • resultsdbpy/resultsdbpy/model/suite_context_unittest.py: Added.
  • resultsdbpy/resultsdbpy/model/test_context.py: Added.
  • resultsdbpy/resultsdbpy/model/test_context_unittest.py: Added.
  • resultsdbpy/resultsdbpy/model/upload_context.py: Added.
  • resultsdbpy/resultsdbpy/model/upload_context_unittest.py: Added.
  • resultsdbpy/resultsdbpy/model/wait_for_docker_test_case.py: Added.
  • resultsdbpy/resultsdbpy/run-tests: Added.
  • resultsdbpy/resultsdbpy/view: Added.
  • resultsdbpy/resultsdbpy/view/init.py: Added.
  • resultsdbpy/resultsdbpy/view/ci_view.py: Added.
  • resultsdbpy/resultsdbpy/view/commit_view.py: Added.
  • resultsdbpy/resultsdbpy/view/commit_view_unittest.py: Added.
  • resultsdbpy/resultsdbpy/view/site_menu.py: Added.
  • resultsdbpy/resultsdbpy/view/static: Added.
  • resultsdbpy/resultsdbpy/view/static/css: Added.
  • resultsdbpy/resultsdbpy/view/static/css/commit.css: Added.
  • resultsdbpy/resultsdbpy/view/static/css/drawer.css: Added.
  • resultsdbpy/resultsdbpy/view/static/css/search.css: Added.
  • resultsdbpy/resultsdbpy/view/static/css/timeline.css: Added.
  • resultsdbpy/resultsdbpy/view/static/js: Added.
  • resultsdbpy/resultsdbpy/view/static/js/commit.js: Added.
  • resultsdbpy/resultsdbpy/view/static/js/common.js: Added.
  • resultsdbpy/resultsdbpy/view/static/js/configuration.js: Added.
  • resultsdbpy/resultsdbpy/view/static/js/drawer.js: Added.
  • resultsdbpy/resultsdbpy/view/static/js/search.js: Added.
  • resultsdbpy/resultsdbpy/view/static/js/timeline.js: Added.
  • resultsdbpy/resultsdbpy/view/suite_view.py: Added.
  • resultsdbpy/resultsdbpy/view/templates: Added.
  • resultsdbpy/resultsdbpy/view/templates/base.html: Added.
  • resultsdbpy/resultsdbpy/view/templates/commit.html: Added.
  • resultsdbpy/resultsdbpy/view/templates/commits.html: Added.
  • resultsdbpy/resultsdbpy/view/templates/documentation.html: Added.
  • resultsdbpy/resultsdbpy/view/templates/error.html: Added.
  • resultsdbpy/resultsdbpy/view/templates/search.html: Added.
  • resultsdbpy/resultsdbpy/view/templates/suite_results.html: Added.
  • resultsdbpy/resultsdbpy/view/view_routes.py: Added.
  • resultsdbpy/resultsdbpy/view/view_routes_unittest.py: Added.
  • resultsdbpy/setup.py: Added.
5:23 PM Changeset in webkit [247627] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Enable simulated mouse events quirk for soundcloud.com
https://bugs.webkit.org/show_bug.cgi?id=199908
<rdar://problem/52915981>

Patch by Antoine Quint <Antoine Quint> on 2019-07-18
Reviewed by Brent Fulgham.

Scrubbing on soundcloud.com relies on mouse events alone when displaying on iPad with the desktop UA string.
Opting into the simulated mouse events quirk makes scrubbing work and we also ensure that page scrolling is
disabled as a result of scrubbing by returning true in shouldDispatchedSimulatedMouseEventsAssumeDefaultPrevented().

Also making a drive-by fix in shouldDispatchedSimulatedMouseEventsAssumeDefaultPrevented() to use a reference
instead of a pointer when downcasting a null-checked pointer.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
(WebCore::Quirks::shouldDispatchedSimulatedMouseEventsAssumeDefaultPrevented const):

5:07 PM Changeset in webkit [247626] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

Prewarm font cache with more fonts
https://bugs.webkit.org/show_bug.cgi?id=199283

Reviewed by Myles C. Maxfield.

Initialize the list of families requiring system fallback in the prewarming information struct, since
this was part of the original, approved patch, and is needed for the performance improvement.

No new tests, covered by existing tests.

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::fontFamiliesForPrewarming):
(WebCore::FontCache::prewarmGlobally):

4:46 PM Changeset in webkit [247625] by achristensen@apple.com
  • 6 edits in trunk

Add and test _WKWebsiteDataStoreConfiguration.deviceIdHashSaltsStorageDirectory SPI
https://bugs.webkit.org/show_bug.cgi?id=199923

Reviewed by Youenn Fablet.

Source/WebKit:

This is a step towards us getting rid of WebsiteDataStore::legacyDefaultDataStoreConfiguration

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _initWithConfiguration:]):

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

(-[_WKWebsiteDataStoreConfiguration deviceIdHashSaltsStorageDirectory]):
(-[_WKWebsiteDataStoreConfiguration setDeviceIdHashSaltsStorageDirectory:]):

Tools:

  • TestWebKitAPI/Tests/WebKit/GetUserMediaNavigation.mm:

(TestWebKitAPI::TEST):

4:31 PM Changeset in webkit [247624] by Ryan Haddad
  • 3 edits in trunk/Source/WebCore

Unreviewed, rolling out r247531.

Caused multiple IndexedDB layout test crashes.

Reverted changeset:

"IndexedDB: error in starting version change transaction may
be neglected"
https://bugs.webkit.org/show_bug.cgi?id=199818
https://trac.webkit.org/changeset/247531

4:23 PM Changeset in webkit [247623] by Alan Coon
  • 3 edits in branches/safari-608-branch/Source/WebCore

Revert r247531. rdar://problem/53229712

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

[ews-build] Enable iOS WK2 tester queue on new EWS
https://bugs.webkit.org/show_bug.cgi?id=199867

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/config.json: Enabled the triggers for ios-wk2 queue.
  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py: Enabled ios-sim (builder) and ios-wk2 (tester) bubbles.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js: Removed ios-sim queue from bot-watcher's dashboard.
  • QueueStatusServer/config/queues.py: Removed ios-sim queue from old EWS.
2:56 PM Changeset in webkit [247621] by graouts@webkit.org
  • 3 edits in trunk/Source/WebCore

Ensure Quirks::shouldDispatchSimulatedMouseEvents() works for all Google Maps and Amazon domains
https://bugs.webkit.org/show_bug.cgi?id=199904
<rdar://problem/53250104>

Reviewed by Dean Jackson.

Use topPrivatelyControlledDomain() to determine whether the URL is a Google or Amazon domain so as to apply
Google Maps and Amazon quirks to all the various domain names used.

  • page/Quirks.cpp:

(WebCore::Quirks::isAmazon const):
(WebCore::Quirks::isGoogleMaps const):
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
(WebCore::Quirks::simulatedMouseEventTypeForTarget const):

  • page/Quirks.h:
2:42 PM Changeset in webkit [247620] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

Crash under WebPage::boundaryEventOccurred
https://bugs.webkit.org/show_bug.cgi?id=199907

Reviewed by Chris Fleizach.

Add null pointer checks.

No new tests, since I have not been able to reproduce this in a test.

  • Modules/speech/SpeechSynthesis.cpp:

(WebCore::SpeechSynthesis::didStartSpeaking):
(WebCore::SpeechSynthesis::didFinishSpeaking):
(WebCore::SpeechSynthesis::didPauseSpeaking):
(WebCore::SpeechSynthesis::didResumeSpeaking):
(WebCore::SpeechSynthesis::speakingErrorOccurred):
(WebCore::SpeechSynthesis::boundaryEventOccurred):

2:15 PM Changeset in webkit [247619] by commit-queue@webkit.org
  • 7 edits in trunk/LayoutTests

[iOS Sim] Multiple quicklook tests are failing
https://bugs.webkit.org/show_bug.cgi?id=191711

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-07-18
Reviewed by Simon Fraser.

Rebaseline expected results for quicklook layout tests.

  • platform/ios/TestExpectations:
  • platform/ios/quicklook/powerpoint-expected.txt:
  • platform/ios/quicklook/powerpoint-legacy-expected.txt:
  • platform/ios/quicklook/resources/numbers-expected.pdf:
  • quicklook/resources/keynote-expected.pdf:
  • quicklook/resources/pages-expected.pdf:
1:26 PM Changeset in webkit [247618] by Kocsen Chung
  • 3 edits in branches/safari-608-branch/Source/WebKit

Cherry-pick r247557. rdar://problem/53254407

[macCatalyst] Unable to interact with YouTube video while it's playing
https://bugs.webkit.org/show_bug.cgi?id=199893
<rdar://problem/51871151>

Reviewed by Simon Fraser.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: (-[WKRemoteView initWithFrame:contextID:]): (-[WKUIRemoteView initWithFrame:pid:contextID:]): Disable remote context hit-testing for WKUIRemoteView just like we already do for WKRemoteView.

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

1:26 PM Changeset in webkit [247617] by Kocsen Chung
  • 17 edits in branches/safari-608-branch/Source

Cherry-pick r247555. rdar://problem/53254411

Prewarm local storage in the NetworkProcess to reduce WebContent process hangs
https://bugs.webkit.org/show_bug.cgi?id=199879
<rdar://problem/53217757>

Reviewed by Ryosuke Niwa.

Source/WebCore:

When JS accesses window.localStorage for the first time, we end up doing a
synchronous IPC to the network process to pull in all items in the local
storage for the origin. If the network process does not have this data in
memory, it has to read it from a database on disk, which may take a significant
amount of time and hang the WebContent process during this time.

To alleviate this problem, this patch introduces prewarming on the local storage
in the network process when loading a given origin in the WebContent process.
This way, in most cases, when the JS accesses window.localStorage for the first
time, the synchronous IPC to the network process returns much faster (measured
50-100ms for a very large database, down from 250-300ms), as it only needs to
IPC the data over, without the need to fetch it from disk.

As a safety net to avoid excessive prewarming, we currently prewarm at most 5
security origins per page load.

  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::commitData):
  • page/DOMWindow.cpp: (WebCore::DOMWindow::prewarmLocalStorageIfNecessary):
  • page/DOMWindow.h:
  • page/Frame.cpp: (WebCore::Frame::didPrewarmLocalStorage): (WebCore::Frame::mayPrewarmLocalStorage const):
  • page/Frame.h:
  • storage/Storage.cpp: (WebCore::Storage::prewarm):
  • storage/Storage.h:
  • storage/StorageArea.h: (WebCore::StorageArea::prewarm):

Source/WebKit:

  • NetworkProcess/WebStorage/StorageManager.cpp: (WebKit::StorageManager::prewarm): (WebKit::StorageManager::getValues):
  • NetworkProcess/WebStorage/StorageManager.h:
  • NetworkProcess/WebStorage/StorageManager.messages.in:
  • WebProcess/WebStorage/StorageAreaImpl.cpp: (WebKit::StorageAreaImpl::prewarm):
  • WebProcess/WebStorage/StorageAreaImpl.h:
  • WebProcess/WebStorage/StorageAreaMap.cpp: (WebKit::StorageAreaMap::loadValuesIfNeeded): (WebKit::StorageAreaMap::prewarm):
  • WebProcess/WebStorage/StorageAreaMap.h:

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

1:25 PM Changeset in webkit [247616] by Kocsen Chung
  • 2 edits in branches/safari-608-branch/Source/WebKit

Cherry-pick r247559. rdar://problem/53230035

Early Out of positionInfomation check if possible
https://bugs.webkit.org/show_bug.cgi?id=199885
<rdar://problem/53229413>

This is an early-out check that happens after most of the work is done.
Move it to happen before we make all these calls, if in the end, we will not use the information.

Reviewed by Tim Horton.

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):

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

1:25 PM Changeset in webkit [247615] by Kocsen Chung
  • 2 edits in branches/safari-608-branch/JSTests

Cherry-pick r247485. rdar://problem/53229615

Unreviewed, test262 gardening.

  • test262/expectations.yaml:

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

1:25 PM Changeset in webkit [247614] by Kocsen Chung
  • 49 edits
    18 copies
    159 adds
    5 deletes in branches/safari-608-branch/JSTests

Cherry-pick r247469. rdar://problem/53229615

Update test262
https://bugs.webkit.org/show_bug.cgi?id=199801

Rubber-stamped by Yusuke Suzuki.

  • test262/expectations.yaml:
  • test262/latest-changes-summary.txt:
  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/Symbol.toStringTag.js: Added. (fg.new.FinalizationGroup): (callback):
  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-job-not-active-throws.js: Added. (fg.new.FinalizationGroup): (callback):
  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-length.js: Added. (fg.new.FinalizationGroup): (callback):
  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-missing-internal-throws.js: Added. (fg.new.FinalizationGroup): (callback):
  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-name.js: Added. (fg.new.FinalizationGroup): (callback):
  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-not-object-throws.js: Added. (fg.new.FinalizationGroup): (callback):
  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-prop-desc.js: Added. (fg.new.FinalizationGroup): (callback):
  • test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/proto.js: Added. (callback): (fg.new.FinalizationGroup):
  • test262/test/built-ins/FinalizationGroup/constructor.js: Added.
  • test262/test/built-ins/FinalizationGroup/gc-has-one-chance-to-call-cleanupCallback.js: Added. (cb): (fg.new.FinalizationGroup): (emptyCells): (async.fn): (fn.then.async):
  • test262/test/built-ins/FinalizationGroup/instance-extensible.js: Added. (fg.new.FinalizationGroup):
  • test262/test/built-ins/FinalizationGroup/length.js: Added.
  • test262/test/built-ins/FinalizationGroup/name.js: Added.
  • test262/test/built-ins/FinalizationGroup/newtarget-prototype-is-not-object.js: Added. (newTarget): (fn):
  • test262/test/built-ins/FinalizationGroup/prop-desc.js: Added.
  • test262/test/built-ins/FinalizationGroup/proto-from-ctor-realm.js: Added. (fn):
  • test262/test/built-ins/FinalizationGroup/proto.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype-from-newtarget-abrupt.js: Added. (newTarget):
  • test262/test/built-ins/FinalizationGroup/prototype-from-newtarget-custom.js: Added. (newTarget):
  • test262/test/built-ins/FinalizationGroup/prototype-from-newtarget.js: Added. (fg.new.FinalizationGroup):
  • test262/test/built-ins/FinalizationGroup/prototype/Symbol.toStringTag.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/callback-iterator-proto.js: Added. (callback): (fg.new.FinalizationGroup):
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/callback-not-callable-throws.js: Added. (fg.new.FinalizationGroup):
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/cleanup-prevented-with-reference.js: Added. (cb): (fg.new.FinalizationGroup): (emptyCells):
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/cleanup-prevented-with-unregister.js: Added. (fg.new.FinalizationGroup): (fg.cleanupSome.cb):
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/cleanupcallback-iterator-proto.js: Added. (callback):
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/custom-this.js: Added. (fn): (cb):
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/gc-cleanup-not-prevented-with-wr-deref.js: Added. (cb): (fg.new.FinalizationGroup): (emptyCells):
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/iterator-dynamic.js: Added. (fg.new.FinalizationGroup): (callback):
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/iterator-holdings-multiple-values.js: Added. (fg.new.FinalizationGroup): (callback):
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/length.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/name.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/poisoned-callback-throws.js: Added. (poisoned): (fg.new.FinalizationGroup): (emptyCells):
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/poisoned-cleanup-callback-throws.js: Added. (poisoned): (emptyCells):
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/prop-desc.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/return-undefined-with-gc.js: Added. (fn): (cb): (emptyCells): (prototype.assert.sameValue.fg.cleanupSome):
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/return-undefined.js: Added. (fn): (cb): (poisoned): (assert.sameValue.fg.cleanupSome): (prototype.assert.sameValue.fg.cleanupSome):
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/this-does-not-have-internal-cells-throws.js: Added. (cb):
  • test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/this-not-object-throws.js: Added. (cb):
  • test262/test/built-ins/FinalizationGroup/prototype/constructor.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/prop-desc.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/proto.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/register/custom-this.js: Added. (fn):
  • test262/test/built-ins/FinalizationGroup/prototype/register/holdings-any-value-type.js: Added. (fn):
  • test262/test/built-ins/FinalizationGroup/prototype/register/holdings-same-as-target.js: Added. (fg.new.FinalizationGroup):
  • test262/test/built-ins/FinalizationGroup/prototype/register/length.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/register/name.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/register/prop-desc.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/register/return-undefined-register-itself.js: Added. (fn):
  • test262/test/built-ins/FinalizationGroup/prototype/register/return-undefined.js: Added. (fn):
  • test262/test/built-ins/FinalizationGroup/prototype/register/target-not-object-throws.js: Added. (fg.new.FinalizationGroup):
  • test262/test/built-ins/FinalizationGroup/prototype/register/this-does-not-have-internal-target-throws.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/register/this-not-object-throws.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/register/unregisterToken-not-object-or-undefined-throws.js: Added. (fg.new.FinalizationGroup):
  • test262/test/built-ins/FinalizationGroup/prototype/register/unregisterToken-same-as-holdings-and-target.js: Added. (fg.new.FinalizationGroup):
  • test262/test/built-ins/FinalizationGroup/prototype/register/unregisterToken-same-as-holdings.js: Added. (fg.new.FinalizationGroup):
  • test262/test/built-ins/FinalizationGroup/prototype/register/unregisterToken-same-as-target.js: Added. (fg.new.FinalizationGroup):
  • test262/test/built-ins/FinalizationGroup/prototype/unregister/custom-this.js: Added. (fn):
  • test262/test/built-ins/FinalizationGroup/prototype/unregister/length.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/unregister/name.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/unregister/prop-desc.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/unregister/this-does-not-have-internal-cells-throws.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/unregister/this-not-object-throws.js: Added.
  • test262/test/built-ins/FinalizationGroup/prototype/unregister/unregister.js: Added. (fn):
  • test262/test/built-ins/FinalizationGroup/prototype/unregister/unregisterToken-not-object-throws.js: Added. (fg.new.FinalizationGroup):
  • test262/test/built-ins/FinalizationGroup/returns-new-object-from-constructor.js: Added. (cleanupCallback): (let.key.of.Object.getOwnPropertyNames): (set for):
  • test262/test/built-ins/FinalizationGroup/target-not-callable-throws.js: Added.
  • test262/test/built-ins/FinalizationGroup/undefined-newtarget-throws.js: Added. (FinalizationGroup):
  • test262/test/built-ins/FinalizationGroup/unnaffected-by-poisoned-cleanupCallback.js: Added. (cleanupCallback): (let.key.of.Object.getOwnPropertyNames): (set for):
  • test262/test/built-ins/Function/StrictFunction_restricted-properties.js:
  • test262/test/built-ins/Function/prototype/bind/BoundFunction_restricted-properties.js:
  • test262/test/built-ins/Function/prototype/restricted-property-arguments.js:
  • test262/test/built-ins/Function/prototype/restricted-property-caller.js:
  • test262/test/built-ins/Object/prototype/toString/proxy-function-async.js: Added. (asyncProxy.new.Proxy.async):
  • test262/test/built-ins/Object/prototype/toString/proxy-function.js: (asyncProxy.new.Proxy.async):
  • test262/test/built-ins/Object/prototype/toString/symbol-tag-non-str-builtin.js: Added. (setIter.set Symbol): (set defaultTag): (gen): (get return): (set new):
  • test262/test/built-ins/Object/prototype/toString/symbol-tag-non-str-proxy-function.js: Added. (generatorProxy.new.Proxy): (asyncProxy.new.Proxy.async):
  • test262/test/built-ins/Object/subclass-object-arg.js:
  • test262/test/built-ins/Promise/all/invoke-resolve-get-error-close.js:
  • test262/test/built-ins/Promise/all/resolve-element-function-name.js:
  • test262/test/built-ins/Promise/allSettled/invoke-resolve-get-error-close.js:
  • test262/test/built-ins/Promise/allSettled/reject-element-function-name.js:
  • test262/test/built-ins/Promise/allSettled/resolve-element-function-name.js:
  • test262/test/built-ins/Promise/executor-function-name.js:
  • test262/test/built-ins/Promise/race/invoke-resolve-get-error-close.js:
  • test262/test/built-ins/Promise/reject-function-name.js:
  • test262/test/built-ins/Promise/resolve-function-name.js:
  • test262/test/built-ins/Set/prototype/values/does-not-have-setdata-internal-slot-weakset.js:
  • test262/test/built-ins/WeakRef/constructor.js: Added.
  • test262/test/built-ins/WeakRef/instance-extensible.js: Added.
  • test262/test/built-ins/WeakRef/length.js: Added.
  • test262/test/built-ins/WeakRef/name.js: Added.
  • test262/test/built-ins/WeakRef/newtarget-prototype-is-not-object.js: Added. (newTarget):
  • test262/test/built-ins/WeakRef/prop-desc.js: Added.
  • test262/test/built-ins/WeakRef/proto-from-ctor-realm.js: Added.
  • test262/test/built-ins/WeakRef/proto.js: Added.
  • test262/test/built-ins/WeakRef/prototype-from-newtarget-abrupt.js: Added. (newTarget):
  • test262/test/built-ins/WeakRef/prototype-from-newtarget-custom.js: Added. (newTarget):
  • test262/test/built-ins/WeakRef/prototype-from-newtarget.js: Added.
  • test262/test/built-ins/WeakRef/prototype/Symbol.toStringTag.js: Added.
  • test262/test/built-ins/WeakRef/prototype/constructor.js: Added.
  • test262/test/built-ins/WeakRef/prototype/deref/custom-this.js: Added.
  • test262/test/built-ins/WeakRef/prototype/deref/gc-cleanup-not-prevented-with-wr-deref.js: Added. (emptyCells):
  • test262/test/built-ins/WeakRef/prototype/deref/length.js: Added.
  • test262/test/built-ins/WeakRef/prototype/deref/name.js: Added.
  • test262/test/built-ins/WeakRef/prototype/deref/prop-desc.js: Added.
  • test262/test/built-ins/WeakRef/prototype/deref/return-target.js: Added.
  • test262/test/built-ins/WeakRef/prototype/deref/this-does-not-have-internal-target-throws.js: Added. (fg.new.FinalizationGroup):
  • test262/test/built-ins/WeakRef/prototype/deref/this-not-object-throws.js: Added.
  • test262/test/built-ins/WeakRef/prototype/prop-desc.js: Added.
  • test262/test/built-ins/WeakRef/prototype/proto.js: Added.
  • test262/test/built-ins/WeakRef/returns-new-object-from-constructor.js: Added. (let.key.of.Object.getOwnPropertyNames): (set for):
  • test262/test/built-ins/WeakRef/target-not-object-throws.js: Added.
  • test262/test/built-ins/WeakRef/undefined-newtarget-throws.js: Added.
  • test262/test/intl402/BigInt/prototype/toLocaleString/builtin.js:
  • test262/test/intl402/BigInt/prototype/toLocaleString/default-options-object-prototype.js:
  • test262/test/intl402/BigInt/prototype/toLocaleString/length.js:
  • test262/test/intl402/BigInt/prototype/toLocaleString/returns-same-results-as-NumberFormat.js:
  • test262/test/intl402/BigInt/prototype/toLocaleString/taint-Intl-NumberFormat.js:
  • test262/test/intl402/BigInt/prototype/toLocaleString/this-value-invalid.js:
  • test262/test/intl402/BigInt/prototype/toLocaleString/throws-same-exceptions-as-NumberFormat.js:
  • test262/test/intl402/DateTimeFormat/constructor-options-order-quarter.js: Removed.
  • test262/test/intl402/DateTimeFormat/constructor-options-quarter-invalid.js: Removed.
  • test262/test/intl402/DateTimeFormat/constructor-options-quarter-valid.js: Removed.
  • test262/test/intl402/DateTimeFormat/prototype/format/dayPeriod-long-en.js: Added.
  • test262/test/intl402/DateTimeFormat/prototype/format/dayPeriod-narrow-en.js: Added.
  • test262/test/intl402/DateTimeFormat/prototype/format/dayPeriod-short-en.js: Added.
  • test262/test/intl402/DateTimeFormat/prototype/format/fractionalSecondDigits.js: Added.
  • test262/test/intl402/DateTimeFormat/prototype/formatRange/argument-date-string.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRange/argument-near-time-boundaries.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRange/argument-to-integer.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRange/builtin.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRange/prop-desc.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/argument-date-string.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/argument-near-time-boundaries.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/argument-to-integer.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/builtin.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/prop-desc.js:
  • test262/test/intl402/DateTimeFormat/prototype/formatToParts/dayPeriod-long-en.js: Added. (assertParts): (assertPartsNumeric):
  • test262/test/intl402/DateTimeFormat/prototype/formatToParts/dayPeriod-narrow-en.js: Added. (assertParts): (assertPartsNumeric):
  • test262/test/intl402/DateTimeFormat/prototype/formatToParts/dayPeriod-short-en.js: Added. (assertParts): (assertPartsNumeric):
  • test262/test/intl402/DateTimeFormat/prototype/formatToParts/fractionalSecondDigits.js: Added. (assertParts):
  • test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/order-quarter.js: Removed.
  • test262/test/intl402/DateTimeFormat/taint-Object-prototype-quarter.js: Removed.
  • test262/test/intl402/RelativeTimeFormat/prototype/format/en-us-numeric-auto.js:
  • test262/test/intl402/RelativeTimeFormat/prototype/formatToParts/en-us-numeric-auto.js:
  • test262/test/language/expressions/arrow-function/ArrowFunction_restricted-properties.js:
  • test262/test/language/expressions/class/elements/private-field-access-on-inner-arrow-function.js: Added. (C.prototype.method):
  • test262/test/language/expressions/class/elements/private-field-access-on-inner-function.js: Added. (C.prototype.method.innerFunction): (C.prototype.method):
  • test262/test/language/expressions/class/elements/private-getter-access-on-inner-arrow-function.js: Added. (C): (C.method):
  • test262/test/language/expressions/class/elements/private-getter-access-on-inner-function.js: Added. (C): (C.method.innerFunction): (C.method):
  • test262/test/language/expressions/class/elements/private-getter-is-not-a-own-property.js: Added. (C): (C.checkPrivateGetter):
  • test262/test/language/expressions/class/elements/private-method-access-on-inner-arrow-function.js: Added. (C): (C.method):
  • test262/test/language/expressions/class/elements/private-method-access-on-inner-function.js: Added. (C): (C.method.innerFunction): (C.method):
  • test262/test/language/expressions/class/elements/private-method-is-not-a-own-property.js: Added. (C): (C.checkPrivateMethod):
  • test262/test/language/expressions/class/elements/private-setter-access-on-inner-arrow-function.js: Added. (C): (C.method):
  • test262/test/language/expressions/class/elements/private-setter-access-on-inner-function.js: Added. (C): (C.method.innerFunction): (C.method):
  • test262/test/language/expressions/class/elements/private-setter-is-not-a-own-property.js: Added. (C): (C.checkPrivateSetter):
  • test262/test/language/expressions/class/elements/prod-private-getter-before-super-return-in-field-initializer.js:
  • test262/test/language/expressions/class/elements/prod-private-method-before-super-return-in-field-initializer.js:
  • test262/test/language/expressions/class/elements/prod-private-setter-before-super-return-in-field-initializer.js:
  • test262/test/language/expressions/class/poisoned-underscore-proto.js: Added.
  • test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-eval-indirect.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression): (let.classStringExpression.access): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-eval.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression): (let.classStringExpression.access): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-factory.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (const.C): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression.return.prototype.m): (let.classStringExpression.return.prototype.access): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-realm-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression.return.prototype.m): (let.classStringExpression.return.prototype.access): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-realm.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression): (let.classStringExpression.access): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-eval-indirect.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression.prototype.m): (let.classStringExpression.prototype.access): (let.classStringExpression): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-eval.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression.prototype.m): (let.classStringExpression.prototype.access): (let.classStringExpression): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-factory.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (const.C): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression.return.C.prototype.m): (let.classStringExpression.return.C.prototype.access): (let.classStringExpression.return.C): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-realm-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression.return.C.prototype.m): (let.classStringExpression.return.C.prototype.access): (let.classStringExpression.return.C): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-realm.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression): (let.classStringExpression.access): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-eval-indirect.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression): (let.classStringExpression.access): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-eval.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression): (let.classStringExpression.access): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-factory.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (const.C): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression.return.prototype.m): (let.classStringExpression.return.prototype.access): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-realm-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression.return.prototype.m): (let.classStringExpression.return.prototype.access): (let.createAndInstantiateClass):
  • test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-realm.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js. (let.classStringExpression): (let.classStringExpression.access): (let.createAndInstantiateClass):
  • test262/test/language/expressions/new.target/unary-expr.js: Added. (new): (async):
  • test262/test/language/expressions/super/call-poisoned-underscore-proto.js: Added. (A):
  • test262/test/language/expressions/super/prop-poisoned-underscore-proto.js: Added.
  • test262/test/language/identifiers/vals-cjk-escaped.js: Added.
  • test262/test/language/identifiers/vals-cjk.js: Added.
  • test262/test/language/statements/class/elements/private-class-field-on-frozen-objects.js:
  • test262/test/language/statements/class/elements/private-field-access-on-inner-arrow-function.js: Added. (C.prototype.method): (C):
  • test262/test/language/statements/class/elements/private-field-access-on-inner-function.js: Added. (C.prototype.method.innerFunction): (C.prototype.method): (C):
  • test262/test/language/statements/class/elements/private-field-is-not-clobbered-by-computed-property.js: Added. (C.prototype.checkPrivateField): (C):
  • test262/test/language/statements/class/elements/private-field-visible-to-direct-eval-on-initializer.js: Added. (C):
  • test262/test/language/statements/class/elements/private-field-visible-to-direct-eval.js: Added. (C.prototype.getWithEval): (C): (D):
  • test262/test/language/statements/class/elements/private-getter-access-on-inner-arrow-function.js: Added. (C.prototype.get m): (C.prototype.method): (C):
  • test262/test/language/statements/class/elements/private-getter-access-on-inner-function.js: Added. (C.prototype.get m): (C.prototype.method.innerFunction): (C.prototype.method): (C):
  • test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js: (let.createAndInstantiateClass):
  • test262/test/language/statements/class/elements/private-getter-is-not-a-own-property.js: Added. (C.prototype.get m): (C.prototype.checkPrivateGetter): (C):
  • test262/test/language/statements/class/elements/private-getter-is-not-clobbered-by-computed-property.js: Added. (C.prototype.get m): (C.prototype.checkPrivateGetter): (C):
  • test262/test/language/statements/class/elements/private-getter-visible-to-direct-eval-on-initializer.js: Added. (C.prototype.get m): (C):
  • test262/test/language/statements/class/elements/private-getter-visible-to-direct-eval.js: Added. (C.prototype.get m): (C.prototype.getWithEval): (C): (D.prototype.get m): (D):
  • test262/test/language/statements/class/elements/private-method-access-on-inner-arrow-function.js: Added. (C.prototype.m): (C.prototype.method): (C):
  • test262/test/language/statements/class/elements/private-method-access-on-inner-function.js: Added. (C.prototype.m): (C.prototype.method.innerFunction): (C.prototype.method): (C):
  • test262/test/language/statements/class/elements/private-method-is-not-a-own-property.js: Added. (C.prototype.m): (C.prototype.checkPrivateMethod): (C):
  • test262/test/language/statements/class/elements/private-method-is-not-clobbered-by-computed-property.js: Added. (C.prototype.m): (C.prototype.checkPrivateMethod): (C):
  • test262/test/language/statements/class/elements/private-method-visible-to-direct-eval-on-initializer.js: Added. (C.prototype.m): (C):
  • test262/test/language/statements/class/elements/private-method-visible-to-direct-eval.js: Added. (C.prototype.m): (C.prototype.getWithEval): (C): (D.prototype.m): (D):
  • test262/test/language/statements/class/elements/private-setter-access-on-inner-arrow-function.js: Added. (C.prototype.set m): (C.prototype.method): (C):
  • test262/test/language/statements/class/elements/private-setter-access-on-inner-function.js: Added. (C.prototype.set m): (C.prototype.method.innerFunction): (C.prototype.method): (C):
  • test262/test/language/statements/class/elements/private-setter-is-not-a-own-property.js: Added. (C.prototype.set m): (C.prototype.checkPrivateSetter): (C):
  • test262/test/language/statements/class/elements/private-setter-is-not-clobbered-by-computed-property.js: Added. (C.prototype.set m): (C.prototype.checkPrivateSetter): (C):
  • test262/test/language/statements/class/elements/private-setter-visible-to-direct-eval-on-initializer.js: Added. (C.prototype.set m): (C):
  • test262/test/language/statements/class/elements/private-setter-visible-to-direct-eval.js: Added. (C.prototype.set m): (C.prototype.setWithEval): (C): (D.prototype.set m): (D):
  • test262/test/language/statements/class/elements/prod-private-getter-before-super-return-in-field-initializer.js:
  • test262/test/language/statements/class/elements/prod-private-method-before-super-return-in-field-initializer.js:
  • test262/test/language/statements/class/elements/prod-private-setter-before-super-return-in-field-initializer.js:
  • test262/test/language/statements/class/elements/super-access-inside-a-private-getter.js: Added. (A.prototype.method): (A): (C.prototype.get m): (C.prototype.access): (C):
  • test262/test/language/statements/class/elements/super-access-inside-a-private-method.js: Added. (A.prototype.method): (A): (C.prototype.m): (C.prototype.access): (C):
  • test262/test/language/statements/class/elements/super-access-inside-a-private-setter.js: Added. (A.prototype.method): (A): (C.prototype.set m): (C.prototype.access): (C):
  • test262/test/language/statements/class/poisoned-underscore-proto.js: Added. (A):
  • test262/test/language/statements/function/13.2-30-s.js:
  • test262/test262-Revision.txt:

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

1:25 PM Changeset in webkit [247613] by Kocsen Chung
  • 3 edits in branches/safari-608-branch/Source/WebKit

Cherry-pick r247547. rdar://problem/53230043

Provide a NSURL cateogry to tell AppSSO Kerberos URLs
https://bugs.webkit.org/show_bug.cgi?id=199887
<rdar://problem/52323161>

Reviewed by Brent Fulgham.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationNSURLExtras.h:
  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationNSURLExtras.mm: (+[NSURL _web_willPerformSOKerberosAuthorizationWithURL:]):

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

1:25 PM Changeset in webkit [247612] by Kocsen Chung
  • 3 edits
    2 adds in branches/safari-608-branch

Cherry-pick r247544. rdar://problem/53230040

Unable to bring up custom media controls on iOS for video.sina.cn
https://bugs.webkit.org/show_bug.cgi?id=199889
<rdar://problem/51883919>

Reviewed by Dean Jackson.

Source/WebCore:

Videos on video.sina.cn by default have the "controls" attribute and are set not to autoplay. This means that the original state
of the media controls are set to show the built-in media controls and also show the prominent play button to begin playback. The
display of the play button also requires a tap gesture recognizer, which calls preventDefault() when the "touchend" is received
to prevent double-tap-to-zoom, but also has the side-effect of preventing a "click" event from being dispatched for a tap.

The video.sina.cn code would eventually remove the "controls" attribute, which would make the built-in media controls not visible,
but still participate in hit-testing because we keep the shadow DOM around in order to potentially show the Airplay or picture-in-picture
placards. Additionally, we wouldn't disable the tap gesture recognizer when the "controls" attribute was removed.

We now ensure that both gesture recognizers used by iOS inline media controls are only enabled when media controls are visible.

Test: media/modern-media-controls/media-controller/ios/media-controller-allows-click-over-video-with-no-controls.html

  • Modules/modern-media-controls/controls/ios-inline-media-controls.js: (IOSInlineMediaControls.prototype.set showsStartButton): (IOSInlineMediaControls.prototype.get visible): (IOSInlineMediaControls.prototype.set visible): (IOSInlineMediaControls.prototype._updateGestureRecognizers): (IOSInlineMediaControls.prototype._tapGestureRecognizerStateDidChange): (IOSInlineMediaControls.prototype._pinchGestureRecognizerStateDidChange):

LayoutTests:

This test replicates the scenario found on video.sina.cn that caused the issue: a <video> element originally has the "controls"
attribute and is not set to autoplay. This means the tap gesture recognizer is created to track a tap for the video to play. Then
the "controls" attribute is removed and we dispatch a tap on the video which would previously have *not* caused a "click" event to
eventually be dispatched on the <video> element since the tap gesture recognizer would call preventDefault(). With this patch applied,
we get the "click" event because the tap gesture recognizer is disabled once the controls are no longer visible.

  • media/modern-media-controls/media-controller/ios/media-controller-allows-click-over-video-with-no-controls-expected.txt: Added.
  • media/modern-media-controls/media-controller/ios/media-controller-allows-click-over-video-with-no-controls.html: Added.

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

1:24 PM Changeset in webkit [247611] by Kocsen Chung
  • 5 edits in branches/safari-608-branch/Source

Cherry-pick r247541. rdar://problem/53230029

Unable to tap buttons at top of Wells Fargo app’s Payees screen
https://bugs.webkit.org/show_bug.cgi?id=199846
<rdar://problem/48112220>

Reviewed by Simon Fraser.

Source/WebCore:

This patch restores the stop-before-reaching-the-body heuristics for the approximate node finding feature only.
(WebFrame::approximateNodeAtViewportLocation mistakenly relied on this odd quirk of nodeRespondingToClickEvents.)

  • page/Frame.h:
  • page/ios/FrameIOS.mm: (WebCore::Frame::approximateNodeAtViewportLocationLegacy):

Source/WebKitLegacy/mac:

  • WebView/WebFrame.mm: (-[WebFrame approximateNodeAtViewportLocation:]):

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

1:24 PM Changeset in webkit [247610] by Kocsen Chung
  • 14 edits
    4 adds in branches/safari-608-branch

Cherry-pick r247540. rdar://problem/53230036

[iOS WK2] Avoid lots of compositing backing store for offscreen position:fixed descendants
https://bugs.webkit.org/show_bug.cgi?id=199819
rdar://problem/51977416

Reviewed by Zalan Bujtas.

Source/WebCore:

There was code to ensure that position:fixed layers and their descendants don't have their
backing store detached (thrown away to save memory when offscreen), since that can trigger
flashing when async scrolling moves layers in and out of the visual viewport.

However, some pages have many descendant layers of positon:fixed which entrain backing
store, because, for example, they have a stack of translated-offscreen menu elements inside
a fixed header, and those elements may composite because of overflow:scroll.

To avoid using too much memory on such pages, allow backing store detachment for fixed
layers that are outside the layout viewport. Add a flag to RenderLayer that's set for layers
which are fixed, or descendants of fixed, and consult that flag in
updateAllowsBackingStoreDetaching(). The logic there is similar to
RenderLayerCompositor::requiresCompositingForPosition().

I considered allowing all position:fixed to composite (since this patch would keep most of
the memory saving), but historically we've avoided compositing out-of-viewport
position:fixed because it's quite common to have them with negative z-index, and compositing
those has significant compositing knock-on effects.

GraphicsLayer flushing no longer needs to track the viewport-constrained status of layers,
so remove that code.

This patch removes backing-store pinning for sticky layers.
scrolling/ios/reconcile-layer-position-recursive.html then revealed a bug in
ScrollingStateStickyNode::reconcileLayerPositionForViewportRect(), which was assuming that
the sticky element was scrolled by the page, causing a bad layer position to get sync'd onto
the layer. Fixed by copying code from ScrollingTreeStickyNode that is smarter about
computing layer positions.

This patch fixes jetsams on kmart.com.au in iOS 13 beta.

Test: compositing/layer-creation/fixed-position-descendants-out-of-view.html

  • page/scrolling/ScrollingStateStickyNode.cpp: (WebCore::ScrollingStateStickyNode::computeLayerPosition const): (WebCore::ScrollingStateStickyNode::reconcileLayerPositionForViewportRect):
  • page/scrolling/ScrollingStateStickyNode.h:
  • platform/graphics/GraphicsLayer.h: (WebCore::GraphicsLayer::setAllowsBackingStoreDetaching): (WebCore::GraphicsLayer::allowsBackingStoreDetaching const): (WebCore::GraphicsLayer::setIsViewportConstrained): Deleted. (WebCore::GraphicsLayer::isViewportConstrained const): Deleted. (WebCore::GraphicsLayer::setCanDetachBackingStore): Deleted. (WebCore::GraphicsLayer::canDetachBackingStore const): Deleted.
  • platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::GraphicsLayerCA): (WebCore::GraphicsLayerCA::recursiveVisibleRectChangeRequiresFlush const): (WebCore::GraphicsLayerCA::setVisibleAndCoverageRects): (WebCore::GraphicsLayerCA::recursiveCommitChanges): (WebCore::GraphicsLayerCA::updateCoverage): (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
  • platform/graphics/ca/GraphicsLayerCA.h:
  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::RenderLayer): (WebCore::RenderLayer::updateLayerPositions): (WebCore::outputPaintOrderTreeLegend): (WebCore::outputPaintOrderTreeRecursive):
  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateAllowsBackingStoreDetaching): (WebCore::RenderLayerBacking::updateOverflowControlsLayers): (WebCore::RenderLayerBacking::setIsScrollCoordinatedWithViewportConstrainedRole): Deleted.
  • rendering/RenderLayerBacking.h:
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::requiresCompositingForPosition const): (WebCore::RenderLayerCompositor::updateOverflowControlsLayers): (WebCore::RenderLayerCompositor::updateScrollCoordinationForLayer):

LayoutTests:

  • compositing/layer-creation/fixed-position-change-out-of-view-in-view.html:
  • compositing/layer-creation/fixed-position-descendants-out-of-view-expected.txt: Added.
  • compositing/layer-creation/fixed-position-descendants-out-of-view.html: Added.
  • compositing/layer-creation/fixed-position-out-of-view.html:
  • platform/ios-wk2/fast/scrolling/ios/reconcile-layer-position-recursive-expected.txt: Added.

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

1:24 PM Changeset in webkit [247609] by Kocsen Chung
  • 2 edits
    1 delete in branches/safari-608-branch/Tools

Cherry-pick r247536. rdar://problem/53229635

Remove the file superfluously added in r247535.

  • TestWebKitAPI/Tests/ios/SelectionModifyByParagraphBoundary.h: Removed.
  • TestWebKitAPI/Tests/ios/SelectionModifyByParagraphBoundary.mm:

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

1:24 PM Changeset in webkit [247608] by Kocsen Chung
  • 3 edits
    1 add in branches/safari-608-branch

Cherry-pick r247532. rdar://problem/53228435

ArgumentsEliminationPhase should insert KillStack nodes before PutStack nodes that it adds.
https://bugs.webkit.org/show_bug.cgi?id=199821
<rdar://problem/52452328>

Reviewed by Filip Pizlo.

JSTests:

  • stress/arguments-elimination-should-insert-KillStacks-before-added-PutStacks.js: Added.

Source/JavaScriptCore:

Excluding the ArgumentsEliminationPhase, PutStack nodes are converted from SetLocal
nodes in the SSAConversionPhase. SetLocal nodes are always preceded by MovHint nodes,
and the SSAConversionPhase always inserts a KillStack node before a MovHint node.
Hence, a PutStack node is always preceded by a KillStack node.

However, the ArgumentsEliminationPhase can convert LoadVarargs nodes into a series
of one or more PutStacks nodes, and it prepends MovHint nodes before the PutStack
nodes. However, it neglects to prepend KillStack nodes as well. Since the
ArgumentsEliminationPhase runs after the SSAConversionPhase, the PutStack nodes
added during ArgumentsElimination will not be preceded by KillStack nodes.

This patch fixes this by inserting a KillStack in the ArgumentsEliminationPhase
before it inserts a MovHint and a PutStack node.

Consider this test case which can manifest the above issue as a crash:

function inlinee(value) {

...
let tmp = value + 1;

}

function reflect() {

return inlinee.apply(undefined, arguments);

}

function test(arr) {

let object = inlinee.apply(undefined, arr); Uses a lot of SetArgumentMaybe nodes.
reflect();
Calls with a LoadVararg, which gets converted into a PutStack of a constant.

}

In this test case, we have a scenario where a SetArgumentMaybe's stack
slot is reused as the stack slot for a PutStack later. Here, the PutStack will
put a constant undefined value. Coincidentally, the SetArgumentMaybe may also
initialize that stack slot to a constant undefined value. Note that by the time
the PutStack executes, the SetArgumentMaybe's stack slot is dead. The liveness of
these 2 values are distinct.

However, because we were missing a KillStack before the PutStack, OSR availability
analysis gets misled into thinking that the PutStack constant value is still in the
stack slot because the value left there by the SetArgumentMaybe hasn't been killed
off yet. As a result, OSR exit code will attempt to recover the PutStack's undefined
constant by loading from the stack slot instead of materializing it. Since
SetArgumentMaybe may not actually initialize the stack slot, we get a crash in OSR
exit when we try to recover the PutStack constant value from the stack slot, and
end up using what ever junk value we read from there.

Fixing the ArgumentsEliminationPhase to insert KillStack before the PutStack
removes this conflation of the PutStack's constant value with the SetArgumentMaybe's
constant value in the same stack slot. And, OSR availability analysis will no
longer be misled to load the PutStack's constant value from the stack, but will
materialize the constant instead.

  • dfg/DFGArgumentsEliminationPhase.cpp:

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

1:24 PM Changeset in webkit [247607] by Kocsen Chung
  • 3 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r247531. rdar://problem/53229712

IndexedDB: error in starting version change transaction may be neglected
https://bugs.webkit.org/show_bug.cgi?id=199818
<rdar://problem/52925738>

Reviewed by Brady Eidson.

For version change transaction, IDBServer didn't wait the result of beginTransaction on the background thread
before giving the IDBClient the result of open request. In this case, beginTransaction may fail to update the
DatabaseVersion in database file or set m_originalDatabaseInfoBeforeVersionChange, but the transaction was
marked as started. When we later set m_databaseInfo with m_originalDatabaseInfoBeforeVersionChange,
m_databaseInfo could become nullptr.

To write a test for this, we will need to simulate an SQLite error. I manually tested this by crafting the
SQLiteStatement in beginTransaction, making it an invalid statement, and verified that error event, instead of
ungradeneeded event is dispatched to the IDBRequest.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp: (WebCore::IDBServer::UniqueIDBDatabase::startVersionChangeTransaction): (WebCore::IDBServer::UniqueIDBDatabase::performStartVersionChangeTransaction): (WebCore::IDBServer::UniqueIDBDatabase::didPerformStartVersionChangeTransaction): (WebCore::IDBServer::UniqueIDBDatabase::beginTransactionInBackingStore): Deleted.
  • Modules/indexeddb/server/UniqueIDBDatabase.h:

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

1:24 PM Changeset in webkit [247606] by Kocsen Chung
  • 15 edits
    4 adds in branches/safari-608-branch

Cherry-pick r247530. rdar://problem/53229569

Typing into a cell in a Google Sheet lags behind by one character
https://bugs.webkit.org/show_bug.cgi?id=199587
<rdar://problem/51616845>

Reviewed by Brent Fulgham.

Source/WebCore:

Add a Google Sheets quirk. Put all DOM timers scheduled from keydown and keypress event listeners
into a holding tank. The timers continue to tick, but are barred from executing their action until
the next text insertion or deletion or 32 ms (on device) have elapsed, whichever is sooner. We only
allocate a holding tank once per document, only if the quirk is active, and this allocation is done
when the document schedules a timer on keydown or keypress. The holding tank lives for the lifetime
of the document.

The story behind the quirk:

On keypress Google Sheets schedules timers and expects that a DOM update will occur (i.e. text
will be inserted or deleted) within the same event loop iteration as the dispatched keypress. The
UI Events spec. [1] makes no such guarantee of when a DOM update must occur in relation to the keypress
event. It could happen in the same event loop iteration as the key press (as Google expects), the
next iteration, 500ms later, 2 minutes later, etc. What the spec does guarantee is that by the time
a DOM input event is dispatched that the DOM will be updated. And this is the solution to the problem
Google Sheets is trying to solve, but is doing so using pre-IE 9 technology (though similar
functionality was available via onpropertychange in IE < 9).

See also <https://github.com/w3c/uievents/issues/238>, which is tracking a spec. text update for
this quirk.

Test: fast/events/ios/dom-update-on-keydown-quirk.html

[1] <https://w3c.github.io/uievents/> (Editor's Draft, 14 October 2018)

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj: Add some files to the project.
  • dom/Document.cpp: (WebCore::Document::domTimerHoldingTank): Added.
  • dom/Document.h: (WebCore::Document::domTimerHoldingTankIfExists): Added.
  • page/DOMTimer.cpp: (WebCore::DOMTimer::install): Put the newly instantiated timer into the holding tank. (WebCore::DOMTimer::removeById): Remove the timer from the holding tank. (WebCore::DOMTimer::fired): Check if the timer is in the holding tank. If it is and it is a one- shot timer then schedule it for the next event loop iteration. If it's a repeating timer just let it continue ticking. Otherwise, do what we no now and execute the timer's action. The reason we do not suspend timers in the holding tank is because:
    1. Far out timers (Google Sheets registers timers as far out as 5 minutes!) are not penalized. Though smart supension logic could avoid this. See (3).
  1. Empirical observations indicate that the keyboard will perform the insertion or deletion reasonably quickly (not the same event loop iteration as the keydown, but within two iterations out). So, the timers in the holding tank are short-lived.
  1. Simplifies the code. There is no need to keep additional bookkeeping to track multiple timer suspension reasons (timers currently can only have one suspension reason) or alternatively defer scheduling a timer until a later time and computing a new "fair" firing time when scheduled.
  • page/EventHandler.cpp: (WebCore::EventHandler::internalKeyEvent): Place a token on the stack to put all DOM timers scheduled on keydown and keypress into the holding tank if the quirk is enabled.
  • page/Quirks.cpp: (WebCore::Quirks::needsDeferKeyDownAndKeyPressTimersUntilNextEditingCommand const): Added.
  • page/Quirks.h:
  • page/Settings.yaml: Added setting so that this quirk can be enabled from a layout test. This setting also lets us enable the quirk for all sites or for certain third-party apps if desired.
  • page/ios/DOMTimerHoldingTank.cpp: Added. (WebCore::DOMTimerHoldingTank::DOMTimerHoldingTank): (WebCore::DOMTimerHoldingTank::add): (WebCore::DOMTimerHoldingTank::remove): (WebCore::DOMTimerHoldingTank::contains): (WebCore::DOMTimerHoldingTank::removeAll): (WebCore::DOMTimerHoldingTank::stopExceededMaximumHoldTimer):
  • page/ios/DOMTimerHoldingTank.h: Added. (WebCore::DeferDOMTimersForScope::DeferDOMTimersForScope): (WebCore::DeferDOMTimersForScope::~DeferDOMTimersForScope): (WebCore::DeferDOMTimersForScope::isDeferring):

Source/WebKit:

Remove all timers from the holding tank on text insertion or deletion (represented as an
editing command). Timers that were in the holding tank never stopped ticking and will now
be able to execute their action.

  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::executeEditingCommand): (WebKit::WebPage::insertTextAsync): (WebKit::WebPage::setCompositionAsync): (WebKit::WebPage::confirmCompositionAsync): Call platformWillPerformEditingCommand().
  • WebProcess/WebPage/WebPage.h: (WebKit::WebPage::platformWillPerformEditingCommand): Added.
  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::platformWillPerformEditingCommand): Remove all the timers from the holding tank if we have a holding tank.

LayoutTests:

Add a test that enables the quirk and ensures that the DOM is up-to-date on expiration of a
zero timer scheduled from keydown, keypress, keyup, and input.

  • fast/events/ios/dom-update-on-keydown-quirk-expected.txt: Added.
  • fast/events/ios/dom-update-on-keydown-quirk.html: Added.

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

1:24 PM Changeset in webkit [247605] by Kocsen Chung
  • 2 edits in branches/safari-608-branch/Source/ThirdParty/libwebrtc

Cherry-pick r247526. rdar://problem/53229680

Use VCP SPI in case creation of a compression session with VTB for 'h264.rtvc' fails
https://bugs.webkit.org/show_bug.cgi?id=199863
<rdar://problem/52922217>

Reviewed by Darin Adler.

Calling VTCompressionSessionCreate with kVTVideoEncoderList_EncoderID "com.apple.videotoolbox.videoencoder.h264.rtvc"
fails on some platforms. In such a case, use VCP SPI if available as a fallback.
Covered by exisiting webrtc tests on these specific platforms.

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm: (-[RTCSingleVideoEncoderH264 resetCompressionSessionWithPixelFormat:]):

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

1:24 PM Changeset in webkit [247604] by Kocsen Chung
  • 2 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r247525. rdar://problem/53229719

Hop to the main thread when doing logging in RealtimeIncomingVideoSourceCocoa
https://bugs.webkit.org/show_bug.cgi?id=199865

Reviewed by Darin Adler.

LoggerHelper routines allow logging messages in system console and inspector console.
These routines iterate through a Vector of log observers which is not thread safe.
Document, the main log observer, also expects to be called on the main thread.
Manually tested (writing a layout test for this would require more than 2 seconds).

  • platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm: (WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame):

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

1:24 PM Changeset in webkit [247603] by Kocsen Chung
  • 5 edits
    2 adds in branches/safari-608-branch

Cherry-pick r247524. rdar://problem/53229635

[iOS] Option + Up or Down Arrow key doesn’t move cursor past paragraph boundaries in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=199851

Reviewed by Wenson Hsieh.

Source/WebKit:

The bug was caused by the difference in the way AppKit and UIKit responds to Option + Up / Down.

On macOS, AppKit sends moveForward before sending moveToStartOfParagraph and moveBackward
before sending moveToEndOfParagraph. As a result, when Option + Down is pressed when we are at
the end of a line, we would first move to the beginning of the next line (i.e. after the line break)
before moving or extending selection with the paragraph boundary granurality.

On iOS, UIKit only calls _moveToStartOfParagraph without moving forward by a character. As a result,
moving forward by the paragraph boundary granurality immediately stops when we're starting at the
end of a line when Option + Down is pressed. Option + Up case is similar.

Fix the bug on iOS by emulating what happens on macOS. Namely, move the selection forward or backward
by the character granurality before moving by the paragraph boundary granurality.

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _moveToStartOfParagraph:withHistory:]): (-[WKContentView _moveToEndOfParagraph:withHistory:]):

Tools:

Added a regression test for iOS. Unfortunately, event sender, etc... doesn't work because
this code is getting directly triggered from UIKeyboard's code.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/ios/SelectionModifyByParagraphBoundary.h: Added.
  • TestWebKitAPI/Tests/ios/SelectionModifyByParagraphBoundary.mm: Added.
  • TestWebKitAPI/ios/UIKitSPI.h:

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

1:24 PM Changeset in webkit [247602] by Kocsen Chung
  • 13 edits in branches/safari-608-branch/Source

Cherry-pick r247521. rdar://problem/53229717

Make ANGLE work inside WebKit2's sandbox
https://bugs.webkit.org/show_bug.cgi?id=199844

Patch by Kenneth Russell <kbr@chromium.org> on 2019-07-17
Reviewed by Alex Christensen.

Source/ThirdParty/ANGLE:

Cherry-pick fix for crbug.com/angleproject/3383 to eliminate use
of deprecated API in SystemInfo_mac.mm.

  • BUILD.gn:
  • src/gpu_info_util/SystemInfo.cpp: (angle::FindActiveGPU): (angle::PrintSystemInfo): (angle::FindPrimaryGPU): Deleted.
  • src/gpu_info_util/SystemInfo.h:
  • src/gpu_info_util/SystemInfo_internal.h:
  • src/gpu_info_util/SystemInfo_linux.cpp: (angle::GetSystemInfo):
  • src/gpu_info_util/SystemInfo_mac.mm: (angle::GetSystemInfo):
  • src/gpu_info_util/SystemInfo_win.cpp: (angle::GetSystemInfo):
  • src/tests/BUILD.gn:
  • src/tests/test_expectations/GPUTestConfig.cpp:
  • src/tests/test_utils/angle_test_instantiate.cpp: (angle::IsConfigWhitelisted):

Source/WebCore:

Fix missing #import introduced at the last minute while removing
some debugging code in the last patch.

Tested with San Angeles WebGL demo and some conformance tests.

  • platform/graphics/cocoa/WebGLLayer.mm:

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

1:24 PM Changeset in webkit [247601] by Kocsen Chung
  • 3 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r247519. rdar://problem/53229612

Hang in WebCore::AccessibilityRenderObject::visiblePositionRangeForLine.
https://bugs.webkit.org/show_bug.cgi?id=199845
<rdar://problem/53121017>

Patch by Andres Gonzalez <Andres Gonzalez> on 2019-07-17
Reviewed by Chris Fleizach.

  • Added check for upper bound NSNotFound for parameter to visiblePositionRangeForLine.
  • Fixed signed/unsigned issue for AXTextMarkerRangeForLine attribute.
  • accessibility/AccessibilityRenderObject.cpp: (WebCore::AccessibilityRenderObject::visiblePositionRangeForLine const):
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm: (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):

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

1:24 PM Changeset in webkit [247600] by Kocsen Chung
  • 3 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r247504. rdar://problem/53229614

Fix includes and make a constructor explicit to avoid unified-sources-triggered test failures
https://bugs.webkit.org/show_bug.cgi?id=199849

Reviewed by Wenson Hsieh.

webkit.org/b/199587 triggered some unexpected test failures because of unified sources include
order. The TextStream operator in ScrollingTreeOverflowScrollingNode::dumpProperties() was invoking
the implicit constructor of TransformOperations.

  • page/scrolling/ScrollingTreeOverflowScrollingNode.cpp: Include TextStream.h
  • platform/graphics/transforms/TransformOperations.h: Make ctor explicit.

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

1:24 PM Changeset in webkit [247599] by Kocsen Chung
  • 7 edits
    1 move in branches/safari-608-branch/Source

Cherry-pick r247502. rdar://problem/53229564

REGRESSION: fast/events/watchos/double-tap-to-zoom* tests crashing in com.apple.WebKit: -[WKContentView(WKInteraction) _singleTapDidReset:]
https://bugs.webkit.org/show_bug.cgi?id=199840
<rdar://problem/52856531>

Patch by Antoine Quint <Antoine Quint> on 2019-07-16
Reviewed by Wenson Hsieh.

Source/WebCore:

Fix a build error that occured when building for the watchOS Simulator in the debug configuration.

  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingProxyRole):

Source/WebKit:

We need to ensure the NSNumber used for -[WKSyntheticTapGestureRecognizer lastActiveTouchIdentifier] is retained. This innocent change required
the use of RetainPtr<>, which required the move to an Objective-C++ file, which lead to a change in the order files are unified, which lead to
build errors, which leads to a much bigger patch than just the source change necessary to fix the crash.

  • SourcesCocoa.txt:
  • UIProcess/ios/WKSyntheticTapGestureRecognizer.mm: Renamed from Source/WebKit/UIProcess/ios/WKSyntheticTapGestureRecognizer.m.
  • UIProcess/ios/forms/WKFormPeripheralBase.h:
  • UIProcess/ios/forms/WKFormPeripheralBase.mm:
  • WebKit.xcodeproj/project.pbxproj:

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

1:24 PM Changeset in webkit [247598] by Kocsen Chung
  • 2 edits in branches/safari-608-branch/Source/WebKit

Cherry-pick r247494. rdar://problem/53229554

[macCatalyst] Do not include WebKitLegacy.h in WebKit.h
https://bugs.webkit.org/show_bug.cgi?id=199833
<rdar://problem/53036744>

Reviewed by Tim Horton.

  • Shared/API/Cocoa/WebKit.h:

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

1:24 PM Changeset in webkit [247597] by Kocsen Chung
  • 18 edits in branches/safari-608-branch

Cherry-pick r247490. rdar://problem/53229559

NSTextFinder holes don't scroll with the page
https://bugs.webkit.org/show_bug.cgi?id=199815
<rdar://problem/52280514>

Reviewed by Simon Fraser.

Source/WebCore:

  • rendering/ScrollAlignment.h:

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _usePlatformFindUI]): (-[WKWebView _setUsePlatformFindUI:]): (-[WKWebView _ensureTextFinderClient]): Add a bit so that clients can choose whether they want our find UI, which respects scrolling, or the system find UI, which works when doing multi-document searches. Right now you can't have both.

(-[WKWebView scrollFindMatchToVisible:]):
Implement and plumb scrollFindMatchToVisible.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::indicateFindMatch):
  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::indicateFindMatch):
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in: Plumb indicateFindMatch to FindController.
  • UIProcess/mac/WKTextFinderClient.h:
  • UIProcess/mac/WKTextFinderClient.mm: (-[WKTextFinderClient initWithPage:view:usePlatformFindUI:]): Store whether or not we are using the platform find UI.

(-[WKTextFinderClient findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:]):
If using WebKit find UI, turn on our UI in the options passed to findString[Matches].

(-[WKTextFinderClient scrollFindMatchToVisible:]):
If using WebKit find UI, when the platform tells us to reveal a find match, indicate it.

(-[WKTextFinderClient didFindStringMatchesWithRects:didWrapAround:]):
If using WebKit find UI, lie to the platform and return no rects so that it doesn't paint a yellow rectangle.

(-[WKTextFinderClient getImageForMatchResult:completionHandler:]):
If using WebKit find UI, lie to the platform and return no image so that it doesn't paint a yellow rectangle.

(-[WKTextFinderClient initWithPage:view:]): Deleted.

  • WebProcess/WebPage/FindController.cpp: (WebKit::FindController::updateFindUIAfterPageScroll): Make it possible to use our find UI with 'findStringMatches'; since the platform find infrastrucutre depends on knowing about all matches up front, we need to use 'findStringMatches' instead of 'findString', but we had never combined that with our UI. Don't throw away the other matches when we indicate one, and don't send DidFindString in the case we are coming from 'findStringMatches'. This all needs a bit of cleanup in the future.

(WebKit::FindController::findString):
Tell updateFindUIAfterPageScroll that we are 'findString' so that it uses its normal behavior.

(WebKit::FindController::findStringMatches):
Tell updateFindUIAfterPageScroll that we are 'findStringMatches' so that it uses the adjusted behavior.

(WebKit::FindController::indicateFindMatch):
Add 'indicateFindMatch', which both selects the match and moves the indicator there.

  • WebProcess/WebPage/FindController.h:

Tools:

  • MiniBrowser/mac/WK2BrowserWindowController.m: (-[MiniBrowserNSTextFinder performAction:]): (-[WK2BrowserWindowController awakeFromNib]): Adopt the WebKit UI in MiniBrowser. Also, override NSTextFinder's -performAction: so that we can intercept the close action and hide our own find UI, since there is no delegate for that action yet.
  • TestWebKitAPI/Tests/WebKitCocoa/FindInPage.mm: (TEST):

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

1:24 PM Changeset in webkit [247596] by Kocsen Chung
  • 2 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r247489. rdar://problem/53229754

[iOS] Make sure the first camera device in the list is the front camera
https://bugs.webkit.org/show_bug.cgi?id=199811
<rdar://problem/53125157>

Reviewed by Jer Noble.

Some websites call getUserMedia with a deviceId constraint and theey pick the
first deviceId in the list provided by enumerateDevices.
On iOS, this is the back camera which is often not what is expected by WebRTC applications.
Instead, make sure the first camera device is the front camera.

Manually tested.

  • platform/mediastream/mac/AVCaptureDeviceManager.mm:

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

1:24 PM Changeset in webkit [247595] by Kocsen Chung
  • 3 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r247487. rdar://problem/53229629

Remove "GraphicsContext 0x7ffd8765f6b0 stack changed by" logging
https://bugs.webkit.org/show_bug.cgi?id=199834

Reviewed by Dean Jackson.

I inadvertently left in a couple of GraphicsContextStateStackChecker (used to detect mismatched
GraphicsContext save/restore) in r246725, so remove them.

  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::paintLayerContents):
  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::paintIntoLayer):

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

1:23 PM Changeset in webkit [247594] by Kocsen Chung
  • 15 edits in branches/safari-608-branch/Source

Cherry-pick r247486. rdar://problem/53229738

Speed up StorageManager::getValues()
https://bugs.webkit.org/show_bug.cgi?id=199812

Reviewed by Alex Christensen.

Source/WebCore:

  • storage/StorageMap.cpp: (WebCore::StorageMap::importItems):
  • storage/StorageMap.h:

Source/WebKit:

Made the following performance improvements:

  • Made StorageManager a WorkQueueMessageReceiver again (like it was before it got moved from the UIProcess to the Network process). This avoids a lot of thread hopping (IPC thread -> Main thread -> StorageManagerThread -> Main Thread) and a lot of isolatedCopying of the strings.
  • Move values around when possible to avoid copying.
  • Add fast path to StorageMap::importItems() for when the StorageMap is empty when importing (15ms -> 2.5ms).
  • NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::didReceiveMessage): (WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage):
  • NetworkProcess/WebStorage/LocalStorageDatabase.cpp: (WebKit::LocalStorageDatabase::importItems):
  • NetworkProcess/WebStorage/StorageManager.cpp: (WebKit::StorageManager::addAllowedSessionStorageNamespaceConnection): (WebKit::StorageManager::removeAllowedSessionStorageNamespaceConnection): (WebKit::StorageManager::processDidCloseConnection): (WebKit::StorageManager::createLocalStorageMap): (WebKit::StorageManager::createTransientLocalStorageMap): (WebKit::StorageManager::createSessionStorageMap): (WebKit::StorageManager::destroyStorageMap): (WebKit::StorageManager::getValues): (WebKit::StorageManager::setItem): (WebKit::StorageManager::setItems): (WebKit::StorageManager::removeItem): (WebKit::StorageManager::clear):
  • NetworkProcess/WebStorage/StorageManager.h:
  • Platform/IPC/Connection.cpp: (IPC::Connection::addWorkQueueMessageReceiver): (IPC::Connection::removeWorkQueueMessageReceiver): (IPC::Connection::processIncomingMessage): (IPC::Connection::dispatchMessage): (IPC::Connection::dispatchMessageToWorkQueueReceiver):
  • Platform/IPC/Connection.h:
  • WebProcess/WebStorage/StorageAreaMap.cpp: (WebKit::StorageAreaMap::loadValuesIfNeeded): Messages to WorkQueueMessageReceivers are normally dispatched from the IPC WorkQueue. However, there is a race if a client (here StorageManager) adds itself as a WorkQueueMessageReceiver as a result of receiving an IPC message on the main thread (here NetworkConnectionToWebProcess::WebPageWasAdded). The message might have already been dispatched from the IPC WorkQueue to the main thread by the time the client registers itself as a WorkQueueMessageReceiver. To address this, we check again for messages receivers once the message arrives on the main thread.

Source/WebKitLegacy:

  • Storage/StorageAreaImpl.cpp: (WebKit::StorageAreaImpl::importItems):
  • Storage/StorageAreaImpl.h:
  • Storage/StorageAreaSync.cpp: (WebKit::StorageAreaSync::performImport):

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

1:23 PM Changeset in webkit [247593] by Kocsen Chung
  • 5 edits in branches/safari-608-branch

Cherry-pick r247484. rdar://problem/53229757

[Text autosizing] [iPadOS] Paragraph text on the front page of LinkedIn.com is not boosted
https://bugs.webkit.org/show_bug.cgi?id=199827
<rdar://problem/53152660>

Reviewed by Zalan Bujtas.

Source/WebCore:

After r247467, we try to avoid boosting some text that might cause vertical overflow due to line height
increasing inside a container that expects a fixed integer number of lines. However, in the case of
linkedin.com, the line height specified is a fixed value of 26px, which greatly exceeds the specified font size
of 14px. In this case, it's safe to boost font size, since doing so would not affect the line height at all.

To handle this case, don't avoid text autosizing due to the "fixed number of lines" heuristic if the line height
is fixed, and is much larger than the font size.

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

  • rendering/style/TextSizeAdjustment.cpp: (WebCore::AutosizeStatus::updateStatus):

LayoutTests:

Add a new test case, inspired by paragraph text in a post on linkedin.com. This text should get autosized.

  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates-expected.txt:
  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html:

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

1:23 PM Changeset in webkit [247592] by Kocsen Chung
  • 5 edits in branches/safari-608-branch/Source

Cherry-pick r247483. rdar://problem/53229618

[ContentChangeObserver] Cancel ongoing content observation when tap is failed/cancelled
https://bugs.webkit.org/show_bug.cgi?id=199828
<rdar://problem/53152696>

Reviewed by Wenson Hsieh.

Source/WebCore:

This patch ensures that we stop the content observation (initiated by touch start) when the tap
is cancelled/failed.

Not testable.

  • page/ios/ContentChangeObserver.cpp: (WebCore::ContentChangeObserver::didCancelPotentialTap):
  • page/ios/ContentChangeObserver.h:

Source/WebKit:

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

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

1:23 PM Changeset in webkit [247591] by Kocsen Chung
  • 2 edits in branches/safari-608-branch/Source/WTF

Cherry-pick r247482. rdar://problem/53229731

New York font erroneously gets synthetic bold
https://bugs.webkit.org/show_bug.cgi?id=199653

Unreviewed MacCatalyst build fix.

  • wtf/Platform.h:

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

1:23 PM Changeset in webkit [247590] by Kocsen Chung
  • 2 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r247480. rdar://problem/53229746

Hop to main thread for release logging in RealtimeIncomingAudioSource
https://bugs.webkit.org/show_bug.cgi?id=199813

Reviewed by Eric Carlson.

LoggerHelper routines allow logging messages in system console and inspector console.
These routines iterate through a Vector of log observers which is not thread safe.
Document, the main log observer, also expects to be called on the main thread.
Manually tested (writing a layout test for this would require more than 2 seconds).

  • platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp: (WebCore::RealtimeIncomingAudioSourceCocoa::OnData):

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

1:23 PM Changeset in webkit [247589] by Kocsen Chung
  • 18 edits in branches/safari-608-branch

Cherry-pick r247474. rdar://problem/53229615

JSGlobalObject type macros should support feature flags and WeakRef should have one
https://bugs.webkit.org/show_bug.cgi?id=199601

Reviewed by Mark Lam.

Source/JavaScriptCore:

This patch refactors the various builtin type macros to have a
parameter, which is the feature flag enabling it. Since most
builtin types are enabled by default this patch adds a new global
bool typeExposedByDefault for clarity. Note, because static hash
tables have no concept of feature flags we can't use feature flags
with lazy properties. This is probably not a big deal as features
that are off by default won't be allocated anywhere we care about
memory usage anyway.

  • runtime/CommonIdentifiers.h:
  • runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::init): (JSC::JSGlobalObject::visitChildren):
  • runtime/JSGlobalObject.h: (JSC::JSGlobalObject::stringObjectStructure const): (JSC::JSGlobalObject::bigIntObjectStructure const): Deleted.
  • runtime/Options.h:
  • wasm/js/JSWebAssembly.cpp:

Tools:

JSC options need to be set before the window is created for the test.

  • DumpRenderTree/mac/DumpRenderTree.mm: (resetWebViewToConsistentStateBeforeTesting):
  • DumpRenderTree/win/DumpRenderTree.cpp: (setJSCOptions): (resetWebViewToConsistentStateBeforeTesting):

LayoutTests:

Add JSC option requirements for WeakRef tests.

  • js/script-tests/weakref-async-is-collected.js:
  • js/script-tests/weakref-eventually-collects-values.js:
  • js/script-tests/weakref-microtasks-dont-collect.js:
  • js/script-tests/weakref-weakset-consistency.js:
  • js/weakref-async-is-collected.html:
  • js/weakref-eventually-collects-values.html:
  • js/weakref-microtasks-dont-collect.html:
  • js/weakref-weakset-consistency.html:

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

1:23 PM Changeset in webkit [247588] by Kocsen Chung
  • 6 edits in branches/safari-608-branch/Source

Cherry-pick r247470. rdar://problem/53229634

outlook.live.com has odd viewport with edge gap
https://bugs.webkit.org/show_bug.cgi?id=199822
<rdar://problem/53029072>

Reviewed by Wenson Hsieh.

Source/WebCore:

r244944 introduced a viewport width quirk because at certain screen size outlook.live.com's flex setup produced a slighly broken layout.
We don't seem to need this quirk anymore (composed column's min-width is removed.)

  • page/Quirks.cpp: (WebCore::Quirks::shouldIgnoreShrinkToFitContent const): Deleted. (WebCore::Quirks::overriddenViewLayoutWidth const): Deleted.
  • page/Quirks.h:

Source/WebKit:

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::setViewportConfigurationViewLayoutSize): (WebKit::WebPage::dynamicViewportSizeUpdate): (WebKit::WebPage::resetViewportDefaultConfiguration): (WebKit::WebPage::immediatelyShrinkToFitContent): (WebKit::WebPage::viewLayoutSizeAdjustedForQuirks): Deleted.

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

1:23 PM Changeset in webkit [247587] by Kocsen Chung
  • 7 edits in branches/safari-608-branch

Cherry-pick r247467. rdar://problem/53229768

[Text autosizing] [iPadOS] Product label text is clipped in portrait mode on the front page of sephora.com
https://bugs.webkit.org/show_bug.cgi?id=199806
<rdar://problem/52902482>

Reviewed by Zalan Bujtas.

Source/WebCore:

On sephora.com, some product label text is currently boosted by idempotent text autosizing, which causes the
labels be vertically clipped. This patch augments the idempotent text autosizing heuristic to avoid this case by
checking if the element to be boosted has a fixed height or max height, whose value is very close to a small
integer multiple of the line height. In this case, it's likely that the website expects the text to be no more
than a few lines' worth of height, so boosting the text is likely to break the page.

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

  • rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::isIdempotentTextAutosizingCandidate const):
  • rendering/style/TextSizeAdjustment.cpp: (WebCore::AutosizeStatus::updateStatus):
  • rendering/style/TextSizeAdjustment.h:

Rename Fields::DisplayNone to Fields::AvoidSubtree to avoid introducing another bit in RenderStyle's inherited
flags.

LayoutTests:

Add a new test case to an existing layout test, which mimics the product label text on sephora.com's front page.

  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates-expected.txt:
  • fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html:

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

1:23 PM Changeset in webkit [247586] by Kocsen Chung
  • 2 edits in branches/safari-608-branch/Tools

Cherry-pick r247466. rdar://problem/53228860

[ Mojave WK1 ] Some Image tests are flakey failures and are failing in tandem with zoomed in or blank image results
https://bugs.webkit.org/show_bug.cgi?id=193108

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-07-15
Reviewed by Simon Fraser.

Add a workaround for <rdar://problem/17084993> in createBitmapContextFromWebView().
Re-request the snapshot at kCGWindowImageNominalResolution if it was captured
at the wrong scale.

  • DumpRenderTree/mac/PixelDumpSupportMac.mm: (takeWindowSnapshot): (createBitmapContextFromWebView):

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

1:23 PM Changeset in webkit [247585] by Kocsen Chung
  • 11 edits in branches/safari-608-branch/Source

Cherry-pick r247465. rdar://problem/53229731

New York font erroneously gets synthetic bold
https://bugs.webkit.org/show_bug.cgi?id=199653

Unreviewed watchOS build fix.

Source/WebCore:

  • page/ProcessWarming.cpp: (WebCore::ProcessWarming::prewarmGlobally):
  • page/cocoa/MemoryReleaseCocoa.mm: (WebCore::platformReleaseMemory):
  • platform/graphics/FontCascadeDescription.cpp:
  • platform/graphics/FontDescription.h:
  • platform/graphics/cocoa/FontCacheCoreText.cpp: (WebCore::invalidateFontCache): (WebCore::lookupFallbackFont):
  • platform/graphics/cocoa/FontDescriptionCocoa.cpp: (WebCore::FontCascadeDescription::effectiveFamilyAt const):
  • platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp: (WebCore::FontFamilySpecificationCoreText::fontRanges const):
  • platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp:

Source/WTF:

  • wtf/Platform.h:

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

1:23 PM Changeset in webkit [247584] by Kocsen Chung
  • 9 edits in branches/safari-608-branch

Cherry-pick r247461. rdar://problem/53229637

Make WKURLSchemeTask thread safe.
<rdar://problem/50471863> and https://bugs.webkit.org/show_bug.cgi?id=199764

Reviewed by Alex Christensen.

Source/WebKit:

Punt most of the WKURLSchemeTask operations back to the main thread.
Make accessing the NSURLRequest be thread safe with lock protection.

  • UIProcess/API/Cocoa/WKURLSchemeTask.mm: (getExceptionTypeFromMainRunLoop): (-[WKURLSchemeTaskImpl dealloc]): (-[WKURLSchemeTaskImpl request]): (-[WKURLSchemeTaskImpl _requestOnlyIfCached]): (-[WKURLSchemeTaskImpl didReceiveResponse:]): (-[WKURLSchemeTaskImpl didReceiveData:]): (-[WKURLSchemeTaskImpl didFinish]): (-[WKURLSchemeTaskImpl didFailWithError:]): (-[WKURLSchemeTaskImpl _didPerformRedirection:newRequest:]):
  • UIProcess/WebURLSchemeTask.cpp: (WebKit::WebURLSchemeTask::WebURLSchemeTask): (WebKit::WebURLSchemeTask::~WebURLSchemeTask): (WebKit::WebURLSchemeTask::didPerformRedirection): (WebKit::WebURLSchemeTask::didReceiveResponse): (WebKit::WebURLSchemeTask::didReceiveData): (WebKit::WebURLSchemeTask::didComplete): (WebKit::WebURLSchemeTask::pageDestroyed): (WebKit::WebURLSchemeTask::stop): (WebKit::WebURLSchemeTask::nsRequest const):
  • UIProcess/WebURLSchemeTask.h: (WebKit::WebURLSchemeTask::identifier const): (WebKit::WebURLSchemeTask::pageID const): (WebKit::WebURLSchemeTask::process): (WebKit::WebURLSchemeTask::process const): Deleted. (WebKit::WebURLSchemeTask::request const): Deleted.

Source/WTF:

  • wtf/MainThread.cpp: (WTF::callOnMainAndWait): (WTF::callOnMainRunLoopAndWait): (WTF::callOnMainThreadAndWait):
  • wtf/MainThread.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:

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

1:23 PM Changeset in webkit [247583] by Kocsen Chung
  • 8 edits in branches/safari-608-branch/Source/WebKit

Cherry-pick r247460. rdar://problem/53229628

Followup to r247439
https://bugs.webkit.org/show_bug.cgi?id=199788
<rdar://problem/52142570>

Reviewed by Tim Horton.

As it turns out, sending modern async completion-handler based IPC messages while processing incoming sync
messages results in a debug assertion. Instead of migrating FontAtSelection to the new async IPC mechanism,
restore the older CallbackID-based async IPC.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/WebPageProxyMac.mm: (WebKit::WebPageProxy::fontAtSelection): (WebKit::WebPageProxy::fontAtSelectionCallback):
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::WebPage::fontAtSelection):

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

1:23 PM Changeset in webkit [247582] by Kocsen Chung
  • 2 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r247459. rdar://problem/53229552

Crash under DisplayRefreshMonitorManager::displayWasUpdated()
https://bugs.webkit.org/show_bug.cgi?id=199808
<rdar://problem/53070144>

Reviewed by Geoffrey Garen.

Copy m_monitors before iterating over it because the calling displayLinkFired() on the
monitor may end up calling DisplayRefreshMonitorManager::displayDidRefresh() synchronously,
which removes the monitor from m_monitors.

  • platform/graphics/DisplayRefreshMonitorManager.cpp: (WebCore::DisplayRefreshMonitorManager::displayWasUpdated):

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

1:23 PM Changeset in webkit [247581] by Kocsen Chung
  • 2 edits in branches/safari-608-branch/Tools

Cherry-pick r247458. rdar://problem/53229545

Unreviewed, a build fix after r247437

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm: Added platform guard towards -[WKUIDelegate _presentingViewControllerForWebView:].

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

1:23 PM Changeset in webkit [247580] by Kocsen Chung
  • 2 edits in branches/safari-608-branch/Source/WTF

Cherry-pick r247454. rdar://problem/53229624

MacCatalyst asserts when command key is raised
https://bugs.webkit.org/show_bug.cgi?id=199805
<rdar://problem/53120393>

Reviewed by Tim Horton.

Add USE_UIKIT_KEYBOARD_ADDITIONS for iOS 13+ and macCatalyst.

  • wtf/FeatureDefines.h:

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

1:23 PM Changeset in webkit [247579] by Kocsen Chung
  • 2 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r247450. rdar://problem/53229577

Add missing webgpu includes
https://bugs.webkit.org/show_bug.cgi?id=199802
<rdar://problem/53119120>

Reviewed by Myles C. Maxfield.

WHLSLFunctionWriter.cpp fails to compile on tvOS and watchOS due to
missing includes. This file likely compiles on other platforms due to
the Unified Sources facility that clumps several implementation files
together, exposing those implementation files to the others' includes.
It fails on tvOS and watchOS due to the different ways these
implementation files can get clumped together on different platforms.

No new tests as there is no functional change.

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

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

1:23 PM Changeset in webkit [247578] by Kocsen Chung
  • 10 edits in branches/safari-608-branch

Cherry-pick r247439. rdar://problem/53229628

[macOS 10.15] Cannot unbold selected text when the system font is used
https://bugs.webkit.org/show_bug.cgi?id=199788
<rdar://problem/52142570>

Reviewed by Tim Horton.

Source/WebKit:

In macOS 10.15, +[NSFont fontWithName:size:] no longer recognizes system fonts (of name
".SFNS-*") and returns nil instead. However, our existing implementation of
WebPageProxy::fontAtSelection works by grabbing the font name in the web process, and
sending it over to the UI process, where it is mapped to an NSFont. As a result, this always
results in a nil font in macOS 10.15, which causes us to never update NSFontManager's
selected font. In turn, this means that once selected text is bolded, it can't be unbolded
via NSFontManager, since NSFontManager thinks that the text is still not bold.

To fix this, we simply encode and send a platform FontInfo instead of sending the font name.
This allows the UI process to reconstruct NSFonts from font attribute dictionaries instead,
and update the font manager.

  • UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::updateFontManagerIfNeeded):
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/WebPageProxyMac.mm: (WebKit::WebPageProxy::fontAtSelection):

Refactor this to send a FontInfo (containing a font attribute dictionary) instead of a font
name.

(WebKit::WebPageProxy::fontAtSelectionCallback): Deleted.

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

Change FontAtSelection to use sendWithAsyncReply instead of sending a callback ID. This also
allows us to remove FontAtSelectionCallback.

  • WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::WebPage::fontAtSelection):

Tools:

Add a new API test to verify that bolding and unbolding updates the
shared font manager's selected font.

  • TestWebKitAPI/Tests/mac/FontManagerTests.mm: (TestWebKitAPI::TEST):

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

1:23 PM Changeset in webkit [247577] by Kocsen Chung
  • 4 edits in branches/safari-608-branch

Cherry-pick r247437. rdar://problem/53229545

[iOS] SOAuthorizationSession should tell AppSSO whether the UIClient is capable of showing the extension UI
https://bugs.webkit.org/show_bug.cgi?id=199790
<rdar://problem/52790112>

Reviewed by Brent Fulgham.

Source/WebKit:

On iOS, WebKit relies on a SPI -[WKUIDelegatePrivate _presentingViewControllerForWebView:] to present the
extension UI. However, third party clients often don't implement this SPI. Therefore, WebKit will not be
able to present the extension UI for them.

To be able to show the extension UI for third party WebKit clients, WebKit should unset SOAuthorization.enableEmbeddedAuthorizationViewController
whenever clients don't implement the above SPI such that AppSSO could show the UI in their UI process.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm: (WebKit::SOAuthorizationSession::start):

Tools:

Add tests to check SOAuthorization.enableEmbeddedAuthorizationViewController accordingly.

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm: (-[TestSOAuthorizationDelegate _presentingViewControllerForWebView:]): (configureSOAuthorizationWebView): (TestWebKitAPI::TEST): (-[TestSOAuthorizationNavigationDelegate init]): Deleted. (-[TestSOAuthorizationNavigationDelegate webView:didFinishNavigation:]): Deleted. (-[TestSOAuthorizationNavigationDelegate webView:decidePolicyForNavigationAction:decisionHandler:]): Deleted. (-[TestSOAuthorizationNavigationDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]): Deleted. (-[TestSOAuthorizationNavigationDelegate _webView:decidePolicyForSOAuthorizationLoadWithCurrentPolicy:forExtension:completionHandler:]): Deleted.

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

1:22 PM Changeset in webkit [247576] by Kocsen Chung
  • 6 edits in branches/safari-608-branch

Cherry-pick r247434. rdar://problem/53229565

window.openDatabase is not writable
https://bugs.webkit.org/show_bug.cgi?id=199737
<rdar://problem/52551332>

Reviewed by Chris Dumez.

Source/WebCore:

In r246707 we made openDatabase an undetectable attribute of window, and it was set to be read-only. This broke
some sites which replace window.openDatabase with their own implementation when window.openDatabase does not
exists or WebSQL is not implemented.

This patch removes the readonly property and adds a setter for openDatabase.

  • Modules/webdatabase/DOMWindowWebDatabase.idl:
  • bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::setOpenDatabase):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebSQLBasics.mm: (TEST):
  • TestWebKitAPI/Tests/WebKitCocoa/opendatabase-always-exists.html:

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

1:22 PM Changeset in webkit [247575] by Kocsen Chung
  • 2 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r247379. rdar://problem/53229731

Fix builds where HAVE_DESIGN_SYSTEM_UI_FONTS is not defined.

  • platform/graphics/cocoa/FontCacheCoreText.cpp: (WebCore::fontWithFamilySpecialCase):

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

1:22 PM Changeset in webkit [247574] by Kocsen Chung
  • 30 edits
    32 adds in branches/safari-608-branch

Cherry-pick r247377. rdar://problem/53229731

New York font erroneously gets synthetic bold
https://bugs.webkit.org/show_bug.cgi?id=199653
<rdar://problem/51692592>

Reviewed by Simon Fraser.

Source/WebCore:

This patch adds support for -apple-system-ui-serif, -apple-system-ui-monospaced,
and -apple-system-ui-rounded, behind an SPI that is off-by-default. We don't want
to expose these fonts to the web because we don't a standardization story for them
yet, but we do want some apps to be able to use them.

WebKit clients who want to use these fonts can set
-[WKPreferences _shouldAllowDesignSystemUIFonts] = YES.

The patch generalizes our existing system-ui infrastructure to handle these three
additional fonts. It also explicitly disables the unsupported dot-prefixed names
so they don't leak out into Web content.

Tests: fast/text/design-system-ui-10.html

fast/text/design-system-ui-11.html
fast/text/design-system-ui-12.html
fast/text/design-system-ui-13.html
fast/text/design-system-ui-14.html
fast/text/design-system-ui-15.html
fast/text/design-system-ui-16.html
fast/text/design-system-ui-2.html
fast/text/design-system-ui-3.html
fast/text/design-system-ui-4.html
fast/text/design-system-ui-5.html
fast/text/design-system-ui-6.html
fast/text/design-system-ui-7.html
fast/text/design-system-ui-8.html
fast/text/design-system-ui-9.html
fast/text/design-system-ui.html

  • css/CSSFontFace.cpp: (WebCore::CSSFontFace::shouldAllowDesignSystemUIFonts const):
  • css/CSSFontFace.h:
  • css/CSSFontFaceSource.cpp: (WebCore::CSSFontFaceSource::load):
  • css/StyleResolver.cpp: (WebCore::StyleResolver::initializeFontStyle):
  • page/Settings.yaml:
  • platform/graphics/FontDescription.cpp: (WebCore::m_shouldAllowDesignSystemUIFonts): (WebCore::m_shouldAllowUserInstalledFonts): Deleted.
  • platform/graphics/FontDescription.h: (WebCore::FontDescription::shouldAllowDesignSystemUIFonts const): (WebCore::FontDescription::setShouldAllowDesignSystemUIFonts): (WebCore::FontDescription::operator== const):
  • platform/graphics/cocoa/FontCacheCoreText.cpp: (WebCore::platformFontLookupWithFamily): (WebCore::fontWithFamily):
  • platform/graphics/cocoa/FontCacheCoreText.h:
  • platform/graphics/cocoa/FontDescriptionCocoa.cpp: (WebCore::systemFontUse): (WebCore::systemFontCascadeList): (WebCore::FontCascadeDescription::effectiveFamilyCount const): (WebCore::FontCascadeDescription::effectiveFamilyAt const): (WebCore::isSystemFontString): Deleted. (WebCore::isUIFontTextStyle): Deleted.
  • platform/graphics/cocoa/FontPlatformDataCocoa.mm: (WebCore::FontPlatformData::ctFont const):
  • platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp: (WebCore::SystemFontDatabaseCoreText::createSystemUI): (WebCore::SystemFontDatabaseCoreText::createDesignSystemUI): (WebCore::SystemFontDatabaseCoreText::createTextStyle): (WebCore::SystemFontDatabaseCoreText::cascadeList): (WebCore::SystemFontDatabaseCoreText::applyWeightItalicsAndFallbackBehavior): (WebCore::SystemFontDatabaseCoreText::systemFontParameters):
  • platform/graphics/cocoa/SystemFontDatabaseCoreText.h:
  • platform/graphics/ios/FontCacheIOS.mm: (WebCore::platformFontWithFamilySpecialCase):
  • platform/graphics/mac/FontCacheMac.mm: (WebCore::platformFontWithFamilySpecialCase):
  • style/StyleResolveForDocument.cpp: (WebCore::Style::resolveForDocument):
  • svg/graphics/SVGImage.cpp: (WebCore::SVGImage::dataChanged):
  • testing/InternalSettings.cpp: (WebCore::InternalSettings::Backup::Backup): (WebCore::InternalSettings::Backup::restoreTo): (WebCore::InternalSettings::setShouldAllowDesignSystemUIFonts):
  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:

Source/WebCore/PAL:

  • pal/spi/cocoa/CoreTextSPI.h:

Source/WebKit:

Add the SPI to enable the new fonts.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetShouldAllowDesignSystemUIFonts): (WKPreferencesGetShouldAllowDesignSystemUIFonts):
  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKPreferences.mm: (-[WKPreferences _shouldAllowDesignSystemUIFonts]): (-[WKPreferences _setShouldAllowDesignSystemUIFonts:]):
  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Source/WTF:

  • wtf/Platform.h:

LayoutTests:

  • TestExpectations:
  • fast/text/design-system-ui-10-expected-mismatch.html: Added.
  • fast/text/design-system-ui-10.html: Added.
  • fast/text/design-system-ui-11-expected-mismatch.html: Added.
  • fast/text/design-system-ui-11.html: Added.
  • fast/text/design-system-ui-12-expected-mismatch.html: Added.
  • fast/text/design-system-ui-12.html: Added.
  • fast/text/design-system-ui-13-expected-mismatch.html: Added.
  • fast/text/design-system-ui-13.html: Added.
  • fast/text/design-system-ui-14-expected-mismatch.html: Added.
  • fast/text/design-system-ui-14.html: Added.
  • fast/text/design-system-ui-15-expected-mismatch.html: Added.
  • fast/text/design-system-ui-15.html: Added.
  • fast/text/design-system-ui-16-expected-mismatch.html: Added.
  • fast/text/design-system-ui-16.html: Added.
  • fast/text/design-system-ui-2-expected.html: Added.
  • fast/text/design-system-ui-2.html: Added.
  • fast/text/design-system-ui-3-expected-mismatch.html: Added.
  • fast/text/design-system-ui-3.html: Added.
  • fast/text/design-system-ui-4-expected-mismatch.html: Added.
  • fast/text/design-system-ui-4.html: Added.
  • fast/text/design-system-ui-5-expected-mismatch.html: Added.
  • fast/text/design-system-ui-5.html: Added.
  • fast/text/design-system-ui-6-expected.html: Added.
  • fast/text/design-system-ui-6.html: Added.
  • fast/text/design-system-ui-7-expected.html: Added.
  • fast/text/design-system-ui-7.html: Added.
  • fast/text/design-system-ui-8-expected-mismatch.html: Added.
  • fast/text/design-system-ui-8.html: Added.
  • fast/text/design-system-ui-9-expected-mismatch.html: Added.
  • fast/text/design-system-ui-9.html: Added.
  • fast/text/design-system-ui-expected.html: Added.
  • fast/text/design-system-ui.html: Added.
  • platform/mac/TestExpectations:

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

12:12 PM Changeset in webkit [247573] by graouts@webkit.org
  • 3 edits
    4 adds in trunk

[Pointer Events] The button and buttons properties are incorrect on iOS
https://bugs.webkit.org/show_bug.cgi?id=199910
<rdar://problem/52778374>

Reviewed by Dean Jackson.

Source/WebCore:

The button and buttons properties were always set to 0 on iOS. We now use the correct values such that
button is always 0 except for "pointermove" where it's -1, and "buttons" is 1 as long as the pointer is
in contact with the touch surface.

Tests: pointerevents/ios/pointer-event-button-and-buttons-pointer-cancel.html

pointerevents/ios/pointer-event-button-and-buttons.html

  • dom/ios/PointerEventIOS.cpp:

(WebCore::buttonForType):
(WebCore::buttonsForType):
(WebCore::PointerEvent::PointerEvent):

LayoutTests:

  • pointerevents/ios/pointer-event-button-and-buttons-expected.txt: Added.
  • pointerevents/ios/pointer-event-button-and-buttons-pointer-cancel-expected.txt: Added.
  • pointerevents/ios/pointer-event-button-and-buttons-pointer-cancel.html: Added.
  • pointerevents/ios/pointer-event-button-and-buttons.html: Added.
12:11 PM Changeset in webkit [247572] by graouts@webkit.org
  • 4 edits in trunk/Source/WebCore

REGRESSION: Unable to enable simulated mouse events using the runtime flag
https://bugs.webkit.org/show_bug.cgi?id=199909
<rdar://problem/53254895>

Reviewed by Dean Jackson.

The fix for wkb.ug/199508 (r247152) broke the ability enable simulated mouse events using the runtime flag.
We now add a check for the flag in Quirks::shouldDispatchSimulatedMouseEvents() so that the runtime flag
overrides the content of that function. This is more practical and allows for a quick override using the flag.

Additionally, we need only call shouldDispatchSimulatedMouseEvents() in simulatedMouseEventTypeForTarget() since
that function already calls needsQuirks().

  • dom/EventNames.h:

(WebCore::EventNames::isTouchRelatedEventType const):

  • dom/Node.cpp:

(WebCore::Node::moveNodeToNewDocument):

  • page/Quirks.cpp:

(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
(WebCore::Quirks::simulatedMouseEventTypeForTarget const):

12:06 PM Changeset in webkit [247571] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

Rebase fast/forms/ios/delete-in-input-in-iframe.html after r244141
https://bugs.webkit.org/show_bug.cgi?id=199875
<rdar://problem/50060561>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-07-18
Reviewed by Megan Gardner.

In r202295, we added an ios-specific quirk to prevent scrolling on iOS because of UIKit/WebKit scrolling discrepancies.
In r244141, we changed the scrolling behavior to be more like macOS, and the test was broken. Since this was an intentional
change and the bugs reported in rdar://problem/26805722 (initially fixed by r202295) and rdar://problem/49225507 (fixed by r244141)
are both behaving as desired, the intentional change in r244141 should be reflected by new test expectations.
We do want typing in an input field in an iframe to scroll as we type.

  • fast/forms/ios/delete-in-input-in-iframe-expected.txt:
  • fast/forms/ios/delete-in-input-in-iframe.html:
12:05 PM Changeset in webkit [247570] by commit-queue@webkit.org
  • 116 edits in trunk/Source/WebKitLegacy

Unify builds in WebKitLegacy/mac/DOM
https://bugs.webkit.org/show_bug.cgi?id=199771

Patch by Alex Christensen <achristensen@webkit.org> on 2019-07-18
Reviewed by Geoffrey Garen.

Source/WebKitLegacy:

  • SourcesCocoa.txt:
  • WebKitLegacy.xcodeproj/project.pbxproj:
  • scripts/generate-unified-sources.sh:

Source/WebKitLegacy/mac:

  • DOM/DOMAbstractView.mm:
  • DOM/DOMAttr.mm:
  • DOM/DOMBlob.mm:
  • DOM/DOMCDATASection.mm:
  • DOM/DOMCSSFontFaceRule.mm:
  • DOM/DOMCSSImportRule.mm:
  • DOM/DOMCSSMediaRule.mm:
  • DOM/DOMCSSPageRule.mm:
  • DOM/DOMCSSPrimitiveValue.mm:
  • DOM/DOMCSSRule.mm:
  • DOM/DOMCSSRuleList.mm:
  • DOM/DOMCSSStyleDeclaration.mm:
  • DOM/DOMCSSStyleRule.mm:
  • DOM/DOMCSSStyleSheet.mm:
  • DOM/DOMCSSUnknownRule.mm:
  • DOM/DOMCSSValue.mm:
  • DOM/DOMCSSValueList.mm:
  • DOM/DOMCharacterData.mm:
  • DOM/DOMComment.mm:
  • DOM/DOMCounter.mm:
  • DOM/DOMDocument.mm:
  • DOM/DOMDocumentFragment.mm:
  • DOM/DOMDocumentType.mm:
  • DOM/DOMEvent.mm:
  • DOM/DOMFile.mm:
  • DOM/DOMFileList.mm:
  • DOM/DOMHTMLAnchorElement.mm:
  • DOM/DOMHTMLAppletElement.mm:
  • DOM/DOMHTMLAreaElement.mm:
  • DOM/DOMHTMLBRElement.mm:
  • DOM/DOMHTMLBaseElement.mm:
  • DOM/DOMHTMLBaseFontElement.mm:
  • DOM/DOMHTMLBodyElement.mm:
  • DOM/DOMHTMLButtonElement.mm:
  • DOM/DOMHTMLCanvasElement.mm:
  • DOM/DOMHTMLCollection.mm:
  • DOM/DOMHTMLDListElement.mm:
  • DOM/DOMHTMLDirectoryElement.mm:
  • DOM/DOMHTMLDivElement.mm:
  • DOM/DOMHTMLDocument.mm:
  • DOM/DOMHTMLElement.mm:
  • DOM/DOMHTMLEmbedElement.mm:
  • DOM/DOMHTMLFieldSetElement.mm:
  • DOM/DOMHTMLFontElement.mm:
  • DOM/DOMHTMLFormElement.mm:
  • DOM/DOMHTMLFrameElement.mm:
  • DOM/DOMHTMLFrameSetElement.mm:
  • DOM/DOMHTMLHRElement.mm:
  • DOM/DOMHTMLHeadElement.mm:
  • DOM/DOMHTMLHeadingElement.mm:
  • DOM/DOMHTMLHtmlElement.mm:
  • DOM/DOMHTMLIFrameElement.mm:
  • DOM/DOMHTMLImageElement.mm:
  • DOM/DOMHTMLInputElement.mm:
  • DOM/DOMHTMLLIElement.mm:
  • DOM/DOMHTMLLabelElement.mm:
  • DOM/DOMHTMLLegendElement.mm:
  • DOM/DOMHTMLLinkElement.mm:
  • DOM/DOMHTMLMapElement.mm:
  • DOM/DOMHTMLMarqueeElement.mm:
  • DOM/DOMHTMLMediaElement.mm:
  • DOM/DOMHTMLMenuElement.mm:
  • DOM/DOMHTMLMetaElement.mm:
  • DOM/DOMHTMLModElement.mm:
  • DOM/DOMHTMLOListElement.mm:
  • DOM/DOMHTMLObjectElement.mm:
  • DOM/DOMHTMLOptGroupElement.mm:
  • DOM/DOMHTMLOptionElement.mm:
  • DOM/DOMHTMLOptionsCollection.mm:
  • DOM/DOMHTMLParagraphElement.mm:
  • DOM/DOMHTMLParamElement.mm:
  • DOM/DOMHTMLPreElement.mm:
  • DOM/DOMHTMLQuoteElement.mm:
  • DOM/DOMHTMLScriptElement.mm:
  • DOM/DOMHTMLSelectElement.mm:
  • DOM/DOMHTMLStyleElement.mm:
  • DOM/DOMHTMLTableCaptionElement.mm:
  • DOM/DOMHTMLTableCellElement.mm:
  • DOM/DOMHTMLTableColElement.mm:
  • DOM/DOMHTMLTableElement.mm:
  • DOM/DOMHTMLTableRowElement.mm:
  • DOM/DOMHTMLTableSectionElement.mm:
  • DOM/DOMHTMLTitleElement.mm:
  • DOM/DOMHTMLUListElement.mm:
  • DOM/DOMHTMLVideoElement.mm:
  • DOM/DOMKeyboardEvent.mm:
  • DOM/DOMMediaError.mm:
  • DOM/DOMMediaList.mm:
  • DOM/DOMMouseEvent.mm:
  • DOM/DOMMutationEvent.mm:
  • DOM/DOMNamedNodeMap.mm:
  • DOM/DOMNodeIterator.mm:
  • DOM/DOMNodeList.mm:
  • DOM/DOMOverflowEvent.mm:
  • DOM/DOMProcessingInstruction.mm:
  • DOM/DOMProgressEvent.mm:
  • DOM/DOMRGBColor.mm:
  • DOM/DOMRange.mm:
  • DOM/DOMRect.mm:
  • DOM/DOMStyleSheet.mm:
  • DOM/DOMStyleSheetList.mm:
  • DOM/DOMText.mm:
  • DOM/DOMTextEvent.mm:
  • DOM/DOMTimeRanges.mm:
  • DOM/DOMTokenList.mm:
  • DOM/DOMTreeWalker.mm:
  • DOM/DOMUIEvent.mm:
  • DOM/DOMWheelEvent.mm:
  • DOM/DOMXPath.mm:
  • DOM/DOMXPathExpression.mm:
  • DOM/DOMXPathResult.mm:
12:03 PM Changeset in webkit [247569] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] Add build step to AnalyzeLayoutTestsResults
https://bugs.webkit.org/show_bug.cgi?id=199877

Reviewed by Jonathan Bedard.

Logic is ported from webkitpy/tool/bot/patchanalysistask.py::_retry_layout_tests()

  • BuildSlaveSupport/ews-build/steps.py:

(RunWebKitTestsWithoutPatch.evaluateCommand): invoke AnalyzeLayoutTestsResults step.
(AnalyzeLayoutTestsResults): Build step to analyze layout-test results.
(AnalyzeLayoutTestsResults.report_failure):
(AnalyzeLayoutTestsResults.report_pre_existing_failures):
(AnalyzeLayoutTestsResults.retry_build):
(AnalyzeLayoutTestsResults._results_failed_different_tests):
(AnalyzeLayoutTestsResults._report_flaky_tests):
(AnalyzeLayoutTestsResults.start):

  • BuildSlaveSupport/ews-build/steps_unittest.py: Added unit-tests.
11:57 AM Changeset in webkit [247568] by graouts@webkit.org
  • 3 edits in trunk/Source/WebCore

REGRESSION: Panning on an Amazon product image scrolls the page on iPadOS
https://bugs.webkit.org/show_bug.cgi?id=199905
<rdar://problem/49124529>

Reviewed by Dean Jackson.

Amazon product pages include images that the user can touch and pan to show zoomed details in a side image. This
currently works on iPadOS thanks to the dispatch of simulated "mousemove" events on the product image, but the site
doesn't call preventDefault() when handling those events as it wasn't necessary for macOS.

We add a new quirk that will indicate that a given element is such a product image.

  • page/Quirks.cpp:

(WebCore::Quirks::isAmazon const):
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
(WebCore::Quirks::shouldDispatchedSimulatedMouseEventsAssumeDefaultPrevented const):
(WebCore::Quirks::simulatedMouseEventTypeForTarget const):

  • page/Quirks.h:
11:41 AM Changeset in webkit [247567] by achristensen@apple.com
  • 26 edits in trunk

Move NetworkCache ownership from NetworkProcess to NetworkSession
https://bugs.webkit.org/show_bug.cgi?id=199817

Reviewed by Geoff Garen.

Source/WebKit:

I also added SPI to set the path of the NetworkCache with an API test.
If this new SPI is not used, it falls back to getting the cache location from the NetworkProcess to maintain compatibility.
We still get options, cache size, and cache model from the NetworkProcess. Those should be migrated with new SPI later.
Clearing the cache and other operations now iterate the NetworkSessions instead of assuming there is only one cache.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::fetchWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains):
(WebKit::NetworkProcess::registrableDomainsWithWebsiteData):
(WebKit::NetworkProcess::setCacheModel):

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::diskCacheDirectory const):
(WebKit::NetworkProcess::cacheOptions const):
(WebKit::NetworkProcess::cache): Deleted.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::m_shouldCaptureExtraNetworkLoadMetrics):

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::cache):

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::open):
(WebKit::NetworkCache::Cache::Cache):

  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
(WebKit::NetworkProcess::clearDiskCache):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

  • NetworkProcess/curl/NetworkSessionCurl.cpp:

(WebKit::NetworkSessionCurl::NetworkSessionCurl):

  • NetworkProcess/soup/NetworkSessionSoup.cpp:

(WebKit::NetworkSessionSoup::NetworkSessionSoup):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _initWithConfiguration:]):

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

(-[_WKWebsiteDataStoreConfiguration networkCacheDirectory]):
(-[_WKWebsiteDataStoreConfiguration setNetworkCacheDirectory:]):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::resolvedNetworkCacheDirectory const):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:

(TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[WKWebView synchronouslyLoadRequest:]):

11:34 AM Changeset in webkit [247566] by youenn@apple.com
  • 12 edits
    5 adds in trunk

Make sure to set kCTFontFallbackOptionAttribute to kCTFontFallbackOptionSystem for system fonts
https://bugs.webkit.org/show_bug.cgi?id=199769
<rdar://problem/49390297>

Reviewed by Myles C. Maxfield.

Source/WebCore:

When getting a system font, set the appropriate attribute so that it
does not fallback to a user initiated font.
Add an ASSERT that checks that the font in use is not a user font if
policy is to not use user installed fonts.

Tests: fast/text/user-installed-fonts/extended-character-with-user-font.html

fast/text/user-installed-fonts/extended-character.html

  • platform/graphics/Font.h:
  • platform/graphics/FontCascadeFonts.cpp:

(WebCore::FontCascadeFonts::glyphDataForSystemFallback):

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::preparePlatformFont):
(WebCore::FontDatabase::singletonAllowingUserInstalledFonts):
(WebCore::FontDatabase::singletonDisallowingUserInstalledFonts):
(WebCore::addAttributesForInstalledFonts):
(WebCore::addAttributesForWebFonts):
(WebCore::installedFontMandatoryAttributes):

  • platform/graphics/mac/SimpleFontDataCoreText.cpp:

(WebCore::Font::isUserInstalledFont const):

Source/WTF:

  • wtf/Platform.h:

Tools:

Add a font containing one extended character not found in system fonts.

  • WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
  • WebKitTestRunner/fonts/FakeHelvetica-SingleExtendedCharacter.ttf: Added.

LayoutTests:

Tests require WTR and recent MacOS, hence why they are disabled elsewhere.

  • TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • fast/text/user-installed-fonts/extended-character-expected.html: Added.
  • fast/text/user-installed-fonts/extended-character-with-user-font-expected-mismatch.html: Added.
  • fast/text/user-installed-fonts/extended-character-with-user-font.html: Added.
  • fast/text/user-installed-fonts/extended-character.html: Added.
10:44 AM Changeset in webkit [247565] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Regression(r247486) Multiple Layout Tests in http/tests/cache/* are crashing on iOS Debug WK2
https://bugs.webkit.org/show_bug.cgi?id=199892
<rdar://problem/53230217>

Reviewed by Geoffrey Garen.

The StorageManager was unregistering itself as a WorkQueueMessageReceiver on a given IPC
connection too early. As a result, we would sometimes receive a 'StorageManager:DestroyStorageMap'
IPC in NetworkConnectionToWebProcess::didReceiveMessage() with nobody to process it, which would
trigger an assertion. To address the issue, we stop unregistering the StorageManager as a
WorkQueueMessageReceiver inside removeAllowedSessionStorageNamespaceConnection(). Instead, we
let the logic inside processDidCloseConnection() take care of it once the connection closes.

  • NetworkProcess/WebStorage/StorageManager.cpp:

(WebKit::StorageManager::removeAllowedSessionStorageNamespaceConnection):
(WebKit::StorageManager::processDidCloseConnection):

  • NetworkProcess/WebStorage/StorageManager.h:
10:34 AM Changeset in webkit [247564] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Rebaseline imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering.html
https://bugs.webkit.org/show_bug.cgi?id=199839

Unreviewed test gardening.

  • platform/ios/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-expected.txt:
7:42 AM Changeset in webkit [247563] by Carlos Garcia Campos
  • 9 edits in trunk/Source/WebKit

[GTK] Crash in webkitWebViewBaseRenderHostFileDescriptor
https://bugs.webkit.org/show_bug.cgi?id=199402

Reviewed by Michael Catanzaro.

There are two problems here:

  • We need to ensure that the checks we do in HardwareAccelerationManager to disable AC mode are the same as the ones done in AcceleratedBackingStore create() methods. This is not the case for WPE renderer.
  • Some of the places where accelerateBackingStore is used, can be called even if AC mode is disabled, so we need to null-check there before using the backing store.
  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseDraw): Add an assert to ensure accelerateBackingStore is not nullptr here.
(webkitWebViewBaseEnterAcceleratedCompositingMode): Ditto.
(webkitWebViewBaseUpdateAcceleratedCompositingMode): Ditto.
(webkitWebViewBaseExitAcceleratedCompositingMode): Ditto.
(webkitWebViewBaseMakeGLContextCurrent): Ditto.
(webkitWebViewBaseDidRelaunchWebProcess): Null-check accelerateBackingStore before using it.
(webkitWebViewBasePageClosed): Ditto.
(webkitWebViewBaseRenderHostFileDescriptor): Ditto.

  • UIProcess/gtk/AcceleratedBackingStore.cpp:

(WebKit::AcceleratedBackingStore::checkRequirements): Call AcceleratedBackingStoreWayland::checkRequirements()
or AcceleratedBackingStoreX11::checkRequirements() depending on the current display.
(WebKit::AcceleratedBackingStore::create): Return early if AC mode is disabled in HardwareAccelerationManager.

  • UIProcess/gtk/AcceleratedBackingStore.h:
  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::checkRequirements): Check requirements for hardware acceleration in Wayland.
(WebKit::AcceleratedBackingStoreWayland::create): Assert that requirements are present.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.h:
  • UIProcess/gtk/AcceleratedBackingStoreX11.cpp:

(WebKit::AcceleratedBackingStoreX11::checkRequirements): Check requirements for hardware acceleration in X11.
(WebKit::AcceleratedBackingStoreX11::create): Assert that requirements are present.

  • UIProcess/gtk/AcceleratedBackingStoreX11.h:
  • UIProcess/gtk/HardwareAccelerationManager.cpp:

(WebKit::HardwareAccelerationManager::HardwareAccelerationManager): Use
AcceleratedBackingStore::checkRequirements() to decide whether to disable AC mode.

6:37 AM Changeset in webkit [247562] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] InlineFormattingContext::LineLayout::placeInlineItems is getting too complex.
https://bugs.webkit.org/show_bug.cgi?id=199898
<rdar://problem/53235958>

Reviewed by Antti Koivisto.

It's time to restructure LineLayout::placeInlineItems to be able to expand it further.
Introduce the LineLayout class. This class is responsible to place the inline items on the current line.
(Rename InlineFormattingContext::lineLayout -> InlineFormattingContext::InlineLayout and
use Line::InitialConstraints in LineInput)

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::layout const):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthConstraints const):

  • layout/inlineformatting/InlineFormattingContext.h:

(WebCore::Layout::InlineFormattingContext::LineLayout::layoutState const): Deleted.

  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:

(WebCore::Layout::inlineItemWidth):
(WebCore::Layout::LineLayout::layoutState const):
(WebCore::Layout::LineLayout::UncommittedContent::runs):
(WebCore::Layout::LineLayout::UncommittedContent::isEmpty const):
(WebCore::Layout::LineLayout::UncommittedContent::size const):
(WebCore::Layout::LineLayout::UncommittedContent::width const):
(WebCore::Layout::LineLayout::UncommittedContent::add):
(WebCore::Layout::LineLayout::UncommittedContent::reset):
(WebCore::Layout::LineLayout::LineLayout):
(WebCore::Layout::LineLayout::commitPendingContent):
(WebCore::Layout::LineLayout::close):
(WebCore::Layout::LineLayout::layout):
(WebCore::Layout::LineInput::LineInput):
(WebCore::Layout::InlineFormattingContext::InlineLayout::InlineLayout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::alignRuns const):
(WebCore::Layout::UncommittedContent::runs): Deleted.
(WebCore::Layout::UncommittedContent::isEmpty const): Deleted.
(WebCore::Layout::UncommittedContent::size const): Deleted.
(WebCore::Layout::UncommittedContent::width const): Deleted.
(WebCore::Layout::UncommittedContent::add): Deleted.
(WebCore::Layout::UncommittedContent::reset): Deleted.
(WebCore::Layout::LineInput::HorizontalConstraint::HorizontalConstraint): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::LineLayout): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::layout const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::alignRuns const): Deleted.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::Line):

  • layout/inlineformatting/InlineLine.h:
2:34 AM Changeset in webkit [247561] by Konstantin Tokarev
  • 2 edits in trunk/Tools

Unreviewed, Add Olivier Blin as contributor

  • Scripts/webkitpy/common/config/contributors.json:
1:54 AM WebKitGTK/2.24.x edited by berto@igalia.com
(diff)
1:28 AM Changeset in webkit [247560] by Carlos Garcia Campos
  • 4 edits in trunk

[GTK] MOUSE_CURSOR_SCALE is not implemented
https://bugs.webkit.org/show_bug.cgi?id=109469

Reviewed by Darin Adler.

.:

Enable MOUSE_CURSOR_SCALE for the GTK port.

  • Source/cmake/OptionsGTK.cmake:

Source/WebCore:

Use gdk_cursor_new_from_surface() instead of gdk_cursor_new_from_pixbuf() to avoid the surface to pixbuf
conversion.

  • platform/gtk/CursorGtk.cpp:

(WebCore::createCustomCursor):

Note: See TracTimeline for information about the timeline view.