Timeline



Jun 22, 2018:

10:27 PM Changeset in webkit [233121] by keith_miller@apple.com
  • 4 edits
    1 add in trunk

unshift should zero unused property storage
https://bugs.webkit.org/show_bug.cgi?id=186960

Reviewed by Saam Barati.

JSTests:

  • stress/array-unshift-zero-property-storage.js: Added.

(run):
(test):

Source/JavaScriptCore:

Also, this patch adds the zeroed unused property storage assertion
to one more place it was missing.

  • runtime/JSArray.cpp:

(JSC::JSArray::unshiftCountSlowCase):

  • runtime/JSObjectInlines.h:

(JSC::JSObject::putDirectInternal):

9:18 PM Changeset in webkit [233120] by Darin Adler
  • 5 edits
    3 copies
    1 move
    1 add
    1 delete in trunk/Source/WTF

[Cocoa] reduce unnecessary use of .mm source files in WTF, spruce up some implementation details
https://bugs.webkit.org/show_bug.cgi?id=186924

Reviewed by Anders Carlsson.

  • WTF.xcodeproj/project.pbxproj: Update for file and directory renames, file type changes,

and deletions.

  • wtf/MemoryPressureHandler.cpp:

(WTF::MemoryPressureHandler::holdOff): Deleted empty placeholder; this one is not needed.

  • wtf/PlatformMac.cmake: Update for file and directory renames, file type changes,

and deletions.

  • wtf/cocoa/CPUTimeCocoa.cpp: Renamed from Source/WTF/wtf/cocoa/CPUTimeCocoa.mm.

Reworked math to make better use of the Seconds class.

  • wtf/text/WTFString.h: Added a new inline version of the constructor that takes an NSString.

This is identical to the one that takes a CFStringRef, so no need to keep both.

  • wtf/text/cocoa/StringImplCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringImplMac.mm.

Also removed an unneeded include.

  • wtf/text/cocoa/StringViewCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringViewObjC.mm.
  • wtf/text/cocoa/TextBreakIteratorInternalICUCocoa.cpp: Renamed from

Source/WTF/wtf/text/mac/TextBreakIteratorInternalICUMac.mm.

  • wtf/text/mac/StringMac.mm: Removed.
7:42 PM Changeset in webkit [233119] by youenn@apple.com
  • 5 edits
    2 adds in trunk

Disable WebSocket in WatchOS
https://bugs.webkit.org/show_bug.cgi?id=186931
<rdar://problem/39584458>

Reviewed by Wenson Hsieh.

Source/WebCore:

Add a runtime flag to enable/disable WebSocket.
By default, flag is on for all platforms except for WatchOS.

Test: fast/dom/Window/watchos/websocket/watchos/no-websocket-in-watchos.html

  • Modules/websockets/WebSocket.idl:
  • page/RuntimeEnabledFeatures.cpp:

(WebCore::RuntimeEnabledFeatures::RuntimeEnabledFeatures):

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setWebSocketEnabled):
(WebCore::RuntimeEnabledFeatures::webSocketEnabled const):

LayoutTests:

  • TestExpectations:
  • fast/dom/Window/watchos/no-websocket-in-watchos-expected.txt: Added.
  • fast/dom/Window/watchos/no-websocket-in-watchos.html: Added.
6:31 PM Changeset in webkit [233118] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Regression(r230211): Crash under WebInspectorClient::~WebInspectorClient()
https://bugs.webkit.org/show_bug.cgi?id=186950
<rdar://problem/40602069>

Reviewed by Darin Adler.

Re-introduce null-check that was accidentally dropped in r230211.

  • WebProcess/WebCoreSupport/WebInspectorClient.cpp:

(WebKit::WebInspectorClient::~WebInspectorClient):

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

SubresourceLoader::didFail() should only log message if state is Initialized
https://bugs.webkit.org/show_bug.cgi?id=185124

Patch by Woodrow Wang <woodrow_wang@apple.com> on 2018-06-22
Reviewed by Daniel Bates.

Functionality does not change. Moved console logging to be
after checking state of subresource loader. We only need to
log if the state is initialized. This is consistent with other
functions in the file. We can also remove a null check for the
frame pointer (m_frame). The superclass ResourceLoader constructor
takes an lvalue reference and initializes m_frame, ensuring
m_frame cannot be null. It is only set to null by
ResourceLoader::releaseResources(), which is only called after the
resource finishes loading or fails to load. Thus, in didFail(),
m_frame must be non-null when we're logging and up until the end of the function.

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::didFail):

6:21 PM Changeset in webkit [233116] by timothy@apple.com
  • 26 edits
    2 copies in trunk/Source

Corner of two scroll bars is white with dark mode enabled.
https://bugs.webkit.org/show_bug.cgi?id=186819
rdar://problem/40434350

Reviewed by Tim Horton.

Source/WebCore:

  • Configurations/WebCore.xcconfig:
  • WebCore.xcodeproj/project.pbxproj:
  • inspector/InspectorOverlay.cpp:

(WebCore::InspectorOverlay::paint): Added LocalDefaultSystemAppearance.

  • page/Page.h:
  • platform/ScrollView.cpp:

(WebCore::ScrollView::paintScrollCorner): Dropped ScrollView argument.

  • platform/ScrollbarTheme.h:

(WebCore::ScrollbarTheme::paintScrollCorner): Ditto.

  • platform/ScrollbarThemeComposite.cpp:

(WebCore::ScrollbarThemeComposite::paintScrollCorner): Deleted. Default is the same.

  • platform/ScrollbarThemeComposite.h:
  • platform/mac/LocalDefaultSystemAppearance.h:
  • platform/mac/LocalDefaultSystemAppearance.mm:

(WebCore::LocalDefaultSystemAppearance::LocalDefaultSystemAppearance): Added recursion early return.
(WebCore::LocalDefaultSystemAppearance::~LocalDefaultSystemAppearance): Ditto.

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

(WebCore::ScrollbarThemeMac::paintScrollCorner): Added.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::paintScrollCorner): Call ScrollbarTheme::paintScrollCorner.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::paintContents): Added LocalDefaultSystemAppearance.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::paintContents): Added LocalDefaultSystemAppearance.

  • rendering/RenderScrollbarTheme.cpp:

(WebCore::RenderScrollbarTheme::paintScrollCorner): Call ScrollbarTheme::paintScrollCorner.

  • rendering/RenderScrollbarTheme.h:
  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::draw): Added LocalDefaultSystemAppearance.

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/mac/CoreUISPI.h: Added.
  • pal/spi/mac/NSAppearanceSPI.h: Added.

Source/WebKit:

  • UIProcess/mac/WKPrintingView.mm:

(-[WKPrintingView drawRect:]): Added LocalDefaultSystemAppearance.

  • WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:

(WebKit::InjectedBundleRangeHandle::renderedImage): Ditto.

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::paintControlForLayerInContext): Ditto. Dropped ScrollView argument.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::drawRect): Added LocalDefaultSystemAppearance.

5:52 PM Changeset in webkit [233115] by timothy_horton@apple.com
  • 14 edits
    4 adds in trunk

Make it possible to add a border around loading or failed-to-load images
https://bugs.webkit.org/show_bug.cgi?id=186614
<rdar://problem/39050152>

Reviewed by Zalan Bujtas.

Source/WebCore:

Tests: http/tests/images/loading-image-border.html

http/tests/images/loading-image-no-border.html

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintIncompleteImageOutline):
(WebCore::RenderImage::paintReplaced):

  • rendering/RenderImage.h:

Factor the missing-image outline out, and - if desired - paint it in
cases where the image is still loading or otherwise pending, not just
when the image fails to load.

  • page/Settings.yaml:
  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setIncompleteImageBorderEnabled):

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:

Add and expose a setting to enable the feature.

Source/WebKit:

  • Shared/WebPreferences.yaml:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _setColorFilterEnabled:]):
(-[WKWebViewConfiguration _incompleteImageBorderEnabled]):
(-[WKWebViewConfiguration _setIncompleteImageBorderEnabled:]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

Plumb the setting to WebKit2.

LayoutTests:

  • http/tests/images/loading-image-border-expected.html: Added.
  • http/tests/images/loading-image-border.html: Added.
  • http/tests/images/loading-image-no-border-expected.html: Added.
  • http/tests/images/loading-image-no-border.html: Added.
  • platform/wk2/TestExpectations:

Add a test ensuring that the setting works correctly.
These and similar tests do not currently work in WebKitTestRunner, so they are skipped there.

5:45 PM Changeset in webkit [233114] by mark.lam@apple.com
  • 4 edits
    1 add in trunk

PropertyCondition::isValidValueForAttributes() should also consider deleted values.
https://bugs.webkit.org/show_bug.cgi?id=186943
<rdar://problem/41370337>

Reviewed by Saam Barati.

JSTests:

  • stress/regress-186943.js: Added.

Source/JavaScriptCore:

PropertyCondition::isValidValueForAttributes() should check if the passed in value
is a deleted one before it does a jsDynamicCast on it.

  • bytecode/PropertyCondition.cpp:

(JSC::PropertyCondition::isValidValueForAttributes):

  • runtime/JSCJSValueInlines.h:
  • removed an unnecessary #if.
5:34 PM Changeset in webkit [233113] by beidson@apple.com
  • 19 edits in trunk

WKURLSchemeHandler doesn't handle sync XHR.
<rdar://problem/40955884> and https://bugs.webkit.org/show_bug.cgi?id=186902

Reviewed by Chris Dumez.

Source/WebCore:

  • English.lproj/Localizable.strings:

Source/WebKit:

This patch allows WebProcesses to block on sync loads to a custom scheme,
and teaches WebURLSchemeTasks how to buffer up data and the response if
operating synchronously.

  • Shared/WebErrors.cpp:

(WebKit::failedCustomProtocolSyncLoad):

  • Shared/WebErrors.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::startURLSchemeTask):
(WebKit::WebPageProxy::loadSynchronousURLSchemeTask):

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

(WebKit::WebURLSchemeHandler::startTask):

  • UIProcess/WebURLSchemeHandler.h:
  • UIProcess/WebURLSchemeTask.cpp:

(WebKit::WebURLSchemeTask::create):
(WebKit::WebURLSchemeTask::WebURLSchemeTask):
(WebKit::WebURLSchemeTask::didPerformRedirection):
(WebKit::WebURLSchemeTask::didReceiveResponse):
(WebKit::WebURLSchemeTask::didReceiveData):
(WebKit::WebURLSchemeTask::didComplete):
(WebKit::WebURLSchemeTask::pageDestroyed):
(WebKit::WebURLSchemeTask::stop):

  • UIProcess/WebURLSchemeTask.h:

(WebKit::WebURLSchemeTask::isSync const):

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::tryLoadingSynchronouslyUsingURLSchemeHandler):
(WebKit::WebLoaderStrategy::loadResourceSynchronously):

  • WebProcess/Network/WebLoaderStrategy.h:
  • WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:

(WebKit::WebURLSchemeHandlerProxy::loadSynchronously):

  • WebProcess/WebPage/WebURLSchemeHandlerProxy.h:

Tools:

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

(-[SyncScheme webView:startURLSchemeTask:]):
(-[SyncScheme webView:stopURLSchemeTask:]):
(-[SyncMessageHandler userContentController:didReceiveScriptMessage:]):
(catch):

5:15 PM Changeset in webkit [233112] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[Fullscreen] Restore ASSERT_NOT_REACHED() checks in exit fullscreen handler after r231924
https://bugs.webkit.org/show_bug.cgi?id=186945
<rdar://problem/37277469>

Reviewed by Simon Fraser.

  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(VideoFullscreenInterfaceAVKit::exitFullscreen):
(VideoFullscreenInterfaceAVKit::exitFullscreenHandler):
(VideoFullscreenInterfaceAVKit::cleanupFullscreen):

5:09 PM Changeset in webkit [233111] by Chris Dumez
  • 5 edits in trunk/Source/WebKit

Implement IPC throttling to keep the main thread responsive when a process misbehaves
https://bugs.webkit.org/show_bug.cgi?id=186607
<rdar://problem/41073205>

Reviewed by Geoff Garen and Brady Eidson.

Implement IPC throttling to keep the main thread responsive when a process misbehaves.
Instead of doing one main runloop dispatch per incoming message, we now do a single
runloop dispatch and process incoming messages in batch. We put a limit on the number
of messages to be processed in a batch (600). If the queue is larger that this limit,
we'll schedule a 0-timer to process remaining messages, giving the main runloop a chance
to process other events. Additionally, if an IPC connection keeps hitting this maximum
batch size limit, we implement back off and we'll further decrease the number of messages
we process in each batch (going as low as 60). This keeps Safari responsive enough to
allow the user to close the bad tab (even on older devices such as iPhone 5s).

Finally, if the incoming message queue becomes too large (50000), we go one step further
and kill the IPC connection in order to maintain performance / battery life.

Every time we apply throttling or terminate a connection due to throttling, we do a
RELEASE_LOG_ERROR() with useful information in order to help diagnose potential issues
in the future.

For now, incoming IPC messages throttling is only enabled on the UIProcess' connections
to the WebProcesses.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::Connection):
(IPC::Connection::enqueueIncomingMessage):
(IPC::Connection::MessagesThrottler::MessagesThrottler):
(IPC::Connection::MessagesThrottler::scheduleMessagesDispatch):
(IPC::Connection::MessagesThrottler::numberOfMessagesToProcess):
(IPC::Connection::dispatchIncomingMessages):

  • Platform/IPC/Connection.h:
  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::Connection::kill):

5:03 PM Changeset in webkit [233110] by keith_miller@apple.com
  • 3 edits
    1 add in trunk

performProxyCall should toThis the value passed to its handler
https://bugs.webkit.org/show_bug.cgi?id=186951

Reviewed by Mark Lam.

JSTests:

  • stress/proxy-call-apply-handler-to-this.js: Added.

(applyHandler):
(let.f.new.Proxy):
(withScope):
(lexicalScope):
(strictEvalScope):
(BigInt):

Source/JavaScriptCore:

  • runtime/ProxyObject.cpp:

(JSC::performProxyCall):

4:42 PM ASanWebKit edited by mmaxfield@apple.com
Remove pre-El-Cap instructions (diff)
4:32 PM Changeset in webkit [233109] by dbates@webkit.org
  • 2 edits in trunk/Websites/bugs.webkit.org

EWS for security bugs
https://bugs.webkit.org/show_bug.cgi?id=186291
<rdar://problem/40829658>

Rubber-stamped by Lucas Forschler.

Substitute "review" for "r" as the name of the Bugzilla flag to look at to determine
if we should CC the feeder EWS on the associated bug.

  • extensions/EWS/Extension.pm:

(isReviewFlag):

4:22 PM Changeset in webkit [233108] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r231850): Cookie file cannot be read or written by network process
https://bugs.webkit.org/show_bug.cgi?id=186806
<rdar://problem/41113791>

Unreviewed. Fix failure after r233084 by adding missing initialization.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

4:05 PM Changeset in webkit [233107] by dbates@webkit.org
  • 2 edits in trunk/Tools

Security EWS: bots fails with exception 'NoneType' object has no attribute 'is_closed'
https://bugs.webkit.org/show_bug.cgi?id=186923

Reviewed by Lucas Forschler.

Attachments downloaded from the status server (http://webkit-queues.webkit.org) do not
have an associated Bug object (i.e. Attachment.bug() is None) and reflect the state they
were in, including flags set, at the time they were uploaded to the status server. We
will add support for fetching up-to-date status info about the attachment and its bug
in <https://bugs.webkit.org/show_bug.cgi?id=186817>. For now, we only check if the
bug associated with the patch we are processing is closed if the attachment has a
non-None Bug object.

  • Scripts/webkitpy/tool/bot/earlywarningsystemtask.py:

(EarlyWarningSystemTask.validate):

4:05 PM Changeset in webkit [233106] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix on Windows.

  • testing/Internals.h:
3:48 PM Changeset in webkit [233105] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebKit

[Fullscreen] Home indicator should show and hide with status bar
https://bugs.webkit.org/show_bug.cgi?id=186942
<rdar://problem/41302190>

Reviewed by Tim Horton.

  • UIProcess/ios/fullscreen/WKFullScreenViewController.h:
  • UIProcess/ios/fullscreen/WKFullScreenViewController.mm:

(-[WKFullScreenViewController showUI]):
(-[WKFullScreenViewController hideUI]):
(-[WKFullScreenViewController setPrefersHomeIndicatorAutoHidden:]):

3:24 PM Changeset in webkit [233104] by jer.noble@apple.com
  • 4 edits in trunk/Source/WebKit

[Fullscreen] Add a pinch-to-exit gesture
https://bugs.webkit.org/show_bug.cgi?id=186821

Reviewed by Tim Horton.

Add a pinch gesture recognizer that overrides the pan gesture recognizer when active. Hide the
WKFullscreenViewController's controls while a dismiss gesture is active.

  • UIProcess/ios/fullscreen/WKFullScreenViewController.h:
  • UIProcess/ios/fullscreen/WKFullScreenViewController.mm:

(-[WKFullScreenViewController setAnimating:]):
(-[WKFullScreenViewController prefersStatusBarHidden]):
(-[WKFullScreenViewController gestureRecognizer:shouldReceiveTouch:]):
(-[WKFullScreenViewController _touchDetected:]):

  • UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:

(-[WKFullscreenAnimationController context]):
(-[WKFullscreenAnimationController updateWithProgress:scale:translation:anchor:]):
(-[WKFullScreenInteractiveTransition animator]):
(-[WKFullScreenInteractiveTransition updateInteractiveTransition:withScale:andTranslation:]):
(-[WKFullScreenWindowController enterFullScreen]):
(-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
(-[WKFullScreenWindowController interactionControllerForDismissal:]):
(-[WKFullScreenWindowController _startToDismissFullscreenChanged:]):
(-[WKFullScreenWindowController _dismissFullscreenViewController]):
(-[WKFullScreenWindowController _interactiveDismissChanged:]):
(-[WKFullScreenWindowController _interactivePinchDismissChanged:]):

3:24 PM Changeset in webkit [233103] by Ross Kirsling
  • 2 edits
    2 adds in trunk/LayoutTests

[WinCairo] Unreviewed test gardening.

  • platform/wincairo/TestExpectations:
  • platform/wincairo/css3/selectors3/html/css3-modsel-175a-expected.png: Added.
  • platform/wincairo/editing/style/apply-style-iframe-crash-expected.txt: Added.
3:13 PM Changeset in webkit [233102] by Ross Kirsling
  • 4 edits in trunk/Tools

[Win] ImageDiff should use DLLLauncher
https://bugs.webkit.org/show_bug.cgi?id=186927

ImageDiff should use DLLLauncher to find DLLs under WEBKIT_LIBRARIES, in the same way as DRT & TestWebKitAPI.

Reviewed by Per Arne Vollan.

  • ImageDiff/CMakeLists.txt:
  • ImageDiff/ImageDiff.cpp:

(dllLauncherEntryPoint):

  • ImageDiff/PlatformWin.cmake:
2:53 PM Changeset in webkit [233101] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.22.1

Tag Safari-606.1.22.1.

2:36 PM Changeset in webkit [233100] by youenn@apple.com
  • 5 edits
    2 adds in trunk

Incoming G722 doesn't work
https://bugs.webkit.org/show_bug.cgi?id=186307
<rdar://problem/40809745>

Reviewed by Eric Carlson.

Source/WebCore:

WebRTC backends usually does the following:

  • Initially call RealtimeIncomingAudioSource with 16KHz data
  • Switch to 48KHz when actual data is decoded.

We added a check that was discarding any 16KHz data, but in case of G722, the data remains as 16KHz and is then never read.
The solution is to remove the check that discards 16KHz information.
We then need to fix a bug in AudioTrackPrivateMediaStreamCocoa that was preventing proper handling of change of audio data configuration.

Test: webrtc/audio-peer-connection-g722.html

  • platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:

(WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable):

  • platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp:

(WebCore::RealtimeIncomingAudioSourceCocoa::OnData):

LayoutTests:

  • webrtc/audio-peer-connection-g722-expected.txt: Added.
  • webrtc/audio-peer-connection-g722.html: Added.
  • webrtc/routines.js:
2:20 PM Changeset in webkit [233099] by david_fenton@apple.com
  • 2 edits in trunk/LayoutTests

LayoutTests imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.html and imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.html are flaky.
https://bugs.webkit.org/show_bug.cgi?id=186940

Unreviewed test gardening.

2:02 PM Changeset in webkit [233098] by sbarati@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

ensureWritableX should only convert away from CoW when it will succeed
https://bugs.webkit.org/show_bug.cgi?id=186898

Reviewed by Keith Miller.

Otherwise, when we OSR exit, we'll end up profiling the array after
it has been converted away from CoW. It's better for the ArrayProfile
to see the array as it's still in CoW mode.

This patch also renames ensureWritableX to tryMakeWritableX since these
were never really "ensure" operations -- they may fail and return null.

  • dfg/DFGOperations.cpp:
  • runtime/JSObject.cpp:

(JSC::JSObject::tryMakeWritableInt32Slow):
(JSC::JSObject::tryMakeWritableDoubleSlow):
(JSC::JSObject::tryMakeWritableContiguousSlow):
(JSC::JSObject::ensureWritableInt32Slow): Deleted.
(JSC::JSObject::ensureWritableDoubleSlow): Deleted.
(JSC::JSObject::ensureWritableContiguousSlow): Deleted.

  • runtime/JSObject.h:

(JSC::JSObject::tryMakeWritableInt32):
(JSC::JSObject::tryMakeWritableDouble):
(JSC::JSObject::tryMakeWritableContiguous):
(JSC::JSObject::ensureWritableInt32): Deleted.
(JSC::JSObject::ensureWritableDouble): Deleted.
(JSC::JSObject::ensureWritableContiguous): Deleted.

1:50 PM Changeset in webkit [233097] by Basuke Suzuki
  • 3 edits in trunk/Tools

[style] Fix --git-index option for check-webkit-style command
https://bugs.webkit.org/show_bug.cgi?id=186810

When --git-index is specified, it should be compared with HEAD, not the origin/master.

Reviewed by Daniel Bates.

  • Scripts/webkitpy/common/checkout/scm/git.py:

(Git.create_patch):

  • Scripts/webkitpy/common/checkout/scm/scm_unittest.py:

(test_create_patch_with_git_index): Added.

1:32 PM Changeset in webkit [233096] by BJ Burg
  • 2 edits in trunk/Source/WebKit

[Cocoa] REGRESSION(W3C): actions for key equivalents are not respected
https://bugs.webkit.org/show_bug.cgi?id=186936

Reviewed by Timothy Hatcher.

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::isSimulatingUserInteraction const):
This erroneously reported false unless there was both a mouse and key interaction
being dispatched, which is not possible in the current serial event simulation model.
As a result, Safari could not tell whether the action came from a simulated event
or the user, and thus rejected all key equivalents like Cmd-A,V,C,X.

1:24 PM Changeset in webkit [233095] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit

[Fullscreen] Exit fullscreen when opening a new tab
https://bugs.webkit.org/show_bug.cgi?id=186826
<rdar://problem/40853211>

Reviewed by Brent Fulgham.

Make the fullscreen placeholder view a custom UIView, and exit fullscreen when the
placeholder is removed from its superview.

  • UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:

(-[WKFullScreenPlaceholderView willMoveToSuperview:]):
(-[WKFullScreenWindowController enterFullScreen]):
(-[WKFullScreenWindowController _completedExitFullScreen]):
(-[WKFullScreenWindowController placeholderWillMoveToSuperview:]):
(-[WKFullScreenWindowController _exitFullscreenImmediately]):

1:21 PM Changeset in webkit [233094] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Fix the build after r233089

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _setColorFilterEnabled:]):
(-[WKPreferences _colorFilterEnabled]):

1:16 PM Changeset in webkit [233093] by Chris Dumez
  • 2 edits in trunk/LayoutTests

performance-api/performance-observer-no-document-leak.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=186938

Unreviewed, temporarily skip it while I investigate.

1:16 PM Changeset in webkit [233092] by Chris Dumez
  • 5 edits in trunk/Source/WebKit

Crash under WebResourceLoadStatisticsStore::mergeStatistics(WTF::Vector<WebCore::ResourceLoadStatistics, 0ul, WTF::CrashOnOverflow, 16ul>&&)
https://bugs.webkit.org/show_bug.cgi?id=186905
<rdar://problem/41266775>

Reviewed by Brent Fulgham.

I believe the crash was caused by the WebResourceLoadStatisticsStore object being dead
when mergeStatistics() is called. In particular, the crash was happening when the
ResourceLoadStatisticsPersistentStorage's FileMonitor would detect a file change and
we would re-sync statistics from the disk. The FileMonitor's lambda function was
capturing |this| without ref'ing it, and the FileMonitor monitors the disk and
calls the lambda on the background queue, while it gets destroyed on the main thread.

To make lifetime management less complex, the following changes were made:

  • The ResourceLoadStatisticsPersistentStorage object is now always constructed / used and destroyed on the background queue. We no longer have to worry about being on the right thread in a given method.
  • Now that ResourceLoadStatisticsPersistentStorage is always used from the background queue and no longer needs to be thread-safe, drop its ref() / deref() methods and use weak pointers instead to make sure the ResourceLoadStatisticsPersistentStorage is still alive when a lamdba gets called on the background queue.
  • For write scheduling use WorkQueue::dispatchAfter() and a WeakPtr instead of a RunLoop::Timer. This is more convenient to use as the RunLoop::Timer has to be used on the main thread.
  • UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:

(WebKit::ResourceLoadStatisticsPersistentStorage::ResourceLoadStatisticsPersistentStorage):
(WebKit::ResourceLoadStatisticsPersistentStorage::~ResourceLoadStatisticsPersistentStorage):
(WebKit::ResourceLoadStatisticsPersistentStorage::startMonitoringDisk):
(WebKit::ResourceLoadStatisticsPersistentStorage::monitorDirectoryForNewStatistics):
(WebKit::ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore):

  • UIProcess/ResourceLoadStatisticsPersistentStorage.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore):
(WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
(WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
(WebKit::WebResourceLoadStatisticsStore::applicationWillTerminate):
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):

  • UIProcess/WebResourceLoadStatisticsStore.h:
1:06 PM Changeset in webkit [233091] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebKit

CRASH in WebCore::VideoFullscreenInterfaceMac::~VideoFullscreenInterfaceMac()
https://bugs.webkit.org/show_bug.cgi?id=186892

Reviewed by Eric Carlson.

Protect against m_contentMap being mutated while its contents are being invalidated
by moving the map into a local variable and iterating over it instead.

  • UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:

(WebKit::PlaybackSessionManagerProxy::invalidate):

  • UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:

(WebKit::VideoFullscreenManagerProxy::invalidate):

1:01 PM Changeset in webkit [233090] by Ryan Haddad
  • 2 edits in trunk/Tools

Unreviewed, fix syntax error introduced by r233088.

  • BuildSlaveSupport/built-product-archive:

(extractBuiltProduct):

12:56 PM Changeset in webkit [233089] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Expose colorFilterEnabled SPI in WKPreferencesPrivate.h
https://bugs.webkit.org/show_bug.cgi?id=186935
<rdar://problem/41109387>

Patch by Luming Yin <luming_yin@apple.com> on 2018-06-22
Reviewed by Tim Horton.

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _setColorFilterEnabled:]):
(-[WKPreferences _colorFilterEnabled]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
12:08 PM Changeset in webkit [233088] by Ross Kirsling
  • 4 edits
    1 move in trunk/Tools

[WinCairo][Buildbot] Test bots should use same WinCairoRequirements version as the triggering build
https://bugs.webkit.org/show_bug.cgi?id=186857

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/built-product-archive:

(archiveBuiltProduct):
(extractBuiltProduct):
Save and restore the WinCairoRequirements version using the build archive.

  • Scripts/download-github-release.py: Renamed from Tools/Scripts/download-latest-github-release.py.

Generalize download script -- get the latest version by default, but allow an arbitrary version to be specified.

  • Scripts/update-vswhere.py:

Consume renamed script.

  • Scripts/update-webkit-wincairo-libs.py:

Consume renamed script and specify a version to download when a config file is present.

11:32 AM Changeset in webkit [233087] by timothy@apple.com
  • 8 edits in trunk/Source

Recalc styles every time defaultAppearance changes.
https://bugs.webkit.org/show_bug.cgi?id=186866
rdar://problem/41309805

Reviewed by Tim Horton.

Source/WebCore:

  • page/Page.cpp:

(WebCore::Page::setUseSystemAppearance): Added. Recalc styles and update system colors.
(WebCore::Page::setDefaultAppearance): Added. Ditto.

  • page/Page.h:

(WebCore::Page::setUseSystemAppearance): Deleted impl.
(WebCore::Page::setDefaultAppearance): Deleted impl.

Source/WebKit:

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setDefaultAppearance):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setDefaultAppearance):

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _updateDefaultAppearance]):
(-[WebView _setUseSystemAppearance:]):
(-[WebView _useSystemAppearance]):

11:29 AM Changeset in webkit [233086] by Kocsen Chung
  • 7 edits in branches/safari-606.1.22-branch/Source

Versioning.

11:26 AM Changeset in webkit [233085] by keith_miller@apple.com
  • 22 edits in trunk/Source/JavaScriptCore

We should call visitChildren on Base not the exact typename
https://bugs.webkit.org/show_bug.cgi?id=186928

Reviewed by Mark Lam.

A lot of places were not properly calling visitChildren on their
superclass. For most of them it didn't matter because they had
immortal structures. If code changed in the future this might
break things however.

Also, block off more of the MethodTable for GetterSetter objects.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::visitChildren):

  • bytecode/ExecutableToCodeBlockEdge.cpp:

(JSC::ExecutableToCodeBlockEdge::visitChildren):

  • debugger/DebuggerScope.cpp:

(JSC::DebuggerScope::visitChildren):

  • runtime/EvalExecutable.cpp:

(JSC::EvalExecutable::visitChildren):

  • runtime/FunctionExecutable.cpp:

(JSC::FunctionExecutable::visitChildren):

  • runtime/FunctionRareData.cpp:

(JSC::FunctionRareData::visitChildren):

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::visitChildren):

  • runtime/GetterSetter.cpp:

(JSC::GetterSetter::visitChildren):

  • runtime/GetterSetter.h:
  • runtime/InferredType.cpp:

(JSC::InferredType::visitChildren):

  • runtime/InferredTypeTable.cpp:

(JSC::InferredTypeTable::visitChildren):

  • runtime/InferredValue.cpp:

(JSC::InferredValue::visitChildren):

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::visitChildren):

  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::visitChildren):

  • runtime/ModuleProgramExecutable.cpp:

(JSC::ModuleProgramExecutable::visitChildren):

  • runtime/ProgramExecutable.cpp:

(JSC::ProgramExecutable::visitChildren):

  • runtime/ScopedArguments.cpp:

(JSC::ScopedArguments::visitChildren):

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

(JSC::Structure::visitChildren):

  • runtime/StructureRareData.cpp:

(JSC::StructureRareData::visitChildren):

  • runtime/SymbolTable.cpp:

(JSC::SymbolTable::visitChildren):

10:06 AM Changeset in webkit [233084] by sihui_liu@apple.com
  • 7 edits in trunk/Source/WebKit

REGRESSION (r231850): Cookie file cannot be read or written by network process
https://bugs.webkit.org/show_bug.cgi?id=186806
<rdar://problem/41113791>

Reviewed by Geoffrey Garen.

Add defaultSessionPendingCookies to NetworkProcessCreationParameters, so pending cookies of default session
can be added right after default session is set. This improves the fix r231850 as it does not send additional
message and avoids the regression.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/mac/RemoteNetworkingContext.mm:

(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::NetworkProcessProxy):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

9:54 AM Changeset in webkit [233083] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[iOS Debug] Multiple resourceLoadStatistics redirect tests are flaky timeouts
https://bugs.webkit.org/show_bug.cgi?id=183216
<rdar://problem/37992317>

Reviewed by Chris Dumez.

Improve consistency of test results by make sure that completion handlers written to run
on the main thread are only called on the main thread. Add additional assertions to help
catch any cases where this invariant is not being honored.

  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::hasStorageAccess): Use Completion handler and assert
we are on the right thread.
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): Ditto.
(WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): Ditto.
(WebKit::WebResourceLoadStatisticsStore::logUserInteraction): Ditto.
(WebKit::WebResourceLoadStatisticsStore::logNonRecentUserInteraction): Ditto.
(WebKit::WebResourceLoadStatisticsStore::clearUserInteraction): Ditto.
(WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction): Ditto.
(WebKit::WebResourceLoadStatisticsStore::setLastSeen): Ditto.
(WebKit::WebResourceLoadStatisticsStore::setPrevalentResource): Ditto.
(WebKit::WebResourceLoadStatisticsStore::isPrevalentResource): Ditto.
(WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource): Ditto.
(WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubFrameUnder): Ditto.
(WebKit::WebResourceLoadStatisticsStore::isRegisteredAsRedirectingTo): Ditto.
(WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource): Ditto.
(WebKit::WebResourceLoadStatisticsStore::setGrandfathered): Ditto.
(WebKit::WebResourceLoadStatisticsStore::isGrandfathered): Ditto.
(WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameOrigin): Ditto.
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameOrigin): Ditto.
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo): Ditto.
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectFrom): Ditto.
(WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectTo): Ditto.
(WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectFrom): Ditto.
(WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdate):
(WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdateForDomains):
(WebKit::WebResourceLoadStatisticsStore::scheduleClearPartitioningStateForDomains):
(WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningStateReset):
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent): Update to perform callbacks
on the main thread (as intended). This function was doing them on a work queue.
(WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning): Ditto.
(WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains): Ditto.
(WebKit::WebResourceLoadStatisticsStore::clearPartitioningStateForDomains): Ditto.

  • UIProcess/WebResourceLoadStatisticsStore.h:
9:54 AM Changeset in webkit [233082] by bshafiei@apple.com
  • 1 copy in branches/safari-606.1.22-branch

New branch.

9:38 AM Changeset in webkit [233081] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

[GStreamer] Avoid sending SELECT_STREAM events when nothing changed
https://bugs.webkit.org/show_bug.cgi?id=186678

Patch by Thibault Saunier <tsaunier@igalia.com> on 2018-06-22
Reviewed by Philippe Normand.

This avoid extra work in decodebin3 and should work around a crash
in decodebin3 when we send spurious SELECT_STREAM in the mediastream
layout tests.

GStreamer was also missing safe guards in the GstStream APIs which have been
added in gstreamer core in 8833ca942ea21c58c0f63822f0e2b61695b39447
"stream: Add some missing API safe guards".

Should fix following flakes:

  • fast/mediastream/MediaStream-video-element-track-stop.html
  • fast/mediastream/change-tracks-media-stream-being-played.html
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::enableTrack):

8:45 AM WebKitGTK/2.20.x edited by Michael Catanzaro
(diff)
8:43 AM Changeset in webkit [233080] by Michael Catanzaro
  • 7 edits in trunk

REGRESSION(r230950): [GTK] WebKit::CoordinatedBackingStoreTile::setBackBuffer(): WebKitWebProcess killed by SIGSEGV (ASSERTION FAILED: it != m_tiles.end())
https://bugs.webkit.org/show_bug.cgi?id=186206

Source/WebCore:

Unreviewed manual rollout of r230950

  • platform/graphics/texmap/TextureMapperLayer.h:
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::shouldHaveBackingStore const):

Source/WebKit:

Unreviewed manual rollout of r230950

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::layerShouldHaveBackingStore):

LayoutTests:

Unreviewed, remove crash expectations for crashes introduced by r230950.

  • platform/gtk/TestExpectations:
8:03 AM Changeset in webkit [233079] by Darin Adler
  • 21 edits in trunk

[Cocoa] Use the isDirectory: variants of NSURL methods more to eliminate unnecessary file system activity
https://bugs.webkit.org/show_bug.cgi?id=186875

Reviewed by Anders Carlsson.

Source/JavaScriptCore:

  • API/tests/testapi.mm:

(testObjectiveCAPIMain): Use isDirectory:NO when creating a URL for a JavaScript file.

Source/WebCore:

  • platform/cocoa/ThemeCocoa.mm:

(WebCore::passKitBundle): Use isDirectory:YES when creating a URL pointing to a framework,
since frameworks are directories.

Source/WebKit:

  • UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:

(API::WebsiteDataStore::tempDirectoryFileSystemRepresentation): Use isDirectory:YES to create a URL
to the temporary directory.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::namesOfPromisedFilesDroppedAtDestination): Use isDirectory:NO to create a URL
pointing to the write location.

  • UIProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm:

(WebKit::LocalStorageDatabaseTracker::platformMaybeExcludeFromBackup const): Use isDirectory:YES to
create a URL for the local storage directory.

  • UIProcess/ios/ResourceLoadStatisticsPersistentStorageIOS.mm:

(WebKit::ResourceLoadStatisticsPersistentStorage::excludeFromBackup const): Use isDirectory:NO to
create a URL for the storage directory.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _prepareToDragPromisedBlob:]): Use isDirectory:NO to create a URL for the temporary
file location.

  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(-[WKFileUploadPanel _uploadItemForImageData:imageName:successBlock:failureBlock:]): Use isDirectory:NO
to create a URL for the image file to upload.

  • UIProcess/mac/WebInspectorProxyMac.mm:

(WebKit::WebInspectorProxy::inspectorPageURL): Use isDirectory:NO to create a URL for the HTML file.
(WebKit::WebInspectorProxy::inspectorTestPageURL): Ditto.
(WebKit::WebInspectorProxy::inspectorBaseURL): Ditto.

  • WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:

(WebKit::WebChromeClient::createIconForFiles): Use isDirectory:NO to create a URL for the image file.

  • WebProcess/WebPage/mac/WebInspectorUIMac.mm:

(WebKit::webInspectorUILocalizedStringsURL): Use isDirectory:NO to create a URL for the localized
strings file.

Source/WebKitLegacy/mac:

  • WebView/WebHTMLView.mm:

(-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]): Use isDirectory:NO for the URL of the location
to write te file to.

  • WebView/WebPreferences.mm:

(-[WebPreferences userStyleSheetLocation]): Use isDirectory:NO to create a URL for the user style sheet.

  • WebView/WebView.mm:

(-[WebView setMainFrameURL:]): Use isDirectory:NO to create a URL for a local webpage to load.

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:

(activateTestingFonts): Use isDirectory:NO to create a URL for a font file.

  • WebKitTestRunner/InjectedBundle/cocoa/ActivateFontsCocoa.mm:

(WTR::activateFonts): Ditto.
(WTR::installFakeHelvetica): Ditto.

7:02 AM Changeset in webkit [233078] by magomez@igalia.com
  • 9 edits in trunk/Source/WebCore

[WPE][ThreadedRendering] WPE crashes rendering SVG content when using ThreadedRendering
https://bugs.webkit.org/show_bug.cgi?id=186914

Reviewed by Carlos Garcia Campos.

Add GraphicsContextImpl::clipToImageBuffer() to the interface and the implementors. Forward
the call to GraphicsContext::clipToImageBuffer() to the implementation if possible in the
cairo case.

Covered by existent tests.

  • platform/graphics/GraphicsContextImpl.h:
  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContext::clipToImageBuffer):

  • platform/graphics/cairo/GraphicsContextImplCairo.cpp:

(WebCore::GraphicsContextImplCairo::clipToImageBuffer):

  • platform/graphics/cairo/GraphicsContextImplCairo.h:
  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::clipToImageBuffer):

  • platform/graphics/displaylists/DisplayListRecorder.h:
  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:

(Nicosia::CairoOperationRecorder::clipToImageBuffer):

  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h:
6:23 AM Changeset in webkit [233077] by Carlos Garcia Campos
  • 7 edits in trunk

[GTK] WebDriver: use a dictionary for session capabilities in StartAutomationSession message
https://bugs.webkit.org/show_bug.cgi?id=186915

Reviewed by Žan Doberšek.

Source/JavaScriptCore:

Update StartAutomationSession message handling to receive a dictionary of session capabilities.

  • inspector/remote/glib/RemoteInspectorServer.cpp:

(Inspector::processSessionCapabilities): Helper method to process the session capabilities.

Source/WebDriver:

Instead of growing the message signature every time we add a new capability, use a dictionary a{sv} and simply add
new entries when new capabilities are added. This way we won't need to change the message signature anymore.

  • SessionHost.h:
  • glib/SessionHostGlib.cpp:

(WebDriver::SessionHost::buildSessionCapabilities const): Helper to build the session capabilities dictionary.
(WebDriver::SessionHost::startAutomationSession):

Tools:

Update /webkit/WebKitAutomationSession/request-session to use the new StartAutomationSession message signature.

  • TestWebKitAPI/Tests/WebKitGLib/TestAutomationSession.cpp:
6:22 AM Changeset in webkit [233076] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[CMake] Generated sources depending on SelectorPseudoClassAndCompatibilityElementMap.in are not regenerated
https://bugs.webkit.org/show_bug.cgi?id=186911

Reviewed by Michael Catanzaro.

This is causing test fullscreen/fullscreen-env.html to fail since it was added in r233066 in the bots that
didn't start a clean build. The problem is that the CMake command to generate
SelectorPseudoClassAndCompatibilityElementMap.cpp doesn't depend on
SelectorPseudoClassAndCompatibilityElementMap.in.

  • CMakeLists.txt:
2:49 AM Changeset in webkit [233075] by magomez@igalia.com
  • 7 edits in trunk/Source/WebCore

[WPE][ThreadedRendering] WPE crashes rendering some pieces of text when using ThreadedRendering
https://bugs.webkit.org/show_bug.cgi?id=186886

Reviewed by Žan Doberšek.

Modify DisplayList DrawGlyphs element to use a GraphicsContext for replaying. To do so, modify
GraphicsContext::drawGlyphs() API so it doesn't require a FontCascade, and update all the calls
to it.

Covered by existent tests.

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::drawGlyphBuffer const):

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::drawGlyphs):

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

(WebCore::DisplayList::DrawGlyphs::apply const):

  • rendering/mathml/MathOperator.cpp:

(WebCore::MathOperator::paintGlyph):
(WebCore::MathOperator::paint):

  • rendering/mathml/RenderMathMLToken.cpp:

(WebCore::RenderMathMLToken::paint):

2:32 AM Changeset in webkit [233074] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

Unreviewed. Fix GLib test /webkit/WebKitSecurityManager/file-xhr after r231000

We are now receiving two console messages instead of one. Simply update the test to check both messages.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:

(consoleMessageReceivedCallback):
(testWebContextSecurityFileXHR):

1:52 AM Changeset in webkit [233073] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

Unreviewed GLib gardening. Update expectations of TestSSL.

/webkit/WebKitWebView/tls-errors-policy and /webkit/WebKitWebView/load-failed-with-tls-errors are failing only
in the bots.

  • TestWebKitAPI/glib/TestExpectations.json:
12:05 AM Changeset in webkit [233072] by Michael Catanzaro
  • 3 edits in trunk/Source/ThirdParty

[WPE][GTK] Update xdgmime
https://bugs.webkit.org/show_bug.cgi?id=186907

Reviewed by Carlos Garcia Campos.

Only one change, fixes https://bugs.freedesktop.org/show_bug.cgi?id=97372.

  • xdgmime/README.webkit:
  • xdgmime/src/xdgmimeint.c:

(_xdg_binary_or_text_fallback):

Jun 21, 2018:

11:41 PM Changeset in webkit [233071] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WTF

[GLIB] improve get_type() fast path in WEBKIT_DEFINE_TYPE
https://bugs.webkit.org/show_bug.cgi?id=186885

Reviewed by Anders Carlsson.

This is a backport of glib commit
https://gitlab.gnome.org/GNOME/glib/commit/e924f777369710221c3e0a9d7bf40392a27d1fa4

"The -fstack-protector-strong used in many distributions by default has a
rather drastic slowdown of the fast path in generated _get_type()
functions using G_DEFINE_* macros. The amount can vary by architecture,
GCC version, and compiler flags.

To work around this, and ensure a higher probability that our fast-path
will match what we had previously, we need to break out the slow-path
(registering the type) into a secondary function that is not a candidate
for inlining.

This ensures that the common case (type registered, return the GType id)
is the hot path and handled in the prologue of the generated assembly even
when -fstack-protector-strong is enabled."

  • wtf/glib/WTFGType.h:
8:01 PM Changeset in webkit [233070] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

WebKit (JavaScriptCore) compilation error with Clang ≥ 6.
https://bugs.webkit.org/show_bug.cgi?id=185947
<rdar://problem/40131933>

Reviewed by Saam Barati.

Newer Clang versions (due to C++17 support) is not happy with how I implemented
conversions between CodeLocation types. We'll fix this by adding a conversion
operator for converting between CodeLocation types.

  • assembler/CodeLocation.h:

(JSC::CodeLocationCommon::operator T):

5:21 PM Changeset in webkit [233069] by david_fenton@apple.com
  • 2 edits in trunk/LayoutTests

Skip imported/w3c/web-platform-tests/css/css-display/display-contents-first-letter-002.html.
https://bugs.webkit.org/show_bug.cgi?id=186901

Unreviewed test gardening.

4:30 PM Changeset in webkit [233068] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Unreviewed, rolling out r232995.

Seems to have caused flakiness

Reverted changeset:

"Implement IPC throttling to keep the main thread responsive
when a process misbehaves"
https://bugs.webkit.org/show_bug.cgi?id=186607
https://trac.webkit.org/changeset/232995

4:30 PM Changeset in webkit [233067] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore/PAL

Unreviewed attempt to fix the build after r233052.

  • pal/spi/cocoa/AVKitSPI.h:
4:13 PM Changeset in webkit [233066] by jer.noble@apple.com
  • 25 edits
    2 adds
    2 deletes in trunk

Address fullscreen api CSS env feedback
https://bugs.webkit.org/show_bug.cgi?id=186684

Reviewed by Simon Fraser.

Source/WebCore:

Test: fullscreen/fullscreen-env.html

+ Update the phishing alert text to be more explicit about the specific threats

phishing sites represent.

+ Make the top inset static, rather than dynamic.
+ Add bottom, left, and right insets for completeness.
+ Set the fullscreen animation duration as well as delay.
+ Notify the page when the controls show and hide.

  • English.lproj/Localizable.strings:
  • css/CSSSelector.cpp:

(WebCore::CSSSelector::selectorText const):

  • css/CSSSelector.h:
  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::checkOne const):

  • css/SelectorCheckerTestFunctions.h:

(WebCore::matchesFullScreenControlsHiddenPseudoClass):

  • css/SelectorPseudoClassAndCompatibilityElementMap.in:
  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::addPseudoClassType):

  • dom/ConstantPropertyMap.cpp:

(WebCore::ConstantPropertyMap::nameForProperty const):
(WebCore::ConstantPropertyMap::updateConstantsForFullscreenInsets):
(WebCore::ConstantPropertyMap::didChangeFullscreenInsets):
(WebCore::ConstantPropertyMap::setFullscreenAutoHideDuration):
(WebCore::ConstantPropertyMap::setFullscreenInsetTop): Deleted.

  • dom/ConstantPropertyMap.h:
  • dom/Document.cpp:

(WebCore::Document::areFullscreenControlsHidden const):
(WebCore::Document::setFullscreenControlsHidden):

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

(WebCore::Page::setFullscreenInsets):
(WebCore::Page::setFullscreenAutoHideDuration):
(WebCore::Page::setFullscreenControlsHidden):
(WebCore::Page::setFullscreenInsetTop): Deleted.

  • page/Page.h:

(WebCore::Page::fullscreenInsets const):

  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setFullscreenInsets):
(WebCore::Internals::setFullscreenAutoHideDuration):
(WebCore::Internals::setFullscreenControlsHidden):
(WebCore::Internals::setFullscreenInsetTop): Deleted.

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

Source/WebKit:

+ Update the phishing alert text to be more explicit about the specific threats

phishing sites represent.

+ Make the top inset static, rather than dynamic.
+ Add bottom, left, and right insets for completeness.
+ Set the fullscreen animation duration as well as delay.
+ Notify the page when the controls show and hide.

  • UIProcess/WebFullScreenManagerProxy.cpp:

(WebKit::WebFullScreenManagerProxy::setFullscreenInsets):
(WebKit::WebFullScreenManagerProxy::setFullscreenAutoHideTiming):
(WebKit::WebFullScreenManagerProxy::setFullscreenControlsHidden):
(WebKit::WebFullScreenManagerProxy::setFullscreenInsetTop): Deleted.
(WebKit::WebFullScreenManagerProxy::setFullscreenAutoHideDelay): Deleted.

  • UIProcess/WebFullScreenManagerProxy.h:
  • UIProcess/ios/fullscreen/WKFullScreenViewController.mm:

(-[WKFullScreenViewController showUI]):
(-[WKFullScreenViewController hideUI]):
(-[WKFullScreenViewController viewWillAppear:]):
(-[WKFullScreenViewController _effectiveFullscreenInsets]):
(-[WKFullScreenViewController _updateWebViewFullscreenInsets]):
(-[WKFullScreenViewController _showPhishingAlert]):
(-[WKFullScreenViewController _effectiveFullscreenInsetTop]): Deleted.

  • WebProcess/FullScreen/WebFullScreenManager.cpp:

(WebKit::WebFullScreenManager::didExitFullScreen):
(WebKit::WebFullScreenManager::setFullscreenInsets):
(WebKit::WebFullScreenManager::setFullscreenAutoHideTiming):
(WebKit::WebFullScreenManager::setFullscreenControlsHidden):
(WebKit::WebFullScreenManager::setFullscreenInsetTop): Deleted.
(WebKit::WebFullScreenManager::setFullscreenAutoHideDelay): Deleted.

  • WebProcess/FullScreen/WebFullScreenManager.h:
  • WebProcess/FullScreen/WebFullScreenManager.messages.in:

LayoutTests:

  • fullscreen/fullscreen-env-expected.txt: Added.
  • fullscreen/fullscreen-env.html: Added.
  • fullscreen/fullscreen-inset-top-expected.txt: Removed.
  • fullscreen/fullscreen-inset-top.html: Removed.
3:57 PM Changeset in webkit [233065] by sbarati@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Do some CoW cleanup
https://bugs.webkit.org/show_bug.cgi?id=186896

Reviewed by Mark Lam.

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::decompressArrayAllocationProfile):
We don't need to WTFMove() ints

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):
remove a TODO.

  • runtime/JSObject.cpp:

(JSC::JSObject::putByIndex):
We were checking for isCopyOnWrite even after we converted away
from CoW in above code.
(JSC::JSObject::ensureWritableInt32Slow):
Model this in the same way the other ensureWritableXSlow are modeled.

3:51 PM Changeset in webkit [233064] by dbates@webkit.org
  • 2 edits in trunk/Tools

EWS for security bugs
https://bugs.webkit.org/show_bug.cgi?id=186291
<rdar://problem/40829658>

Substitute webkit.status-api-key for webkit.status_api_key as Git configuration variables can
only consist of alphanumeric characters and underscores (_) per the second paragraph of section
Configuration File of <https://git-scm.com/docs/git-config/2.18.0#_configuration_file>:

The variable names are case-insensitive, allow only alphanumeric characters and -, and must
start with an alphabetic character.

  • Scripts/webkitpy/tool/main.py:

(WebKitPatch._status_server_api_key_from_git):

3:32 PM Changeset in webkit [233063] by bshafiei@apple.com
  • 7 edits in branches/safari-606.1.20.40-branch/Source

Versioning.

3:30 PM Changeset in webkit [233062] by bshafiei@apple.com
  • 1 copy in tags/Safari-606.1.20.40.3

Tag Safari-606.1.20.40.3.

3:14 PM Changeset in webkit [233061] by dbates@webkit.org
  • 2 edits in trunk/Tools

EWS for security bugs
https://bugs.webkit.org/show_bug.cgi?id=186291
<rdar://problem/40829658>

In r232979, I inadvertently removed a line of code in _parse_authorized_api_keys() to define a local called api_keys.
Add this code back.

  • QueueStatusServer/config/authorization.py:

(_parse_authorized_api_keys):

2:42 PM Changeset in webkit [233060] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

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

"Introduced assertion failure in ~DisplayRefreshMonitorMac()."
(Requested by perarne on #webkit).

Reverted changeset:

"DisplayRefreshMonitorMac should hold a weak pointer to
WebPage."
https://bugs.webkit.org/show_bug.cgi?id=186683
https://trac.webkit.org/changeset/232884

2:23 PM Changeset in webkit [233059] by jer.noble@apple.com
  • 13 edits in trunk/Source

[Fullscreen] Page sometimes ends up with an incorrect zoom level after entering fullscreen
https://bugs.webkit.org/show_bug.cgi?id=186822

Reviewed by Simon Fraser.

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::setOverrideViewportArguments):
(WebCore::Document::updateViewportArguments):

  • dom/Document.h:

Source/WebKit:

Set the minimum zoom, maximum zoom, zoom bouncing, and user scalability settings of the
WKWebView's UIScrollView upon entering fullscreen, and restore those same settings upon
exit. Override the viewport arguments upon entering fullscreen, restore them upon exit.

  • Platform/IPC/ArgumentCoder.h:
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<ViewportArguments>::decode):

  • Shared/WebCoreArgumentCoders.h:
  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::forceAlwaysUserScalable const):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::setOverrideViewportArguments):

  • UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:

(WebKit::WKWebViewState::applyTo):
(WebKit::WKWebViewState::store):
(-[WKFullScreenWindowController enterFullScreen]):
(-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::forceAlwaysUserScalable const):

  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::setOverrideViewportArguments):

2:11 PM Changeset in webkit [233058] by dbates@webkit.org
  • 3 edits in trunk/Tools

EWS should not try to post comments or upload result archives to security-sensitive
bugs unless it has access
https://bugs.webkit.org/show_bug.cgi?id=186831

Reviewed by Lucas Forschler.

Following r232979 security-sensitive patches are uploaded to the status server so
that they can be retrieved and processed by EWS bots without the need for Bugzilla
security bug access. Although the EWS machinery is robust against unexpected exceptions,
including exceptions raised when interacting with Bugzilla bugs/attachments with
insufficient credentials, we should not depend on such defenses as they cause webkit-
patch to log a message for the "unexpected" exception. We should reserve such logging
for truly unexpected exceptions that indicate a programming mistake that we need to fix.

  • Scripts/webkitpy/tool/commands/earlywarningsystem.py:

(AbstractEarlyWarningSystem._post_reject_message_on_bug): Bail out early if we cannot
access the bug.

  • Scripts/webkitpy/tool/commands/queues.py:

(PatchProcessingQueue._can_access_bug): Added.
(PatchProcessingQueue._upload_results_archive_for_patch): Only add an attachment if we
can access the bug.
(CommitQueue.process_work_item): Only post a rejection comment (i.e. call CommitterValidatorreject_patch_from_commit_queue())
if we can access the bug.

1:58 PM Changeset in webkit [233057] by Lucas Forschler
  • 2 edits in trunk/Tools

Fix for https://bugs.webkit.org/show_bug.cgi?id=185790

1:54 PM Changeset in webkit [233056] by Said Abou-Hallawa
  • 3 edits
    2 adds in trunk

RenderSVGInline has to be inline always regardless of its css display value
https://bugs.webkit.org/show_bug.cgi?id=186656

Reviewed by Zalan Bujtas.

Source/WebCore:

According to https://www.w3.org/TR/SVG2/text.html#TextLayout, the <text>
element has to be laid out as if it were a block element and any <tspan>,
<textPath>, <a> and <tref> descendants were inline elements.

If a css rule, which contains the property "display: block;", is applied
to any of children of a <text> element, this property has to be ignored.

We currently ignore this property in RenderSVGInline::updateFromStyle()
by forcing setInline(true). But we do not do the same thing in
RenderTreeBuilder::normalizeTreeAfterStyleChange(). In fact we allow
making the children of the <text> element to be non-inline. This puts
the render tree in weired state and causes many assertions to fire while
laying out RenderSVGText.

Test: svg/dom/svg-inline-text-display-block-crash.html

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::normalizeTreeAfterStyleChange):

LayoutTests:

  • svg/dom/svg-inline-text-display-block-crash-expected.txt: Added.
  • svg/dom/svg-inline-text-display-block-crash.html: Added.
1:34 PM Changeset in webkit [233055] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Do not reuse generated inline renderer for the first letter.
https://bugs.webkit.org/show_bug.cgi?id=186657
<rdar://problem/41157892>

Reviewed by Simon Fraser.

Source/WebCore:

When the first letter pseudo element is present, we construct a dedicated subtree for its content like this:

<div><span>foobar</span></div> -> with ::first-letter on the <div>
DIV RenderBlock

SPAN RenderInline

RenderInline (generated wrapper for the first letter content)

RenderText (fist letter content)

RenderText (remaining text content)

"display: contents" on the <span> forces us not to construct a RenderInline for the <span> (or just come up with a wrapper at best).
FirstLetter::createRenderers logic needs to check for such cases and pick the correct parent for the first letter subtree accordingly.

Test: fast/text/first-letter-with-display-contents-crash.html

imported/w3c/web-platform-tests/css/css-display/display-contents-first-letter-002.html is not crashing anymore either.

  • rendering/updating/RenderTreeBuilderFirstLetter.cpp:

(WebCore::RenderTreeBuilder::FirstLetter::createRenderers):

LayoutTests:

  • fast/text/first-letter-with-display-contents-crash-expected.txt: Added.
  • fast/text/first-letter-with-display-contents-crash.html: Added.
1:10 PM Changeset in webkit [233054] by Keith Rollin
  • 3 edits in trunk/Tools

check-webkit-style should warn about exported inline functions
https://bugs.webkit.org/show_bug.cgi?id=186861
<rdar://problem/41303668>

Reviewed by Brent Fulgham.

When checking binaries compiled with LTO enabled, WebKit's
check-for-weak-vtables-and-externals script can complain about
exported inline functions. For instance, in
Source/WebCore/page/scrolling/ScrollingTree.h, the following:

WEBCORE_EXPORT virtual void reportSynchronousScrollingReasonsChanged(MonotonicTime, SynchronousScrollingReasons) { }
WEBCORE_EXPORT virtual void reportExposedUnfilledArea(MonotonicTime, unsigned /* unfilledArea */) { }

Can result in the following error messages:

ERROR: WebCore has a weak external symbol in it (.../OpenSource/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore)
ERROR: A weak external symbol is generated when a symbol is defined in multiple compilation units and is also marked as being exported from the library.
ERROR: A common cause of weak external symbols is when an inline function is listed in the linker export file.
ERROR: symbol ZN7WebCore13ScrollingTree25reportExposedUnfilledAreaEN3WTF13MonotonicTimeEj
ERROR: symbol
ZN7WebCore13ScrollingTree40reportSynchronousScrollingReasonsChangedEN3WTF13MonotonicTimeEj

Unfortunately, these errors are only emitted when LTO is enabled,
meaning that a developer could check-in a file that will fail an LTO
build if they don't build with that option locally. Therefore, try to
head this off by updating check-webkit-style to identify and warn
about these cases (which includes when an export macro is applied
directly to an inline method as well as when an inline method is part
of an exported class).

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

(_FunctionState.begin):
(_FunctionState.export_macro):
(_ClassInfo.init):
(check_for_non_standard_constructs):
(check_function_definition):
(process_line):
(CppChecker):

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

(FunctionDetectionTest.perform_function_detection):
(FunctionDetectionTest.test_webcore_export):

12:04 PM Changeset in webkit [233053] by Chris Dumez
  • 10 edits
    6 adds in trunk

JSPerformanceObserverCallback creates a GC strongly-referenced Function that is never cleaned up
https://bugs.webkit.org/show_bug.cgi?id=186873
<rdar://problem/41271574>

Reviewed by Simon Fraser.

Source/WebCore:

Add [IsWeakCallback] to PerformanceObserverCallback interface so that the generated
JSPerformanceObserverCallback uses a JSC::Weak instead of a JSC::Strong to store the
js function. To keep the function alive, add [JSCustomMarkFunction] to PerformanceObserver
interface and have its visitAdditionalChildren() visit the callback's js function.
Finally, because we want the callback to still be called even if the JS does not keep
the PerformanceObserver wrapper alive, add [CustomIsReachable] to PerformanceObserver
interface and have its isReachableFromOpaqueRoots() return true if the observer is
registered (i.e. it may need to call the callback in the future).

I have confirmed locally, that the Performance / PerformanceObserver / Document
objects properly get destroyed if I navigate away from a page that had a performance
observer and trigger a memory pressure warning. Also,
notifyutil -p com.apple.WebKit.showAllDocuments no longer shows the old document.

Tests: performance-api/performance-observer-callback-after-gc.html

performance-api/performance-observer-no-document-leak.html

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSPerformanceObserverCustom.cpp: Added.

(WebCore::JSPerformanceObserver::visitAdditionalChildren):
(WebCore::JSPerformanceObserverOwner::isReachableFromOpaqueRoots):

  • bindings/js/ScriptController.cpp:
  • page/PerformanceObserver.cpp:

(WebCore::PerformanceObserver::disassociate):

  • page/PerformanceObserver.h:

(WebCore::PerformanceObserver::isRegistered const):
(WebCore::PerformanceObserver::callback):

  • page/PerformanceObserver.idl:
  • page/PerformanceObserverCallback.h:
  • page/PerformanceObserverCallback.idl:

LayoutTests:

  • performance-api/performance-observer-callback-after-gc-expected.txt: Added.
  • performance-api/performance-observer-callback-after-gc.html: Added.

Add layout test to make sure that a performance observer's callback still gets called, even if
the JS does not keep the performance observer alive.

  • performance-api/performance-observer-no-document-leak-expected.txt: Added.
  • performance-api/performance-observer-no-document-leak.html: Added.
  • performance-api/resources/performance-observer-no-document-leak-frame.html: Added.

Add layout test coverage to make sure the document does not leak if PerformanceObserver was
used.

11:59 AM Changeset in webkit [233052] by jer.noble@apple.com
  • 6 edits in trunk/Source

[Fullscreen] Use secondary glyph style for fullscreen controls
https://bugs.webkit.org/show_bug.cgi?id=186862
<rdar://problem/41212210>

Reviewed by Tim Horton.

Source/WebCore/PAL:

  • pal/spi/cocoa/AVKitSPI.h:

Source/WebKit:

Adopt AVBackgroundView, and use its predefined enums to set the material and tint styles for
the fullscreen controls.

  • UIProcess/ios/fullscreen/WKFullScreenViewController.mm:

(-[WKFullScreenViewController loadView]):

  • UIProcess/ios/fullscreen/WKFullscreenStackView.h:
  • UIProcess/ios/fullscreen/WKFullscreenStackView.mm:

(-[WKFullscreenStackView init]):
(-[WKFullscreenStackView dealloc]):
(-[WKFullscreenStackView addArrangedSubview:applyingMaterialStyle:tintEffectStyle:]):
(-[WKFullscreenStackView layoutSubviews]):
(+[WKFullscreenStackView baseEffects]): Deleted.
(+[WKFullscreenStackView configureView:forTintEffectWithColor:filterType:]): Deleted.
(+[WKFullscreenStackView configureView:withBackgroundFillOfColor:opacity:filter:]): Deleted.
(+[WKFullscreenStackView secondaryMaterialOverlayView]): Deleted.
(+[WKFullscreenStackView applyPrimaryGlyphTintToView:]): Deleted.
(+[WKFullscreenStackView applySecondaryGlyphTintToView:]): Deleted.
(-[WKFullscreenStackView initWithArrangedSubviews:axis:]): Deleted.
(-[WKFullscreenStackView setTargetViewForSecondaryMaterialOverlay:]): Deleted.
(-[WKFullscreenStackView contentView]): Deleted.
(-[WKFullscreenStackView _setArrangedSubviews:axis:]): Deleted.
(-[WKFullscreenStackView setBounds:]): Deleted.
(-[WKFullscreenStackView updateConstraints]): Deleted.

11:54 AM Changeset in webkit [233051] by graouts@webkit.org
  • 9 edits in trunk

[Web Animations] Make imported/mozilla/css-animations/test_animation-ready.html pass reliably
https://bugs.webkit.org/show_bug.cgi?id=183830
<rdar://problem/40997539>

Reviewed by Dean Jackson.

LayoutTests/imported/mozilla:

Mark progressions in the Mozilla CSS Animations tests.

  • css-animations/test_animation-ready-expected.txt:

Source/WebCore:

The CSS Animations Level 2 spec explains how the Web Animations API and CSS Animations interact and requires
pending styles changes on the target element of a CSS Animation to be flushed when using a Web Animations API
on it in order to ensure that any animation- CSS property is accounted for.

  • animation/CSSAnimation.cpp:

(WebCore::CSSAnimation::bindingsStartTime const):
(WebCore::CSSAnimation::setBindingsStartTime):
(WebCore::CSSAnimation::bindingsCurrentTime const):
(WebCore::CSSAnimation::setBindingsCurrentTime):
(WebCore::CSSAnimation::bindingsPlayState const):
(WebCore::CSSAnimation::bindingsPending const):
(WebCore::CSSAnimation::bindingsReady):
(WebCore::CSSAnimation::bindingsFinished):
(WebCore::CSSAnimation::bindingsPlay):
(WebCore::CSSAnimation::bindingsPause):
(WebCore::CSSAnimation::flushPendingStyleChanges const):

  • animation/CSSAnimation.h:
  • animation/WebAnimation.h:

(WebCore::WebAnimation::bindingsPlayState const):
(WebCore::WebAnimation::bindingsPending const):
(WebCore::WebAnimation::bindingsReady):
(WebCore::WebAnimation::bindingsFinished):
(WebCore::WebAnimation::bindingsPlay):
(WebCore::WebAnimation::bindingsPause):

  • animation/WebAnimation.idl:

LayoutTests:

This test now passes reliably.

11:51 AM Changeset in webkit [233050] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] unit-tests fail when run from another directory
https://bugs.webkit.org/show_bug.cgi?id=186872

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/loadConfig.py:

(loadBuilderConfig): Add support for passing master_prefix_path.

  • BuildSlaveSupport/ews-build/loadConfig_unittest.py:

(ConfigDotJSONTest.test_configuration): Set master_prefix_path as current directory.

11:47 AM Changeset in webkit [233049] by jer.noble@apple.com
  • 5 edits in trunk/Source

[Fullscreen] Suspend page (and pause video) while phishing warning is presented
https://bugs.webkit.org/show_bug.cgi?id=186856
<rdar://problem/41212444>

Reviewed by Tim Horton.

Source/WebCore:

Pause the media element when the page is suspended, and unpause when the page resumes.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::suspend):
(WebCore::HTMLMediaElement::resume):

  • html/HTMLMediaElement.h:

Source/WebKit:

  • UIProcess/ios/fullscreen/WKFullScreenViewController.mm:

(-[WKFullScreenViewController _showPhishingAlert]):

11:44 AM Changeset in webkit [233048] by keith_miller@apple.com
  • 5 edits
    1 add in trunk

flattenDictionaryStruture needs to zero inline storage.
https://bugs.webkit.org/show_bug.cgi?id=186869

Reviewed by Saam Barati.

JSTests:

  • stress/flatten-object-zero-unused-inline-properties.js: Added.

Source/JavaScriptCore:

This patch also adds the assetion that unused property storage is
zero or JSValue() to putDirectInternal. Additionally, functions
have been added to $vm that flatten dictionary objects and return
the inline capacity of an object.

  • runtime/JSObjectInlines.h:

(JSC::JSObject::putDirectInternal):

  • runtime/Structure.cpp:

(JSC::Structure::flattenDictionaryStructure):

  • tools/JSDollarVM.cpp:

(JSC::functionInlineCapacity):
(JSC::functionFlattenDictionaryObject):
(JSC::JSDollarVM::finishCreation):

11:42 AM Changeset in webkit [233047] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Add support for using localhost worker in OpenSource EWS Buildbot
https://bugs.webkit.org/show_bug.cgi?id=186871

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/loadConfig.py:

(loadBuilderConfig): Added a worker named 'local-worker' if use_localhost_worker option is used.

  • BuildSlaveSupport/ews-build/master.cfg: Check BUILDBOT_TESTING environment variable and use_localhost_worker if so.
11:35 AM Changeset in webkit [233046] by Kocsen Chung
  • 17 edits in tags/Safari-606.1.22/Source/JavaScriptCore

Cherry-pick r233039. rdar://problem/40910419

Use IsoCellSets to track Executables with clearable code.
https://bugs.webkit.org/show_bug.cgi?id=186877

Reviewed by Filip Pizlo.

Here’s an example of the results that this fix may yield:

  1. The workload: load cnn.com, wait for it to fully load, scroll down and up.
  2. Statistics on memory touched and memory freed by VM::deleteAllCode():

Visiting Executables:

Old New

Number of objects visited: 70897 14264
Number of objects with deletable code: 14264 (20.1%) 14264 (100%)
Number of memory pages visited: 3224 1602
Number of memory pages with deletable code: 1602 (49.7%) 1602 (100%)

Visitng UnlinkedFunctionExecutables:

Old New

Number of objects visited: 105454 17231
Number of objects with deletable code: 42319 (20.1%) 17231 (100%)
Number of memory pages visited: 4796 1349
Number of memory pages with deletable code: 4013 (83.7%) 1349 (100%)

The number of objects differ because the old code only visit unlinked

executables indirectly via linked executables, whereas the new behavior visit
all unlinked executables with deletable code directly. This means:

  1. we used to not visit unlinked executables that have not been linked yet i.e. deleteAllCode() may not delete all code (especially code that is not used).
  2. we had to visit all linked executables to check if they of type FunctionExecutable, before going on to visit their unlinked executable, and this includes the ones that do not have deletable code. This means that we would touch more memory in the process.

Both of these these issues are now fixed with the new code.

This code was tested with manually inserted instrumentation to track the above
statistics. It is not feasible to write an automated test for this without
leaving a lot of invasive instrumentation in the code.

  • bytecode/UnlinkedFunctionExecutable.cpp: (JSC::UnlinkedFunctionExecutable::unlinkedCodeBlockFor):
  • bytecode/UnlinkedFunctionExecutable.h:
  • heap/CodeBlockSetInlines.h: (JSC::CodeBlockSet::iterateViaSubspaces):
  • heap/Heap.cpp: (JSC::Heap::deleteAllCodeBlocks): (JSC::Heap::deleteAllUnlinkedCodeBlocks): (JSC::Heap::deleteUnmarkedCompiledCode): (JSC::Heap::clearUnmarkedExecutables): Deleted. (JSC::Heap::addExecutable): Deleted.
  • heap/Heap.h:
  • runtime/DirectEvalExecutable.h:
  • runtime/ExecutableBase.cpp: (JSC::ExecutableBase::hasClearableCode const):
  • this is written based on the implementation of ExecutableBase::clearCode().
  • runtime/ExecutableBase.h:
  • runtime/FunctionExecutable.h:
  • runtime/IndirectEvalExecutable.h:
  • runtime/ModuleProgramExecutable.h:
  • runtime/ProgramExecutable.h:
  • runtime/ScriptExecutable.cpp: (JSC::ScriptExecutable::clearCode): (JSC::ScriptExecutable::installCode):
  • runtime/ScriptExecutable.h: (JSC::ScriptExecutable::finishCreation):
  • runtime/VM.cpp: (JSC::VM::VM):
  • runtime/VM.h: (JSC::VM::ScriptExecutableSpaceAndSet::ScriptExecutableSpaceAndSet): (JSC::VM::ScriptExecutableSpaceAndSet::clearableCodeSetFor): (JSC::VM::forEachScriptExecutableSpace): (JSC::VM::UnlinkedFunctionExecutableSpaceAndSet::UnlinkedFunctionExecutableSpaceAndSet): (JSC::VM::UnlinkedFunctionExecutableSpaceAndSet::clearableCodeSetFor):

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

11:35 AM Changeset in webkit [233045] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Add force schedulers to OpenSource EWS Buildbot
https://bugs.webkit.org/show_bug.cgi?id=186876

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/loadConfig.py:

(loadBuilderConfig): Added support for ForceScheduler.

11:24 AM Changeset in webkit [233044] by david_fenton@apple.com
  • 6 edits in trunk/Source/WebKit

Unreviewed, rolling out r232989.

Causes API regressions on macOS

Reverted changeset:

"REGRESSION (r231850): Cookie file cannot be read or written
by network process"
https://bugs.webkit.org/show_bug.cgi?id=186806
https://trac.webkit.org/changeset/232989

11:11 AM Changeset in webkit [233043] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.22

Tag Safari-606.1.22.

10:59 AM Changeset in webkit [233042] by bshafiei@apple.com
  • 2 edits in branches/safari-606.1.20.40-branch/Source/WebKit

Cherry-pick r232848. rdar://problem/41120462

Plug-in Process crashing on Mojave (affects Flash, others)
https://bugs.webkit.org/show_bug.cgi?id=186628
<rdar://problem/41120462>

Reviewed by Eric Carlson.

Add the missing “com.apple.security.cs.allow-unsigned-executable-memory” entitlement. Also alphabetize
the entitlements file to make it easier to read.

  • Configurations/PluginService.entitlements:

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

9:44 AM Changeset in webkit [233041] by rmorisset@apple.com
  • 1 edit
    1 move
    1 delete in trunk/Tools

[WSL] Merge WSL_type.ott and WSL_exec.ott
https://bugs.webkit.org/show_bug.cgi?id=186310

Rubberstamped by Filip Pizlo.

I moved the execution rules into WSL_type.ott, that was renamed WSL.ott.
I also changed the execution judgements:

  • they now emit memory events instead of having an explicit store (so they can be connected later to a memory model)
  • the environment is now unchangeable (except inside blocks, which are the only place that variable declarations can appear)
  • various rules were simplified.
  • WebGPUShadingLanguageRI/SpecWork/WSL.ott: Copied from Tools/WebGPUShadingLanguageRI/SpecWork/WSL_type.ott.
  • WebGPUShadingLanguageRI/SpecWork/WSL_exec.ott: Removed.
  • WebGPUShadingLanguageRI/SpecWork/WSL_type.ott: Removed.
8:48 AM Changeset in webkit [233040] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Update TestExpectations for http/wpt/service-workers/third-party-registration.html.
https://bugs.webkit.org/show_bug.cgi?id=183860

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations: Mark as a flaky timeout.
8:09 AM Changeset in webkit [233039] by mark.lam@apple.com
  • 17 edits in trunk/Source/JavaScriptCore

Use IsoCellSets to track Executables with clearable code.
https://bugs.webkit.org/show_bug.cgi?id=186877

Reviewed by Filip Pizlo.

Here’s an example of the results that this fix may yield:

  1. The workload: load cnn.com, wait for it to fully load, scroll down and up.
  2. Statistics on memory touched and memory freed by VM::deleteAllCode():

Visiting Executables:

Old New

Number of objects visited: 70897 14264
Number of objects with deletable code: 14264 (20.1%) 14264 (100%)
Number of memory pages visited: 3224 1602
Number of memory pages with deletable code: 1602 (49.7%) 1602 (100%)

Visitng UnlinkedFunctionExecutables:

Old New

Number of objects visited: 105454 17231
Number of objects with deletable code: 42319 (20.1%) 17231 (100%)
Number of memory pages visited: 4796 1349
Number of memory pages with deletable code: 4013 (83.7%) 1349 (100%)

The number of objects differ because the old code only visit unlinked

executables indirectly via linked executables, whereas the new behavior visit
all unlinked executables with deletable code directly. This means:

  1. we used to not visit unlinked executables that have not been linked yet i.e. deleteAllCode() may not delete all code (especially code that is not used).
  2. we had to visit all linked executables to check if they of type FunctionExecutable, before going on to visit their unlinked executable, and this includes the ones that do not have deletable code. This means that we would touch more memory in the process.

Both of these these issues are now fixed with the new code.

This code was tested with manually inserted instrumentation to track the above
statistics. It is not feasible to write an automated test for this without
leaving a lot of invasive instrumentation in the code.

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::unlinkedCodeBlockFor):

  • bytecode/UnlinkedFunctionExecutable.h:
  • heap/CodeBlockSetInlines.h:

(JSC::CodeBlockSet::iterateViaSubspaces):

  • heap/Heap.cpp:

(JSC::Heap::deleteAllCodeBlocks):
(JSC::Heap::deleteAllUnlinkedCodeBlocks):
(JSC::Heap::deleteUnmarkedCompiledCode):
(JSC::Heap::clearUnmarkedExecutables): Deleted.
(JSC::Heap::addExecutable): Deleted.

  • heap/Heap.h:
  • runtime/DirectEvalExecutable.h:
  • runtime/ExecutableBase.cpp:

(JSC::ExecutableBase::hasClearableCode const):

  • this is written based on the implementation of ExecutableBase::clearCode().
  • runtime/ExecutableBase.h:
  • runtime/FunctionExecutable.h:
  • runtime/IndirectEvalExecutable.h:
  • runtime/ModuleProgramExecutable.h:
  • runtime/ProgramExecutable.h:
  • runtime/ScriptExecutable.cpp:

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

  • runtime/ScriptExecutable.h:

(JSC::ScriptExecutable::finishCreation):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

(JSC::VM::ScriptExecutableSpaceAndSet::ScriptExecutableSpaceAndSet):
(JSC::VM::ScriptExecutableSpaceAndSet::clearableCodeSetFor):
(JSC::VM::forEachScriptExecutableSpace):
(JSC::VM::UnlinkedFunctionExecutableSpaceAndSet::UnlinkedFunctionExecutableSpaceAndSet):
(JSC::VM::UnlinkedFunctionExecutableSpaceAndSet::clearableCodeSetFor):

7:00 AM Changeset in webkit [233038] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[test262-runner] Improve failures output
https://bugs.webkit.org/show_bug.cgi?id=186858

Patch by Leo Balter <Leo Balter> on 2018-06-21
Reviewed by Michael Saboff.

  • Scripts/test262/Runner.pm:

(main):
(processResult):

6:57 AM Changeset in webkit [233037] by caitp@igalia.com
  • 2 edits in trunk/Tools

[Tools] add a --debug option to test262/Runner.pm for buildbots
https://bugs.webkit.org/show_bug.cgi?id=186113

Reviewed by Michael Saboff.

test262-runner runs Debug builds by default, but this allows us to be
explicit about it in buildbots.

  • Scripts/test262/Runner.pm:

(processCLI):

6:37 AM Changeset in webkit [233036] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Bad optional access in WebCore::ContentSecurityPolicySource::portMatches
https://bugs.webkit.org/show_bug.cgi?id=186535

Reviewed by Daniel Bates.

Make sure the ports have explicit values before dereferencing them.

This is hard to test. If the layout test script-src-parsing-implicit-and-explicit-port-number
continues to pass for WebKitLegacy, then I have at least probably not broken anything. To
reproduce the crash in a layout test that I can run, I think I would need to implement
internals.registerDefaultPortForProtocol for modern WebKit, which is too much work for this
crash. Otherwise, we'd need to run the test server on port 80, which would be unfriendly.

  • page/csp/ContentSecurityPolicySource.cpp:

(WebCore::ContentSecurityPolicySource::portMatches const):

4:03 AM Changeset in webkit [233035] by zandobersek@gmail.com
  • 9 edits in trunk/Source

[GTK] WebDriver: allow applying host-specific TLS certificates for automated sessions
https://bugs.webkit.org/show_bug.cgi?id=186884

Reviewed by Carlos Garcia Campos.

Source/JavaScriptCore:

Add a tuple array input parameter to the StartAutomationSession DBus
message, representing a list of host-and-certificate pairs that have to
be allowed for a given session. This array is then unpacked and used to
fill out the certificates Vector object in the SessionCapabilities
struct.

  • inspector/remote/RemoteInspector.h: Add a GLib-specific Vector of

String pairs representing hosts and the certificate file paths.

  • inspector/remote/glib/RemoteInspectorServer.cpp:

Source/WebDriver:

Start handling the 'certificates' capability for the GTK+ port. This is
a list of host-certificate pairs that should be marked as allowed for a
given automation session. This object should be positioned inside the
'webkitgtk:browserOptions' dictionary in the capabilities JSON.

  • Capabilities.h:
  • glib/SessionHostGlib.cpp:

(WebDriver::SessionHost::startAutomationSession): Include any
host-certificate pairs in the StartAutomationSession DBus message.

  • gtk/WebDriverServiceGtk.cpp:

(WebDriver::WebDriverService::platformValidateCapability const):
Properly validate the 'certificates' value, if present.
(WebDriver::WebDriverService::platformParseCapabilities const):
Properly parse the 'certificates' value, if present, and extract the
host-certificate pairs.

Source/WebKit:

  • UIProcess/API/glib/WebKitAutomationSession.cpp:

(webkitAutomationSessionCreate): Handle any host-certificate pair that's
been set for this session, creating a GTlsCertificate object through
loading from the specified certificate path and marking that certificate
as allowed for the specified host through the
webkit_web_context_allow_tls_certificate_for_host() API.

4:01 AM Changeset in webkit [233034] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Regression(r226990) : Crash under WebCore::Page::applicationWillResignActive
https://bugs.webkit.org/show_bug.cgi?id=186850
<rdar://problem/37394469>

Reviewed by Eric Carlson.

Make sure m_page is not null before calling applicationWillResignActive(). m_page
gets nulled out when WebPage::close() is called. The crash trace seems to indicate
we're calling applicationWillResignActive() on a Page that is dead since we crash
accessing Page::mainFrame().

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::applicationWillResignActive):

3:14 AM Changeset in webkit [233033] by Fujii Hironori
  • 4 edits in trunk

[GStreamer] ASSERTION FAILED: end.isValid() in PlatformTimeRanges::add
https://bugs.webkit.org/show_bug.cgi?id=186880

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Bug 180253 has added assertions the arugments start and end is
valid MediaTime in PlatformTimeRanges::add. Since then, some
LayoutTests fail due to the assertion failure.

The invalid MediaTime is added into the PlatformTimeRanges in
MediaPlayerPrivateGStreamer::buffered. Before adding MediaTime,
original implementation checks MediaTime::operator bool() returns
true. But, this method returns true if the time value is invalid.
Then, PlatformTimeRanges::add is called with an invalid MediaTime.

No new tests (No behavior change).

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::buffered const): Check
maxTimeLoaded() is valid before adding to timeRanges.

LayoutTests:

  • platform/gtk/TestExpectations: Removed Crash marks of

compositing/geometry/clipped-video-controller.html,
fast/canvas/webgl/oes-texture-half-float-with-video.html,
fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgb565.html,
fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba5551.html,
fast/canvas/webgl/tex-image-and-sub-image-2d-with-video.html,
fast/events/media-focus-in-standalone-media-document.html,
fullscreen/video-controls-timeline.html,
http/tests/appcache/video.html, and compositing/video/poster.html.

2:54 AM Changeset in webkit [233032] by Fujii Hironori
  • 4 edits in trunk

[GTK] http/tests/misc/bubble-drag-events.html crashes
https://bugs.webkit.org/show_bug.cgi?id=182352

Reviewed by Carlos Garcia Campos.

Source/WebKit:

PingLoad::didFinish was called twice if it is used with
NetworkDataTaskSoup. PingLoad is not a ref-counted object. It is
destructed when PingLoad::didFinish is called.

PingLoad::didReceiveChallenge calls the ChallengeCompletionHandler
with AuthenticationChallengeDisposition::Cancel to cancel the
challenge and calls PingLoad::didFinish.

NetworkDataTaskSoup::continueAuthenticate calls
didReceiveChallenge with a ChallengeCompletionHandler which calls
didCompleteWithError. PingLoad::didCompleteWithError calls
PingLoad::didFinish.

didCompleteWithError callback should not be called in the
ChallengeCompletionHandler.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::continueAuthenticate): Do not call
didFail() in the ChallengeCompletionHandler. Call
invalidateAndCancel() instead.

LayoutTests:

  • platform/gtk/TestExpectations:

Marked http/tests/misc/bubble-drag-events.html as [ Failure ] not
[ Failure Timeout Crash ].
Unmarked http/tests/misc/cached-scripts.html.

2:27 AM Changeset in webkit [233031] by zandobersek@gmail.com
  • 2 edits in trunk/LayoutTests

Unreviewed WPE gardening. Handle various timeouts by adjusting or
adding the appropriate test expectations.

  • platform/wpe/TestExpectations:
1:54 AM Changeset in webkit [233030] by Carlos Garcia Campos
  • 4 edits in trunk/Tools

run-gtk-tests (glib/common.py) cannot determine build directory when webKitBranchBuild=true
https://bugs.webkit.org/show_bug.cgi?id=185643

Reviewed by Frédéric Wang.

Check if webKitBranchBuild is true in git config to add the branch name to the build path.

  • Scripts/webkitpy/common/checkout/scm/git.py:

(Git.read_git_config): Add output_type parameter.
(Git.read_config): Call read_git_config with cws and executive.
(Git._upstream_branch): Use read_config().
(Git._assert_can_squash): Ditto.
(Git.remote_branch_ref): Ditto.

  • Scripts/webkitpy/common/checkout/scm/scm_unittest.py:

(GitSVNTest.test_read_git_config):

  • glib/common.py:

(get_build_path):

Jun 20, 2018:

8:04 PM Changeset in webkit [233029] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebCore

Fix leaks in WebCore found by clang static analyzer in deep mode
<https://webkit.org/b/186865>

Reviewed by Joseph Pecoraro.

  • platform/mac/WebCoreNSURLExtras.mm:

(WebCore::mapHostNames): Fix leak of an empty NSMutableArray
during an early return. RetainPtr<> is not used here since
a pointer to the NSMutableArray * is passed around.

  • platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:

(WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream):
Fix leak of a CGDisplayModeRef during an early return.

6:28 PM Changeset in webkit [233028] by david_fenton@apple.com
  • 2 edits in trunk/LayoutTests/platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey

rebaseline failing High Sierra WebCryptoAPI tests (added extra new line).
https://bugs.webkit.org/show_bug.cgi?id=186863

Unreviewed test gardening.

  • platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any-expected.txt:
  • platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker-expected.txt:
5:08 PM Changeset in webkit [233027] by dbates@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: All non-Same-Site cookies are marked as Same-Site Strict in Storage tab
https://bugs.webkit.org/show_bug.cgi?id=186867
<rdar://problem/41175424>

Reviewed by Matt Baker.

Fixes an issue where cookies that do not have a Same-Site policy would be marked up as Same-
Site Strict in Web Inspector's cookie storage content view (under the storage tab).

  • UserInterface/Views/CookieStorageContentView.js:

(WI.CookieStorageContentView.prototype._rebuildTable): Only compute the display name if
we cookie.sameSite is non-null and is not WI.Cookie.SameSiteType.None. Moreover, remove
an extraneous call to WI.Cookie.parseSameSiteAttributeValue() as cookie.SameSite represents
the already parsed value (one of the WI.Cookie.SameSiteType-scoped values).

5:06 PM Changeset in webkit [233026] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Layout Test imported/mozilla/css-animations/test_pseudoElement-get-animations.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=186868

Unreviewed test gardening.

  • platform/win/TestExpectations:
4:57 PM Changeset in webkit [233025] by Wenson Hsieh
  • 4 edits
    2 adds in trunk

[WebKit on watchOS] Fixed position elements sometimes flicker when scrolling
https://bugs.webkit.org/show_bug.cgi?id=186860
<rdar://problem/39953563>

Reviewed by Tim Horton.

Source/WebKit:

Remove conditional guards that are no longer necessary, now that the oldest iOS version our builders support is
iOS 11. Conditionalizing this logic only for iOS 11+ meant that on watchOS, we're always falling down the path
where we don't schedule a visible content rect update until the next runloop, which makes it possible for a
remote layer tree transaction to arrive and cause us to update the scrolling tree with stale viewport geometry.

Test: WKScrollViewTests.PositionFixedLayerAfterScrolling

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _scheduleVisibleContentRectUpdateAfterScrollInView:]):

Tools:

Add a new API test to exercise a race condition between receiving remote layer tree commits and updating visible
content rects which would result in the compositing layer for a fixed position element sometimes appearing in
the wrong place. See WebKit ChangeLog for more details.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/fixed-nav-bar.html: Added.
  • TestWebKitAPI/Tests/ios/WKScrollViewTests.mm: Added.

(traverseLayerTree):
(TEST):

4:04 PM Changeset in webkit [233024] by dbates@webkit.org
  • 2 edits in trunk/Tools

AttributeError: StatusServer instance has no attribute '_api_key' thrown when processing a patch
https://bugs.webkit.org/show_bug.cgi?id=186852

Fixes an issue where StatusServer._api_key may not be defined. This issue manifests itself
in a Python AttributeError exception when an EWS bot tries to fetch the next patch to process.

Currently StatusServer._api_key is only defined when either the environment variable WEBKIT_STATUS_API_KEY
or the Git configuration key webkit.status_api_key has a non-empty value. Instead we should
always define StatusServer._api_key in the StatusServer constructor.

  • Scripts/webkitpy/common/net/statusserver.py:

(StatusServer.init):

3:04 PM Changeset in webkit [233023] by david_fenton@apple.com
  • 1 edit
    4 adds in trunk/LayoutTests

rebaseline WebCryptoAPI tests for High Sierra.
https://bugs.webkit.org/show_bug.cgi?id=186863

Unreviewed test gardening.

  • platform/mac-sierra/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any-expected.txt: Added.
  • platform/mac-sierra/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker-expected.txt: Added.
  • platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any-expected.txt: Added.
  • platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker-expected.txt: Added.
2:26 PM Changeset in webkit [233022] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

Unreviewed, fix the watchOS build after r233016.

  • page/EventHandler.cpp:

(WebCore::EventHandler::selectionExtentRespectingEditingBoundary):

Move this helper out of the ENABLE(DRAG_SUPPORT) guard.

  • page/EventHandler.h:
1:24 PM Changeset in webkit [233021] by Manuel Rego Casasnovas
  • 2 edits in trunk/Websites/webkit.org

[WPE] Some fixups on webkit.org page
https://bugs.webkit.org/show_bug.cgi?id=186844

Unreviewed as the content is not modified, only some minor fixups on the format.

  • wpe.md: Remove title as it's already provided by the website CMS.

Avoid breaking lines at 80 chars as it's not rendered as expected.

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

AnimationList wastes 60KB of vector capacity
https://bugs.webkit.org/show_bug.cgi?id=186701

Reviewed by Chris Dumez.

AnimationList was the second most wasteful call site for Vector capacity on theverge.com,
wasting almost 60KB. Lists had between 1 and 3 entries, so give AnimationList's vector of
Animations a min capacity of zero so it doesn't grow in increments of 16.

Also shrink Animation from 88 bytes to 72 bytes by optimizing packing.

  • platform/animation/Animation.cpp:

(WebCore::Animation::Animation):
(WebCore::Animation::operator=):
(WebCore::Animation::animationsMatch const):

  • platform/animation/Animation.h:

(WebCore::Animation::animationMode const):
(WebCore::Animation::setAnimationMode):

  • platform/animation/AnimationList.h:
12:39 PM Changeset in webkit [233019] by Simon Fraser
  • 5 edits in trunk/Source/WebCore

ContentSecurityPolicySourceList wastes 51KB of Vector capacity on cnn.com
https://bugs.webkit.org/show_bug.cgi?id=186706

Reviewed by Chris Dumez.

Make ContentSecurityPolicySourceList::parse() call shrinkToFit() on m_list
after parsing to eliminate wasted vector capacity.

Shrink ContentSecurityPolicySource down to 40 bytes by optimizing packing.

  • page/csp/ContentSecurityPolicySource.cpp:

(WebCore::ContentSecurityPolicySource::ContentSecurityPolicySource):

  • page/csp/ContentSecurityPolicySource.h:
  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::ContentSecurityPolicySourceList::matches const):
(WebCore::ContentSecurityPolicySourceList::parse):
(WebCore::ContentSecurityPolicySourceList::matches): Deleted.

  • page/csp/ContentSecurityPolicySourceList.h:
11:19 AM Changeset in webkit [233018] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Expand concurrent GC assertion to accept JSValue() or 0
https://bugs.webkit.org/show_bug.cgi?id=186855

Reviewed by Mark Lam.

We tend to set unused property slots to either JSValue() or 0
depending on the context. On 64-bit these are the same but on
32-bit JSValue() has a NaN tag. This patch makes it so we
the accept either JSValue() or 0.

  • runtime/JSObjectInlines.h:

(JSC::JSObject::prepareToPutDirectWithoutTransition):

10:30 AM Changeset in webkit [233017] by aboya@igalia.com
  • 5 edits in trunk/LayoutTests

Unreviewed GTK+ test gardening.
https://bugs.webkit.org/show_bug.cgi?id=186854

  • TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
10:22 AM Changeset in webkit [233016] by Megan Gardner
  • 6 edits in trunk/Source

Restrict Selection in contenteditable the extent of that contenteditable
https://bugs.webkit.org/show_bug.cgi?id=186792

Reviewed by Wenson Hsieh.

Source/WebCore:

My system currently will not allow me to run tests. I will add one when I can update.

Expose the already existing funcitonality to restrict a selection to a single contentenditable

  • page/EventHandler.cpp:

(WebCore::EventHandler::selectionExtentRespectingEditingBoundary):
(WebCore::selectionExtentRespectingEditingBoundary): Deleted.

  • page/EventHandler.h:
  • rendering/HitTestResult.h:

Source/WebKit:

We have not been checking to make sure that when we make a selection that it is restricted to
a single content editable on iOS. There is functionality to ensure this on mac, so it has been
exposed and utilized for restricting the extent of a selection.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::updateSelectionWithTouches):

10:16 AM WebKitGTK/Gardening/Calendar edited by aboya@igalia.com
(diff)
10:16 AM Changeset in webkit [233015] by guijemont@igalia.com
  • 2 edits in trunk/Source/JavaScriptCore

[Armv7] Linkbuffer: executableOffsetFor() fails for location 2
https://bugs.webkit.org/show_bug.cgi?id=186765

Reviewed by Michael Saboff.

This widens the check for 0 so that we handle that case more correctly.

  • assembler/LinkBuffer.h:

(JSC::LinkBuffer::executableOffsetFor):

10:13 AM Changeset in webkit [233014] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

CSSFontFace wastes 59KB of Vector capacity on nytimes.com
https://bugs.webkit.org/show_bug.cgi?id=186708

Reviewed by Anders Carlsson.

Most CSSFontFace have one or two CSSFontFaceSource so don't allocate
vector capacity in the default 16-size chunks.

  • css/CSSFontFace.h:
10:07 AM Changeset in webkit [233013] by rmorisset@apple.com
  • 3 edits in trunk/Tools

[WSL] Add details to the sphinx outline
https://bugs.webkit.org/show_bug.cgi?id=186310

Rubberstamped by Filip Pizlo.

Mostly improving the sphinx outline.
Also started moving the execution rules to WSL_type.ott (which will eventually become WSL.ott).
Tried formalizing the gathering of declarations into the environment, but I think I will scratch it.
It is both trivial to do (and to explain in english) and a bit of a pain to formalize.

8:51 AM Changeset in webkit [233012] by Manuel Rego Casasnovas
  • 1 edit
    1 add in trunk/Websites/webkit.org

[WPE] Add page for webkit.org
https://bugs.webkit.org/show_bug.cgi?id=186844

Reviewed by Michael Catanzaro.

  • wpe.md: Added.
6:53 AM Changeset in webkit [233011] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

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

"Too many flakiness on the tests, so the EWS bots cant process
patches correctly" (Requested by clopez on #webkit).

Reverted changeset:

"[GTK] Enable tests on the GTK EWS queue"
https://bugs.webkit.org/show_bug.cgi?id=186559
https://trac.webkit.org/changeset/232844

4:48 AM Changeset in webkit [233010] by graouts@webkit.org
  • 7 edits in trunk

[Web Animations] Make imported/mozilla/css-transitions/test_element-get-animations.html pass reliably
https://bugs.webkit.org/show_bug.cgi?id=183841
<rdar://problem/40998101>

Reviewed by Dean Jackson.

LayoutTests/imported/mozilla:

Mark progressions in the Mozilla CSS Transitions and CSS Animations tests.

  • css-animations/test_element-get-animations-expected.txt:
  • css-transitions/test_element-get-animations-expected.txt:

Source/WebCore:

We must ignore CSS Animations with "animation-name: none".

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::updateCSSAnimationsForElement):

LayoutTests:

This test now passes reliably.

4:05 AM Changeset in webkit [233009] by magomez@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK][ThreadedRendering][Nicosia] Themed elements cannot be rendered using threaded rendering
https://bugs.webkit.org/show_bug.cgi?id=186840

Reviewed by Carlos Garcia Campos.

Disable threaded rendering for GTK port.

  • platform/graphics/nicosia/NicosiaPaintingEngine.cpp:

(Nicosia::PaintingEngine::create):

3:56 AM Changeset in webkit [233008] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[GTK] ASSERTION FAILED: url == m_string in UserAgentQuirks test
https://bugs.webkit.org/show_bug.cgi?id=186838

This URL constructor expects canonicalized input, so fix the passed URL.

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

  • TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST):

3:55 AM Changeset in webkit [233007] by rmorisset@apple.com
  • 3 edits in trunk/Tools

[WSL] Make the typing rules explicit about resolving type syntax

Rubberstamped by Filip Pizlo.

2:00 AM Changeset in webkit [233006] by Yusuke Suzuki
  • 7 edits in trunk

[GTK][WPE][Nicosia] Add name for Nicosia Painting Threads
https://bugs.webkit.org/show_bug.cgi?id=186836

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Use "PaintingThread" name.

  • platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp:

(Nicosia::PaintingEngineThreaded::PaintingEngineThreaded):

Source/WTF:

AutomaticThread can take a name for the generated threads now.
This patch adds the above ability to WorkerPool.

  • wtf/WorkerPool.cpp:

(WTF::WorkerPool::WorkerPool):

  • wtf/WorkerPool.h:

(WTF::WorkerPool::create):
(WTF::WorkerPool::name const):

Tools:

  • TestWebKitAPI/Tests/WTF/WorkerPool.cpp:

(TestWebKitAPI::TEST):

1:23 AM Changeset in webkit [233005] by Yusuke Suzuki
  • 2 edits in trunk/Tools

[WPE] Remove warnings by setting nullptr for unused listeners
https://bugs.webkit.org/show_bug.cgi?id=186835

Reviewed by Carlos Garcia Campos.

frame, axis_source, axis_stop, and axis_discrete are unused.
Setting nullptr explicitly to remove warnings in GCC.

  • wpe/backends/WindowViewBackend.cpp:
12:07 AM Changeset in webkit [233004] by graouts@webkit.org
  • 11 edits in trunk

[Web Animations] Make imported/mozilla/css-animations/test_pseudoElement-get-animations.html pass reliably
https://bugs.webkit.org/show_bug.cgi?id=183818
<rdar://problem/40997015>

Reviewed by Dean Jackson.

LayoutTests/imported/mozilla:

Mark progressions in the Mozilla CSS Transitions and CSS Animations tests.

  • css-animations/test_pseudoElement-get-animations-expected.txt:
  • css-transitions/test_element-get-animations-expected.txt:

Source/WebCore:

We add a new opt-in flag to return sorted animations when calling AnimationTimeline::animationsForElement() so that
Element::getAnimations() can opt into returning animations sorted by the rules defined by the CSS Transitions spec.
The rule is that CSS Transitions must be sorted prior to CSS Animations and regular Web Animations, and then sorted
by the time they were generated and, if generated at the same time, sorted alphabetically based on the transitioned
property. To be able to accomodate this, we add a new generationTime() method to CSSTransition.

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::animationsForElement const):
(WebCore::AnimationTimeline::updateCSSTransitionsForElement):

  • animation/AnimationTimeline.h:
  • animation/CSSTransition.cpp:

(WebCore::CSSTransition::create):
(WebCore::CSSTransition::CSSTransition):

  • animation/CSSTransition.h:
  • dom/Element.cpp:

(WebCore::Element::getAnimations):

LayoutTests:

This test now passes reliably.

Jun 19, 2018:

11:37 PM Changeset in webkit [233003] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix broken assertion on 32-bit
https://bugs.webkit.org/show_bug.cgi?id=186830

Reviewed by Mark Lam.

The assertion was intended to catch concurrent GC issues. We don't
run them on 32-bit so we don't need this assertion there. The
assertion was broken because zero is not JSValue() on 32-bit.

  • runtime/JSObjectInlines.h:

(JSC::JSObject::prepareToPutDirectWithoutTransition):

7:58 PM Changeset in webkit [233002] by Basuke Suzuki
  • 5 edits in trunk/Source/WebCore

[Curl] Allow passing contents of Root CA data directly.
https://bugs.webkit.org/show_bug.cgi?id=185782

Currently the data must be in a file and set by its path. This patch
allow application to set root CA data by passing binary data directly.

Reviewed by Yusuke Suzuki.

No new tests. Tested internally.

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::setupTransfer):

  • platform/network/curl/CurlSSLHandle.cpp:

(WebCore::CurlSSLHandle::CurlSSLHandle):
(WebCore::CurlSSLHandle::getCACertPathEnv):
(WebCore::CurlSSLHandle::setCACertPath):
(WebCore::CurlSSLHandle::setCACertData):
(WebCore::CurlSSLHandle::clearCACertInfo):

  • platform/network/curl/CurlSSLHandle.h:

(WebCore::CurlSSLHandle::getCipherList const):
(WebCore::CurlSSLHandle::getSignatureAlgorithmsList const):
(WebCore::CurlSSLHandle::getCurvesList const):
(WebCore::CurlSSLHandle::setCipherList):
(WebCore::CurlSSLHandle::setSignatureAlgorithmsList):
(WebCore::CurlSSLHandle::setCurvesList):
(WebCore::CurlSSLHandle::setIgnoreSSLErrors):
(WebCore::CurlSSLHandle::getCACertInfo const):
(WebCore::CurlSSLHandle::getCACertPath const): Deleted.
(WebCore::CurlSSLHandle::setCACertPath): Deleted.

  • platform/network/curl/CurlSSLVerifier.cpp:

(WebCore::CurlSSLVerifier::CurlSSLVerifier):

6:28 PM Changeset in webkit [233001] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

flattenDictionaryStructure needs to zero properties that have been compressed away
https://bugs.webkit.org/show_bug.cgi?id=186828

Reviewed by Mark Lam.

This patch fixes a bunch of crashing Mozilla tests on the bots.

  • runtime/Structure.cpp:

(JSC::Structure::flattenDictionaryStructure):

6:11 PM Changeset in webkit [233000] by sbarati@apple.com
  • 3 edits
    1 add in trunk

DirectArguments::create needs to initialize to undefined instead of the empty value
https://bugs.webkit.org/show_bug.cgi?id=186818
<rdar://problem/38415177>

Reviewed by Filip Pizlo.

JSTests:

  • stress/create-direct-arguments-in-osr-should-initialize-to-undefined.js: Added.

(foo):
(bar):

Source/JavaScriptCore:

The bug here is that we will emit code that just loads from DirectArguments as
long as the index is within the known capacity of the arguments object (op_get_from_arguments).
The arguments object has at least enough capacity to hold the declared parameters.
When we materialized this object in OSR exit, we initialized up to to the capacity
with JSValue(). In OSR exit, though, we only filled up to the length of the
object with actual values. So we'd end up with a DirectArguments object with
capacity minus length slots of JSValue(). To fix this, we need initialize up to
capacity with jsUndefined during construction. The invariant of this object is
that the capacity minus length slots at the end are filled in with jsUndefined.

  • runtime/DirectArguments.cpp:

(JSC::DirectArguments::create):

6:01 PM Changeset in webkit [232999] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

ARKit badge drop shadow updates its blur radius based on page zoom
https://bugs.webkit.org/show_bug.cgi?id=186829
<rdar://problem/40738779>

Reviewed by Tim Horton.

We need to make sure the shadow blur radius takes into account the
current zoom. Thankfully, the GraphicsContext platform code already
does this, so just use it.

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::paintSystemPreviewBadge):

5:45 PM Changeset in webkit [232998] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Crash in sanitizeStackForVMImpl sometimes when switching threads with same VM
https://bugs.webkit.org/show_bug.cgi?id=186827

Reviewed by Saam Barati.

Need to set VM::lastStackTop before any possible calls to sanitizeStack().

  • runtime/JSLock.cpp:

(JSC::JSLock::didAcquireLock):

5:26 PM Changeset in webkit [232997] by dino@apple.com
  • 6 edits in trunk/Source

Blank viewer comes up and then auto-dismisses when device is not connected to Internet
https://bugs.webkit.org/show_bug.cgi?id=186825
<rdar://problem/40294170>

Reviewed by Tim Horton.

Source/WebCore:

Export isSuccessful() to WebKit.

  • platform/network/ResourceResponseBase.h:

Source/WebKit:

Handle the case where the network load fails, and send that
error onto QuickLook.

  • UIProcess/Cocoa/DownloadClient.mm:

(WebKit::DownloadClient::didReceiveResponse): Check for success.
(WebKit::DownloadClient::processDidCrash): Cancel in the case of a crash.
(WebKit::DownloadClient::didFail): Propagate the error onto QuickLook.

  • UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:

(-[_WKPreviewControllerDataSource failWithError:]): New method that calls
the completion handler with the error data.
(WebKit::SystemPreviewController::fail): New API method.

  • UIProcess/SystemPreviewController.h:
5:09 PM Changeset in webkit [232996] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[test262-runner] Reduce flakiness of unit tests for the runner
https://bugs.webkit.org/show_bug.cgi?id=186824

Patch by Leo Balter <Leo Balter> on 2018-06-19
Reviewed by Michael Saboff.

  • Scripts/test262/Runner.pm:

(main):

  • Scripts/webkitperl/test262_unittest/test262-runner-tests.pl:
5:04 PM Changeset in webkit [232995] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Implement IPC throttling to keep the main thread responsive when a process misbehaves
https://bugs.webkit.org/show_bug.cgi?id=186607
<rdar://problem/41073205>

Reviewed by Geoffrey Garen.

Implement IPC throttling to keep the main thread responsive when a process misbehaves.
Instead of doing one main runloop dispatch per incoming message, we now do a single
runloop dispatch and process incoming messages in batch. We put a limit on the number
of messages to be processed in a batch (600). If the queue is larger that this limit,
we'll schedule a 0-timer to process remaining messages, giving the main runloop a chance
to process other events. Additionally, if an IPC connection keeps hitting this maximum
batch size limit, we implement back off and we'll further decrease the number of messages
we process in each batch (going as low as 60). This keeps Safari responsive enough to
allow the user to close the bad tab (even on older devices such as iPhone 5s).

Finally, if the incoming message queue becomes too large (50000), we go one step further
and kill the IPC connection in order to maintain performance / battery life.

Every time we apply throttling or terminate a connection due to throttling, we do a
RELEASE_LOG_ERROR() with useful information in order to help diagnose potential issues
in the future.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::Connection):
(IPC::Connection::enqueueIncomingMessage):
(IPC::Connection::MessagesThrottler::MessagesThrottler):
(IPC::Connection::MessagesThrottler::scheduleMessagesDispatch):
(IPC::Connection::MessagesThrottler::numberOfMessagesToProcess):
(IPC::Connection::dispatchIncomingMessages):

  • Platform/IPC/Connection.h:
  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::Connection::kill):

4:58 PM Changeset in webkit [232994] by commit-queue@webkit.org
  • 2 edits
    1 add in trunk/Tools

[test262-runner] Print results report to HTML
https://bugs.webkit.org/show_bug.cgi?id=186790

Patch by Leo Balter <Leo Balter> on 2018-06-19
Reviewed by Michael Saboff.

After runing the tests, 2 html files are created with a list to failing tests and summaries.

  • Scripts/test262/Runner.pm:

(main):
(summarizeResults):
(printHTML):

4:28 PM Changeset in webkit [232993] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Layout Test imported/mozilla/css-animations/test_animation-playstate.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=186807

Unreviewed test gardening.

  • platform/win/TestExpectations:
4:26 PM Changeset in webkit [232992] by Basuke Suzuki
  • 11 edits in trunk/Source/WebCore

[Curl] Enable Proxy Authentication.
https://bugs.webkit.org/show_bug.cgi?id=185266

Add support for Proxy Authentication to curl network layer.

Reviewed by Alex Christensen.

No new tests in public. Tested internally.

  • platform/network/curl/AuthenticationChallenge.h:
  • platform/network/curl/AuthenticationChallengeCurl.cpp:

(WebCore::AuthenticationChallenge::protectionSpaceServerTypeFromURI):
(WebCore::AuthenticationChallenge::protectionSpaceFromHandle):
(WebCore::AuthenticationChallenge::determineProxyPort):
(WebCore::AuthenticationChallenge::authenticationSchemeFromCurlAuth):
(WebCore::AuthenticationChallenge::parseRealm):

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::enableProxyIfExists):
(WebCore::CurlHandle::getProxyUrl):
(WebCore::CurlHandle::getProxyAuthAvail):
(WebCore::CurlHandle::getPrimaryPort): Deleted.

  • platform/network/curl/CurlContext.h:

(WebCore::CurlContext::setDefaultProxyAuthMethod):
(WebCore::CurlContext::setProxyAuthMethod):

  • platform/network/curl/CurlProxySettings.cpp:

(WebCore::determineAuthMethod):
(WebCore::CurlProxySettings::setAuthMethod):
(WebCore::protocolIsInSocksFamily):

  • platform/network/curl/CurlProxySettings.h:

(WebCore::CurlProxySettings::setDefaultAuthMethod):
(WebCore::CurlProxySettings::authMethod const):

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::didReceiveHeader):

  • platform/network/curl/CurlResponse.h:

(WebCore::CurlResponse::isolatedCopy const):

  • platform/network/curl/ResourceResponse.h:
  • platform/network/curl/ResourceResponseCurl.cpp:

(WebCore::ResourceResponse::isProxyAuthenticationRequired const):

4:06 PM Changeset in webkit [232991] by timothy_horton@apple.com
  • 7 edits
    2 adds in trunk

Unpainted area while scrolling in Reader is white
https://bugs.webkit.org/show_bug.cgi?id=186541
<rdar://problem/40471363>

Reviewed by Timothy Hatcher.

Source/WebCore:

New test: tiled-drawing/simple-document-with-dynamic-background-color.html

For platforms that do not use the overhang layer, we depend on
RenderView's background color to fill unpainted space.

RenderView's background color is only updated inside updateRootLayerConfiguration,
and it is possible with a simple enough page to change the document's
background color without running that code.

  • page/FrameView.cpp:

(WebCore::FrameView::setTransparent):
(WebCore::FrameView::setBaseBackgroundColor):
Make use of the newly added rootBackgroundColorOrTransparencyChanged.

(WebCore::FrameView::calculateExtendedBackgroundMode const):
Update a comment, since the function it mentioned is no longer.

(WebCore::FrameView::updateTilesForExtendedBackgroundMode):
Remove this code that clears the root extended background color
if using tiles to extend in both directions. Two reasons:
1) it seems harmless to also have a root extended background color
2) this just gets clobbered by the call in RenderView::paintBoxDecorations

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateCompositingLayers):
Add a bit that will do a updateConfiguration() on the root layer if no
other work needs to be done, so that we can update the root layer's
transparency or background color without doing a full layer rebuild.

(WebCore::RenderLayerCompositor::rootOrBodyStyleChanged):
Make use of the newly added rootBackgroundColorOrTransparencyChanged.

(WebCore::RenderLayerCompositor::rootBackgroundColorOrTransparencyChanged):
Change rootBackgroundTransparencyChanged to also cover color changes.
Fold setRootExtendedBackgroundColor in here, and make use of
setRootLayerConfigurationNeedsUpdate() instead of doing a full rebuild.
Previously, we would bail if the transparency state hadn't changed;
now, we'll also update the root layer's background color and the
exposed-to-WebKit extended background color if they change too.

(WebCore::RenderLayerCompositor::rootBackgroundTransparencyChanged): Deleted.
(WebCore::RenderLayerCompositor::setRootExtendedBackgroundColor): Deleted.

  • rendering/RenderLayerCompositor.h:

Add setRootLayerConfigurationNeedsUpdate, remove setRootExtendedBackgroundColor,
and add both a bit indicating that the root layer configuration needs updating
and the cached view background color to make the early return in
rootBackgroundColorOrTransparencyChanged possible.

  • rendering/RenderView.cpp:

(WebCore::RenderView::paintBoxDecorations):
Make use of the newly added rootBackgroundColorOrTransparencyChanged.

LayoutTests:

  • tiled-drawing/background-transparency-toggle-expected.txt:

This is a progression; the extended background color now matches the color
of the page at this point (#CCCCCC is the specified body background, black
with 0.2 alpha, blended with the root's white background).

  • tiled-drawing/simple-document-with-dynamic-background-color-expected.txt: Added.
  • tiled-drawing/simple-document-with-dynamic-background-color.html: Added.

Added a test that ensures that dynamically changing the background color
actually applies to the RenderView background. Previously, the second layer
tree dump would have a black background where it should be red.

3:22 PM Changeset in webkit [232990] by jiewen_tan@apple.com
  • 4 edits in trunk/Source/WebKit

Make SecItemShim to not send return value for SecItemAdd
https://bugs.webkit.org/show_bug.cgi?id=186789
<rdar://problem/40892596>

Reviewed by Brent Fulgham.

Return value of SecItemAdd is often ignored. Even if it isn't, we don't have the ability to serialize SecKeychainItemRef.
Otherwise, it would go through the weird route of serializing SecKeychainItemRef by asking Keychain for its persistent
reference. This route contradicts the purpose of SecItemShim, which is to proxy all Keychain operations to UIProcess.

Also, this patch removes the release assertion on encode(Encoder&, SecAccessControlRef) and decode(Decoder&, RetainPtr<SecAccessControlRef>&)
as they don't query Keychain.

  • Shared/cf/ArgumentCodersCF.cpp:

(IPC::encode):
(IPC::decode):

  • Shared/mac/SecItemShim.cpp:

(WebKit::sendSecItemRequest):
(WebKit::webSecItemAdd):

  • UIProcess/mac/SecItemShimProxy.cpp:

(WebKit::SecItemShimProxy::secItemRequest):

  • UIProcess/mac/SecItemShimProxy.h:
  • UIProcess/mac/SecItemShimProxy.messages.in:
3:04 PM Changeset in webkit [232989] by sihui_liu@apple.com
  • 6 edits in trunk/Source/WebKit

REGRESSION (r231850): Cookie file cannot be read or written by network process
https://bugs.webkit.org/show_bug.cgi?id=186806
<rdar://problem/41113791>

Reviewed by Geoffrey Garen.

Default websiteDataStore may be added wrongly to network process before default session was
set, as messages were asynchronous, so the cookie storage could be improperly set.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/mac/RemoteNetworkingContext.mm:

(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

3:02 PM Changeset in webkit [232988] by don.olmstead@sony.com
  • 3 edits in trunk/Source/WebKit

Use getCurrentProcessID over getpid
https://bugs.webkit.org/show_bug.cgi?id=186813

Reviewed by Alex Christensen.

  • Shared/WebMemorySampler.cpp:

(WebKit::WebMemorySampler::initializeTimers):
(WebKit::WebMemorySampler::stop):
(WebKit::WebMemorySampler::writeHeaders):

  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::WebSWContextManagerConnection::installServiceWorker):

2:59 PM Changeset in webkit [232987] by Keith Rollin
  • 2 edits in trunk/Tools

Crash running check-webkit-style on webrtc/.../exceptions.py
https://bugs.webkit.org/show_bug.cgi?id=186816
<rdar://problem/41262553>

Reviewed by Michael Catanzaro.

It's not apparent to me why the crash is occurring. Trying to write a
unittest that checks this file in isolation does not reproduce the
crash. But the crash goes away when updating to pylint-0.25.2.

  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook._install_pylint):

2:58 PM Changeset in webkit [232986] by Keith Rollin
  • 3 edits in trunk/Tools

cpp style checker needs to know more about NOLINT
https://bugs.webkit.org/show_bug.cgi?id=186796

Reviewed by Aakash Jain.

Running check-webkit-style on
ThirdParty/gtest/src/gtest-internal-inl.h crashes with a KeyError as
it tries to look up information about a particular #include in a
dictionary it maintains. The problem has to do with the following
lines in gtest-internal-inl.h:

#include <gtest/gtest.h> NOLINT
#include <gtest/gtest-spi.h>

The NOLINT annotation will prevent the cpp-checker from processing or
even seeing that line. In skipping that line, information regarding
that line is NOT added to some internal tables. However, when the code
that checks that #includes are correctly alphabetized gets to the
"gtest-spi.h" line, it will not respect the NOLINT annotation and will
see the gtest.h line. When doing so, it runs afoul of the fact that it
hadn't seen that line before and it crashes when it tries to look up
that line in some internal records.

Fix this by catering to the possibility that a #include line may not
have been entered into these internal records.

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

(check_include_line):

  • Scripts/webkitpy/style/checkers/cpp_unittest.py:
2:49 PM Changeset in webkit [232985] by Michael Catanzaro
  • 1 edit
    1 delete in trunk/LayoutTests

Unreviewed, revert some bad gardening.

I should not have added image results for a reftest.

  • platform/gtk/imported/w3c/web-platform-tests/css/WOFF2/directory-knowntags-001-expected.png: Removed.
  • platform/gtk/imported/w3c/web-platform-tests/css/WOFF2/tabledata-glyf-origlength-003-expected.png: Removed.
2:48 PM Changeset in webkit [232984] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebKit

WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations does not invoke callback when Service Workers disabled
https://bugs.webkit.org/show_bug.cgi?id=186809

Reviewed by Chris Dumez.

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations):

2:27 PM Changeset in webkit [232983] by commit-queue@webkit.org
  • 3 edits
    1 add in trunk

ShadowChicken crashes with stack overflow in the LLInt
https://bugs.webkit.org/show_bug.cgi?id=186540
<rdar://problem/39682133>

Patch by Tadeu Zagallo <Tadeu Zagallo> on 2018-06-19
Reviewed by Saam Barati.

JSTests:

Add test that stack overflows and crashes on ShadowChicken when JIT is
disabled and forceDebuggerBytecodeGeneration is enabled.

  • stress/llint-stack-overflow-debugging-opcodes.js: Added.

(foo):
(catch):

Source/JavaScriptCore:

Stack overflows in the LLInt were crashing in ShadowChicken when compiling
with debug opcodes because it was accessing the scope of the incomplete top
frame, which hadn't been set yet. Check that we have moved past the first
opcode (enter) and that the scope is not undefined (enter will
initialize it to undefined).

  • interpreter/ShadowChicken.cpp:

(JSC::ShadowChicken::update):

2:01 PM Changeset in webkit [232982] by dbates@webkit.org
  • 2 edits in trunk/Tools

EWS for security bugs
https://bugs.webkit.org/show_bug.cgi?id=186291
<rdar://problem/40829658>

Update comment in AbstractEarlyWarningSystem.refetch_patch() to reference <https://bugs.webkit.org/show_bug.cgi?id=186817>.

  • Scripts/webkitpy/tool/commands/earlywarningsystem.py:

(AbstractEarlyWarningSystem.refetch_patch):

1:53 PM Changeset in webkit [232981] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Need to properly handle removal of worker in SWServer::unregisterServiceWorkerClient timer lambda
https://bugs.webkit.org/show_bug.cgi?id=186674
<rdar://problem/40974812>

Reviewed by Chris Dumez.

While looping over the running workers map and trying to terminate some of the workers,
there is a chance that the map will be modified synchronously which may affect iterating the map.
This patch removes that potential threat.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::unregisterServiceWorkerClient):

1:35 PM Changeset in webkit [232980] by dbates@webkit.org
  • 2 edits
    15 adds in trunk

EWS for security bugs
https://bugs.webkit.org/show_bug.cgi?id=186291
<rdar://problem/40829658>

Reviewed by Lucas Forschler

Part 2 of 2.

Adds a new Bugzilla extension that will automatically CC the EWS feeder queue
on each bug that has a patch up for review, including security bugs. This allows
the WebKit OpenSource Project to use an unprivileged Bugzilla account for the
EWS feeder queue.

  • extensions/EWS/Config.pm: Added.
  • extensions/EWS/Extension.pm: Added.

(new): Initialize some bookkeeping variables we use to track whether we have seen
a value change event for the review flag and whether we need to CC the feeder. The latter
we need to track because we can only make changes to the CC list in the callback
bug_start_of_update().
(object_before_set): This callback is called each time a setter is called on a Bugzilla
object. Check if the review flag was set to ? and do some bookkeeping. Although tempting
to do such work in the callback flag_end_of_update() instead of object_before_set() doing
such work would come AFTER we get callback bug_start_of_update() and hence after we have
committed the CC list of the bug to the database. Moreover, the "interface to [flag_end_of_update()]
is UNSTABLE and it may change in the future" according to <https://github.com/bugzilla/bugzilla/blob/d7cf1c91949248222806f5a32f485b12eab8806f/Bugzilla/Hook.pm#L797>.
(bug_start_of_update): Add the EWS feeder queue to the list of CC members of the bug, if needed.
(config_add_panels): Adds a new panel to the Administration Parameters screen.
(isReviewFlag): Helper function that returns whether the specified Bugzilla::Object represents
the review flag.

  • extensions/EWS/docs/en/rst/index-admin.rst: Added.
  • extensions/EWS/lib/ParamsPanelUI.pm: Added.

(checkUser): Helper function to determine if there exists a Bugzilla user corresponding to
the specified login name.
(get_param_list): Add configurable field to the Administration Parameters screen to specify
the login name of the EWS feeder queue.

  • extensions/EWS/template/en/default/admin/params/ews.html.tmpl: Added.
1:34 PM Changeset in webkit [232979] by dbates@webkit.org
  • 22 edits
    3 copies
    3 adds in trunk/Tools

EWS for security bugs
https://bugs.webkit.org/show_bug.cgi?id=186291
<rdar://problem/40829658>

Reviewed by Lucas Forschler.

Part 1 of 2.

Implements support for EWS processing of patches on security sensitive bugs. We add new
endpoints to the status server to support uploading and downloading of patches and associated
metadata. When webkit-patch submits a patch for EWS processing it will now upload the contents
and metadata for the patch to the status server if the patch is on a security sensitive bug.
We teach the EWS machinery in webkitpy to query the status server for a patch only if fetching
the patch from Bugzilla is not permitted due to an authorization error.

Fetching patches from the status server requires an API key. The API key is read from the
environment variable WEBKIT_STATUS_API_KEY or the value of the Git configuration key webkit.status_api_key
(in that order). Contact me or another Apple engineer for an API key.

Additionally, default to using HTTPS when querying the status server and expose an optional
command line option called --status-host-uses-http to use the former behavior of querying
over HTTP.

  • QueueStatusServer/config/authorization.py: Added.

(_path_to_authorized_api_keys_file): Returns the absolute filesystem path to the file authorized_api_keys.txt.
(_parse_authorized_api_keys):
(authorized_api_keys):
(_parse_authorization_header): Parses the API key from the Authorization header. We use a
custom authentication scheme: "apikey". See remark below for more details.
(is_authorized): Checks if the request includes an API key and whether that API key is in the
list of authorized keys (performs a case-sensitive match). The API key may be specified either
in a HTTP header Authorization or in the query string argument "apikey". When using the HTTP
headers approach the Authorization header should have the form: "Authorization: apikey X" where
X is the case-sensitive API key.

  • QueueStatusServer/handlers/fetchattachment.py: Added.

(FetchAttachment):
(FetchAttachment.get):

  • QueueStatusServer/handlers/releasepatch.py:

(ReleasePatch.check_processed_by_all_queues): Returns whether the specified attachment was processed by all the queues.
(ReleasePatch.post): Delete the patch from AppEngine (if we have it) once the patch was processed
by all the queues.

  • QueueStatusServer/handlers/submittoews.py:

(SubmitToEWS._should_add_to_ews_queue): Fix a typo in a comment while I am working in this code.

  • QueueStatusServer/handlers/uploadattachment.py: Added.

(UploadAttachment):
(UploadAttachment.get):
(UploadAttachment.post):

  • QueueStatusServer/main.py: Add new routes /upload-attachment and /attachment to upload an attachment

and view an attachment (or its metadata), respectively.

  • QueueStatusServer/model/attachmentdata.py: Added.

(AttachmentData):
(AttachmentData.add_attachment_data):
(AttachmentData.lookup_if_exists):
(AttachmentData.remove_attachment_data):

  • QueueStatusServer/templates/uploadattachment.html: Added.
  • Scripts/webkitpy/common/net/bugzilla/attachment.py:

(Attachment.committer):
(Attachment):
(Attachment.to_json): Serialize to JSON so that we can upload it to AppEngine.
(Attachment.from_json): Deserialize from JSON. This is used as part of downloading a patch from AppEngine.

  • Scripts/webkitpy/common/net/bugzilla/attachment_unittest.py:

(AttachmentTest.test_convert_to_json_and_back): Added.

  • Scripts/webkitpy/common/net/bugzilla/bug.py:

(Bug.groups): Returns a frozenset of groups that the bug is a member of.
(Bug.is_security_sensitive): Returns whether the bug is in group Security-Sensitive.

  • Scripts/webkitpy/common/net/bugzilla/bugzilla.py:

(BugzillaQueries.fetch_attachment_ids_from_review_queue): Modified to take an optional boolean, only_security_bugs,
as to whether to only fetch attachment ids for unreviewed patches associated with security bugs. By default, we
keep the current behavior and query for the attachment ids of all unreviewed patches that the currently logged in
Bugzilla user can see, which may include patches associated with security bugs.
(Bugzilla._parse_date): Update for moved and renamed constant. See remark for class Bugzilla.
(Bugzilla._parse_bug_dictionary_from_xml): Modified to return an empty dictionary if we do not have access to view the bug.
Otherwise, extract the name of the group the bug is in.
(Bugzilla.fetch_bug): Modified to return None if we do not have access to view the bug.
(Bugzilla._parse_bug_title_from_attachment_page): Extracted out logic to parse the title of the Attachment page
from _parse_bug_id_from_attachment_page() so that it can be used from both _parse_bug_id_from_attachment_page()
and get_bug_id_for_attachment_id().
(Bugzilla): Moved class constant _bugzilla_date_format to Scripts/webkitpy/common/net/bugzilla/constants.py
and renamed it to BUGZILLA_DATE_FORMAT.
(Bugzilla.AccessError):
(Bugzilla.AccessError.init):
(Bugzilla._parse_bug_id_from_attachment_page): Modified to return a tuple of ("bug id", "error code") so that
the caller can know the reason the parse failed if it did. The parse will fail if we do not have access to view
the bug.
(Bugzilla.bug_id_for_attachment_id): Modified to take a boolean throw_on_access_error (default: False)
as to whether to raise a Bugzilla.AccessError exception and pass it through to get_bug_id_for_attachment_id().
(Bugzilla.get_bug_id_for_attachment_id): Modified to take a boolean throw_on_access_error (default: False)
as to whether to raise a Bugzilla.AccessError exception if we do not have access to the bug associated with
the specified attachment id.
(Bugzilla.fetch_attachment):

  • Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py:

(MockBugzillaQueries.fetch_attachment_ids_from_review_queue):
(MockBugzilla):
(MockBugzilla.fetch_attachment):
(MockBugzilla.fetch_attachment_contents):
(MockBugzilla.add_patch_to_bug):

  • Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
  • Scripts/webkitpy/common/net/bugzilla/constants.py: Added.
  • Scripts/webkitpy/common/net/statusserver.py:

(StatusServer)
(StatusServer.init): Modified to take an boolean use_https as to whether to query the server using
HTTPS (default: True - use HTTPS).
(StatusServer.set_host): Moved logic to compute the server URL from her to _server_url().
(StatusServer.set_use_https): Added.
(StatusServer.set_api_key): Added.
(StatusServer._server_url): Added.
(StatusServer._authorization_header_name_and_value_pair): Added.
(StatusServer.results_url_for_status): Update to use _server_url().
(StatusServer._post_status_to_server): Ditto.
(StatusServer._post_svn_revision_to_server): Ditto.
(StatusServer._post_work_items_to_server): Ditto.
(StatusServer._upload_attachment_to_server): Added.
(StatusServer.upload_attachment): Added.
(StatusServer._post_work_item_to_ews): Update to use _server_url().
(StatusServer.next_work_item): Ditto.
(StatusServer._post_release_work_item): Ditto.
(StatusServer._post_release_lock): Ditto.
(StatusServer._fetch_attachment_page): Added.
(StatusServer.fetch_attachment): Added.
(StatusServer._fetch_url): Add the API Key to the request if we have one.
(StatusServer.patch_status): Update to use _server_url().
(StatusServer.svn_revision): Ditto.

  • Scripts/webkitpy/common/net/statusserver_mock.py:

(MockStatusServer.upload_attachment): Added.
(MockStatusServer.fetch_attachment): Added.

  • Scripts/webkitpy/tool/bot/feeders.py:

(EWSFeeder.feed): Modified to download patches on security bugs and upload them to the status server (AppEngine).

  • Scripts/webkitpy/tool/commands/download.py:

(ProcessAttachmentsMixin._fetch_list_of_patches_to_process): Modified to handle the case when fetching the
bug details from Bugzilla fail, say because we are not allowed to the view the bug.
(ProcessBugsMixin._fetch_list_of_patches_to_process): Filter out None values for attachments that we failed
to fetch, say because we are not allowed to the view the bug the attachment is on.

  • Scripts/webkitpy/tool/commands/earlywarningsystem.py:

(AbstractEarlyWarningSystem.refetch_patch): For now, refetch the patch from the status server. Ideally, we
need a way to ask the status server to fetch the patch again from Bugzilla (or at least its metadata) so
that the EWS can check the current state of the patch (i.e. is it still marked r?).

  • Scripts/webkitpy/tool/commands/queries_unittest.py:

(QueryCommandsTest.test_patches_to_review): Update expected result.

  • Scripts/webkitpy/tool/commands/queues.py:

(AbstractPatchQueue._next_patch): Fetch the patch from the status server if we failed to fetch it from
Bugzilla because we do not have permission to view it.

  • Scripts/webkitpy/tool/commands/queues_unittest.py:
  • Scripts/webkitpy/tool/commands/upload_unittest.py:

(test_upload_of_security_sensitive_patch_with_no_review_and_ews): Added.

  • Scripts/webkitpy/tool/main.py:

(WebKitPatch):
(WebKitPatch._status_server_api_key_from_git): Read the API key from the Git configuration key webkit.status_api_key.
(WebKitPatch._status_server_api_key): Read the API key from the environment variable WEBKIT_STATUS_API_KEY.
(WebKitPatch.handle_global_options): Read the API key and update the state of the StatusServer object, if applicable.

  • Scripts/webkitpy/tool/steps/obsoletepatches.py:

(ObsoletePatches.run): Modified to handle the case when fetching the bug details from Bugzilla fail, say because we
are not allowed to the view the bug.

  • Scripts/webkitpy/tool/steps/submittoews.py:

(SubmitToEWS.run): Upload the contents of the patch and the Bugzilla metadata about it to the status server
if the patch was posted to a security bug.

1:30 PM Changeset in webkit [232978] by graouts@webkit.org
  • 9 edits in trunk

[Web Animations] Make imported/mozilla/css-animations/test_animation-playstate.html pass reliably
https://bugs.webkit.org/show_bug.cgi?id=183828
<rdar://problem/40997469>

Reviewed by Dean Jackson.

LayoutTests/imported/mozilla:

Mark a progression in the Mozilla CSS Animations tests.

  • css-animations/test_animation-playstate-expected.txt:

Source/WebCore:

We need to ensure pending styles have been resolved prior to returning the play state for a CSS Animation since
it can be controlled by the animation-play-state CSS property. To that end we expose a specific bindings-only
method which we override for CSSAnimation to force a style update.

  • animation/CSSAnimation.cpp:

(WebCore::CSSAnimation::bindingsPlayState const):

  • animation/CSSAnimation.h:
  • animation/WebAnimation.h:

(WebCore::WebAnimation::bindingsPlayState const):

  • animation/WebAnimation.idl:

LayoutTests:

This test now passes reliably.

1:09 PM Changeset in webkit [232977] by keith_miller@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

constructArray variants should take the slow path for subclasses of Array
https://bugs.webkit.org/show_bug.cgi?id=186812

Reviewed by Saam Barati and Mark Lam.

This patch fixes a crashing test in ObjectInitializationScope where we would
allocate a new structure for an indexing type change while initializing
a subclass of Array. Since the new array hasn't been fully initialized
if the GC ran it would see garbage and we might crash.

  • runtime/JSArray.cpp:

(JSC::constructArray):
(JSC::constructArrayNegativeIndexed):

  • runtime/JSArray.h:

(JSC::constructArray): Deleted.
(JSC::constructArrayNegativeIndexed): Deleted.

12:58 PM Changeset in webkit [232976] by Kocsen Chung
  • 3 edits
    2 deletes in tags/Safari-606.1.21.1

Revert r232787. rdar://problem/41259591

12:55 PM Changeset in webkit [232975] by Kocsen Chung
  • 7 edits in tags/Safari-606.1.21.1/Source

Versioning.

12:40 PM Changeset in webkit [232974] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.21.1

New tag.

12:39 PM Changeset in webkit [232973] by dbates@webkit.org
  • 4 edits
    1 add in trunk/Tools

QueueStatusServer: "'NoneType' object has no attribute 'message'" in ReleasePatch.get()
when attachment is skipped by queue
https://bugs.webkit.org/show_bug.cgi?id=186748

Reviewed by Lucas Forschler.

Fixes an issue where releasing a patch that was skipped by a queue would cause an AttributeError
in ReleasePatch.get().

When removing a patch from a queue we update queue statistics. As part of this process
we record the last message posted to the status server for the patch. Currently if a patch
is skipped by the queue when picking the next patch to process (say, we failed to fetch the
attachment) then the queue does not post a message to the status server before it asks the
status server to remove the patch from the list of patches the queue needs to process. Instead
the queue should tell the status server that it chose to skip the patch before asking for the
patch to be removed from its list of patches to process.

  • Scripts/webkitpy/common/net/bugzilla/attachment.py:

(Attachment.bug_id): Return None if we do not have a bug ID. This can happen if we failed
to fetch the attachment from Bugzilla (say, Bugzilla's markup changed) or we do not have
have permission to view the Bugzilla bug.

  • Scripts/webkitpy/common/net/bugzilla/attachment_unittest.py: Added.

(AttachmentTest):
(AttachmentTest.test_no_bug_id):

  • Scripts/webkitpy/tool/commands/queues.py:

(AbstractPatchQueue._next_patch): Call AbstractPatchQueue._did_skip() to post a status
update to the status server and then release the work item.

  • Scripts/webkitpy/tool/commands/queues_unittest.py:

(AbstractPatchQueueTest.test_next_patch): Update expected result.

11:59 AM Changeset in webkit [232972] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Test262-Runner: Improve files queue to optimize CPU usage/balancing
https://bugs.webkit.org/show_bug.cgi?id=186443

Patch by Leo Balter <Leo Balter> on 2018-06-19
Reviewed by Michael Saboff.

This patch creates a queue manager for to keep the child process open while the parent process feed each child with test files to run.

  • Scripts/test262/Runner.pm:

(processCLI):
(main):

11:56 AM Changeset in webkit [232971] by commit-queue@webkit.org
  • 3 edits in trunk/JSTests

[test262-runner] More updates to the skip list
https://bugs.webkit.org/show_bug.cgi?id=186786

Patch by Leo Balter <Leo Balter> on 2018-06-19
Reviewed by Michael Saboff.

  • test262/config.yaml:
  • test262/expectations.yaml:
11:48 AM Changeset in webkit [232970] by sbarati@apple.com
  • 5 edits
    1 add in trunk

Wasm: Any function argument of type Void should be a validation error
https://bugs.webkit.org/show_bug.cgi?id=186794
<rdar://problem/41140257>

Reviewed by Keith Miller.

JSTests:

  • wasm/Builder.js:

(const._normalizeFunctionSignature):

  • wasm/function-tests/void-argument-type-should-be-a-validation-error.js: Added.

(getBinary):

  • wasm/self-test/test_BuilderJSON.js:

Source/JavaScriptCore:

  • wasm/WasmModuleParser.cpp:

(JSC::Wasm::ModuleParser::parseType):

11:31 AM Changeset in webkit [232969] by ddkilzer@apple.com
  • 4 edits in trunk/Source/WebCore

Revert: Add logging when splashboardd enables WebThread
<https://webkit.org/b/186793>
<rdar://problem/41213255>

Turns out this isn't needed, so reverting r232959.

  • platform/RuntimeApplicationChecks.h:
  • platform/cocoa/RuntimeApplicationChecksCocoa.mm:

(WebCore::IOSApplication::isSplashBoardd): Deleted.

  • platform/ios/wak/WebCoreThread.mm:

(WebThreadEnable):

11:09 AM Changeset in webkit [232968] by Wenson Hsieh
  • 18 edits
    2 adds in trunk

[WebKit on watchOS] Vend username text content type when using scribble in login fields
https://bugs.webkit.org/show_bug.cgi?id=186791
<rdar://problem/41226935>

Reviewed by Beth Dakin.

Source/WebCore:

Expose AutofillElements' autofillable username input element. See WebKit ChangeLog for more details.

  • editing/ios/AutofillElements.h:

(WebCore::AutofillElements::username const):

Source/WebKit:

Vend additional context to Quickboard when focusing an element that is likely to be a username field.

Test: fast/forms/watchos/username-text-content-type.html

  • Shared/AssistedNodeInformation.cpp:

(WebKit::AssistedNodeInformation::encode const):
(WebKit::AssistedNodeInformation::decode):

  • Shared/AssistedNodeInformation.h:

Add a new flag to tell the UI process when the currently focused element is an autofillable username input
field (using existing app autofill heuristics).

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView textContentTypeForTesting]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:

Add new testing SPI to grab the computed text content type for the focused element.

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

(contentTypeFromFieldName):

If autocomplete="username" is specified, return a username text content type. This was not originally added in
r197626 because UITextContentTypeUsername was only introduced later, in iOS 11.

(-[WKContentView textContentTypeForListViewController:]):
(-[WKContentView textContentTypeForTesting]):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getAssistedNodeInformation):

Tools:

Add testing support for grabbing the current text content type of the focused element.

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::textContentType const):

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.cpp:

(WTR::UIScriptController::textContentType const):

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::textContentType const):

LayoutTests:

Add a new layout test verifying that:

  1. There is no text content type for a lone plain text input.
  2. The text content type for a plain text input preceding a password field is "username".
  3. The text content type for a lone plain text input with autocomplete="username" is "username".
  • fast/forms/watchos/username-text-content-type-expected.txt: Added.
  • fast/forms/watchos/username-text-content-type.html: Added.
  • resources/ui-helper.js:

(window.UIHelper.textContentType):

11:06 AM Changeset in webkit [232967] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Unreviewed, rolling out r232947.

Caused an API test to time out

Reverted changeset:

"Implement IPC throttling to keep the main thread responsive
when a process misbehaves"
https://bugs.webkit.org/show_bug.cgi?id=186607
https://trac.webkit.org/changeset/232947

10:42 AM Changeset in webkit [232966] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Layout Test imported/mozilla/css-transitions/test_animation-cancel.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=186807

Unreviewed test gardening.

  • platform/win/TestExpectations:
10:12 AM Changeset in webkit [232965] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

WebCoreNSURLSessionDataTaskClient::redirectReceived() calls WebCore on non-main thread
https://bugs.webkit.org/show_bug.cgi?id=186805
<rdar://problem/36960714>

Reviewed by Youenn Fablet.

Make sure WebCoreNSURLSessionDataTaskClient::redirectReceived() dispatches to the main
thread before calling its completion handler. Otherwise, we end up calling into WebCore
on a NSOperationQueue background thread and we crash.

  • platform/network/cocoa/WebCoreNSURLSession.mm:

(WebCore::WebCoreNSURLSessionDataTaskClient::redirectReceived):

10:10 AM Changeset in webkit [232964] by Chris Dumez
  • 11 edits in trunk/Source

HTTPHeaderMap wastes 226KB of HashTable capacity on cnn.com
https://bugs.webkit.org/show_bug.cgi?id=186735
<rdar://problem/41189164>

Reviewed by Geoffrey Garen.

Source/WebCore:

Resource requests and responses normally do not have a large amount of HTTP headers
(local testing shows 6 common headers on average and 0.3 uncommon ones).
As a result, move the internal representation of HTTPHeaderMap from HashMaps to
Vectors. Given the number of headers, the impact on performance should be negligible.
However, the new implementation uses a lot less memory. In a follow-up, we can save
even more memory by calling HTTPHeaderMap::shrinkToFit() when possible.

  • loader/CrossOriginAccessControl.cpp:

(WebCore::createAccessControlPreflightRequest):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::responseReceived):

  • loader/cache/CachedRawResource.cpp:

(WebCore::CachedRawResource::canReuse const):

  • platform/network/HTTPHeaderMap.cpp:

(WebCore::HTTPHeaderMap::isolatedCopy const):
(WebCore::HTTPHeaderMap::get const):
(WebCore::HTTPHeaderMap::set):
(WebCore::HTTPHeaderMap::add):
(WebCore::HTTPHeaderMap::append):
(WebCore::HTTPHeaderMap::addIfNotPresent):
(WebCore::HTTPHeaderMap::contains const):
(WebCore::HTTPHeaderMap::remove):

  • platform/network/HTTPHeaderMap.h:

(WebCore::HTTPHeaderMap::CommonHeader::isolatedCopy const):
(WebCore::HTTPHeaderMap::CommonHeader::operator== const):
(WebCore::HTTPHeaderMap::UncommonHeader::isolatedCopy const):
(WebCore::HTTPHeaderMap::UncommonHeader::operator== const):
(WebCore::HTTPHeaderMap::HTTPHeaderMapConstIterator::HTTPHeaderMapConstIterator):
(WebCore::HTTPHeaderMap::HTTPHeaderMapConstIterator::updateKeyValue):
(WebCore::HTTPHeaderMap::shrinkToFit):
(WebCore::HTTPHeaderMap::commonHeaders const):
(WebCore::HTTPHeaderMap::uncommonHeaders const):
(WebCore::HTTPHeaderMap::commonHeaders):
(WebCore::HTTPHeaderMap::uncommonHeaders):
(WebCore::HTTPHeaderMap::CommonHeader::encode const):
(WebCore::HTTPHeaderMap::CommonHeader::decode):
(WebCore::HTTPHeaderMap::UncommonHeader::encode const):
(WebCore::HTTPHeaderMap::UncommonHeader::decode):
(WebCore::HTTPHeaderMap::encode const):
(WebCore::HTTPHeaderMap::decode):

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::filter):
(WebCore::ResourceResponseBase::sanitizeHTTPHeaderFields):

Source/WebKit:

  • NetworkProcess/cache/NetworkCacheCoders.cpp:

(WTF::Persistence::Coder<WebCore::HTTPHeaderMap>::decode):

9:46 AM Changeset in webkit [232963] by youenn@apple.com
  • 21 edits
    4 adds in trunk

Network Preflights do not show in WebInspector after moving CORS checks to NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=186312
<rdar://problem/40495434>

Reviewed by Chris Dumez.

Source/WebCore:

Test: http/wpt/fetch/inspect-preflight.html

No change of behavior in regular conditions.
All intermediate requests/responses are now buffered in NetworkProcess if Web inspector shows up.
Add NetworkLoadInformation and NetworkIntermediateLoadInformation for that purpose.

Add a new LoaderStrategy method to grab this information from NetworkProcess synchronously.
Add Internals API for testing the storage by the Network Process and the sending to WebProcess.

  • WebCore.xcodeproj/project.pbxproj:
  • loader/LoaderStrategy.cpp:

(WebCore::LoaderStrategy::intermediateLoadInformationFromResourceLoadIdentifier):

  • loader/LoaderStrategy.h:
  • platform/network/NetworkLoadInformation.h: Added.

(WebCore::NetworkTransactionInformation::encode const):
(WebCore::NetworkTransactionInformation::decode):

  • testing/Internals.cpp:

(WebCore::Internals::setCaptureExtraNetworkLoadMetricsEnabled):
(WebCore::Internals::ongoingLoadDescriptions):

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

Source/WebKit:

Add buffering of all request/response of a given load, including redirections and preflights.
This buffering is switched on/off by a boolean which is switched on in case Web Inspector is launched.

Buffering is done in NetworkLoadChecker.
We add ways to retrieve preflight information from NetworkCORSPreflightChecker.

Implement LoaderStrategy new methods through sync IPC.

  • NetworkProcess/NetworkCORSPreflightChecker.cpp:

(WebKit::NetworkCORSPreflightChecker::NetworkCORSPreflightChecker):
(WebKit::NetworkCORSPreflightChecker::startPreflight):
(WebKit::NetworkCORSPreflightChecker::willPerformHTTPRedirection):
(WebKit::NetworkCORSPreflightChecker::didReceiveResponseNetworkSession):
(WebKit::NetworkCORSPreflightChecker::didCompleteWithError):
(WebKit::NetworkCORSPreflightChecker::takeInformation):

  • NetworkProcess/NetworkCORSPreflightChecker.h:
  • NetworkProcess/NetworkConnectionToWebProcess.h:

(WebKit::NetworkConnectionToWebProcess::takeNetworkLoadInformationRequest):
(WebKit::NetworkConnectionToWebProcess::takeNetworkLoadIntermediateInformation):
(WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformation):
(WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformationMetrics):
(WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformationResponse): Deleted.

  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::NetworkLoadChecker):
(WebKit::NetworkLoadChecker::check):
(WebKit::NetworkLoadChecker::checkRedirection):
(WebKit::NetworkLoadChecker::checkResponse):
(WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
(WebKit::NetworkLoadChecker::storeRedirection):

  • NetworkProcess/NetworkLoadChecker.h:

(WebKit::NetworkLoadChecker::takeNetworkLoadInformation):

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::willSendRedirectedRequest):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):

  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::PingLoad):

  • Scripts/webkit/messages.py:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::intermediateLoadInformationFromResourceLoadIdentifier):

  • WebProcess/Network/WebLoaderStrategy.h:

LayoutTests:

  • http/wpt/fetch/inspect-preflight-expected.txt: Added.
  • http/wpt/fetch/inspect-preflight.html: Added.
  • http/wpt/fetch/resources/preflight.py: Added.
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
8:55 AM Changeset in webkit [232962] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

MAP_JIT is not present for minimal simulator builds
https://bugs.webkit.org/show_bug.cgi?id=186608

Reviewed by Darin Adler.

  • Configurations/WebContent-iOS-minimalsimulator.entitlements:
8:37 AM Changeset in webkit [232961] by graouts@webkit.org
  • 2 edits in trunk/LayoutTests

Layout Test imported/mozilla/css-animations/test_animation-cancel.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=184011

Unreviewed.

This test should pass reliably as of r232960 thanks to the fix to webkit.org/b/183821.

8:33 AM Changeset in webkit [232960] by graouts@webkit.org
  • 8 edits in trunk

[Web Animations] Make imported/mozilla/css-transitions/test_animation-cancel.html pass reliably
https://bugs.webkit.org/show_bug.cgi?id=183821
<rdar://problem/40997034>

Reviewed by Dean Jackson.

LayoutTests/imported/mozilla:

Mark a progression in the Mozilla CSS Transitions tests.

  • css-transitions/test_animation-cancel-expected.txt:

Source/WebCore:

If an element gets a "display: none" style RenderTreeUpdater::tearDownRenderers() will be called with a RendererUpdateCancelingAnimations
teardown type on all of its children. We need to ensure all declarative animations, and only those since regular Web Animations should be
kept active regardless of their target's style, are canceled in this situation.

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::cancelDeclarativeAnimationsForElement):

  • animation/AnimationTimeline.h:
  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::tearDownRenderers):

LayoutTests:

This test now passes reliably.

7:02 AM Changeset in webkit [232959] by ddkilzer@apple.com
  • 4 edits in trunk/Source/WebCore

Add logging when splashboardd enables WebThread
<https://webkit.org/b/186793>
<rdar://problem/41213255>

Reviewed by Daniel Bates.

  • platform/RuntimeApplicationChecks.h:

(WebCore::IOSApplication::isSplashBoardd): Add declaration.

  • platform/cocoa/RuntimeApplicationChecksCocoa.mm:

(WebCore::IOSApplication::isSplashBoardd): Add implementation.

  • platform/ios/wak/WebCoreThread.mm:

(WebThreadEnable): Call RELEASE_LOG_FAULT() if this is called by
splashboardd.

5:05 AM Changeset in webkit [232958] by magomez@igalia.com
  • 4 edits in trunk/Source/WebCore

[GTK][WPE][Nicosia] Add environment variable to enable threaded rendering and set the number of painting threads
https://bugs.webkit.org/show_bug.cgi?id=186801

Reviewed by Carlos Garcia Campos.

Add and environment variable to enable the usage of the threaded renderer and define the number
of painting threads.

No new tests.

  • platform/graphics/nicosia/NicosiaPaintingEngine.cpp:

(Nicosia::PaintingEngine::create):

  • platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp:

(Nicosia::PaintingEngineThreaded::PaintingEngineThreaded):

  • platform/graphics/nicosia/NicosiaPaintingEngineThreaded.h:
3:35 AM Changeset in webkit [232957] by rmorisset@apple.com
  • 2 edits in trunk/Tools

[WSL] Improving the typing rules

Rubberstamped by Filip Pizlo.

12:20 AM Changeset in webkit [232956] by youenn@apple.com
  • 12 edits in trunk

RTCRtpSender.replaceTrack(null) ends current track
https://bugs.webkit.org/show_bug.cgi?id=184911
<rdar://problem/40758138>

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/RTCRtpSender-replaceTrack-expected.txt:

Source/WebCore:

Before the patch, when replacing the sender track by null, the previous track was stopped.
Instead of doing that, the track now stays alive and it is the realtime source that is stopped.
This ensures that the data is no longer sent while the track can still be used elsewhere.

Covered by updated and rebased tests.

  • Modules/mediastream/PeerConnectionBackend.h:
  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::addTransceiver):
(WebCore::RTCPeerConnection::enqueueReplaceTrackTask):
(WebCore::RTCPeerConnection::replaceTrack):

  • Modules/mediastream/RTCPeerConnection.h:
  • Modules/mediastream/RTCRtpSender.cpp:

(WebCore::RTCRtpSender::replaceTrack):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::updateTrackSource):
(WebCore::LibWebRTCPeerConnectionBackend::replaceTrack):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:

LayoutTests:

Added checks for readyState to ensure the track remains live.
Split the main test into several tests to ease readability.

  • webrtc/video-replace-track-to-null-expected.txt:
  • webrtc/video-replace-track-to-null.html:
12:14 AM Changeset in webkit [232955] by rmorisset@apple.com
  • 2 edits
    6 adds in trunk/Tools

[WSL] Snapshot of the elements of the spec

Rubberstamped by Filip Pizlo.

Jun 18, 2018:

11:58 PM Changeset in webkit [232954] by keith_miller@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

JSImmutableButterfly should assert m_header is adjacent to the data
https://bugs.webkit.org/show_bug.cgi?id=186795

Reviewed by Saam Barati.

  • runtime/JSImmutableButterfly.cpp:
  • runtime/JSImmutableButterfly.h:
6:34 PM Changeset in webkit [232953] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix the build...

  • runtime/JSArray.cpp:

(JSC::JSArray::tryCreateUninitializedRestricted):

6:27 PM Changeset in webkit [232952] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, remove bad assertion.

  • runtime/JSArray.cpp:

(JSC::JSArray::tryCreateUninitializedRestricted):

4:53 PM Changeset in webkit [232951] by keith_miller@apple.com
  • 12 edits
    1 add in trunk

Properly zero unused property storage offsets
https://bugs.webkit.org/show_bug.cgi?id=186692

Reviewed by Filip Pizlo.

JSTests:

  • stress/butterfly-zero-unused-butterfly-properties.js: Added.

Source/JavaScriptCore:

Since the concurrent GC might see a property slot before the mutator has actually
stored the value there, we need to ensure that slot doesn't have garbage in it.

Right now when calling constructConvertedArrayStorageWithoutCopyingElements
or creating a RegExp matches array, we never cleared the unused
property storage. ObjectIntializationScope has also been upgraded
to look for our invariants around property storage. Additionally,
a new assertion has been added to check for JSValue() when adding
a new property.

We used to put undefined into deleted property offsets. To
make things simpler, this patch causes us to store JSValue() there
instead.

Lastly, this patch fixes an issue where we would initialize the
array storage of RegExpMatchesArray twice. First with 0 and
secondly with the actual result. Now we only zero memory between
vector length and public length.

  • runtime/Butterfly.h:

(JSC::Butterfly::offsetOfVectorLength):

  • runtime/ButterflyInlines.h:

(JSC::Butterfly::tryCreateUninitialized):
(JSC::Butterfly::createUninitialized):
(JSC::Butterfly::tryCreate):
(JSC::Butterfly::create):
(JSC::Butterfly::createOrGrowPropertyStorage):
(JSC::Butterfly::createOrGrowArrayRight):
(JSC::Butterfly::growArrayRight):
(JSC::Butterfly::resizeArray):

  • runtime/JSArray.cpp:

(JSC::JSArray::tryCreateUninitializedRestricted):
(JSC::createArrayButterflyInDictionaryIndexingMode): Deleted.

  • runtime/JSArray.h:

(JSC::tryCreateArrayButterfly):

  • runtime/JSObject.cpp:

(JSC::JSObject::createArrayStorageButterfly):
(JSC::JSObject::constructConvertedArrayStorageWithoutCopyingElements):
(JSC::JSObject::deleteProperty):
(JSC::JSObject::shiftButterflyAfterFlattening):

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

(JSC::JSObject::prepareToPutDirectWithoutTransition):

  • runtime/ObjectInitializationScope.cpp:

(JSC::ObjectInitializationScope::verifyPropertiesAreInitialized):

  • runtime/ObjectInitializationScope.h:

(JSC::ObjectInitializationScope::release):

  • runtime/RegExpMatchesArray.h:

(JSC::tryCreateUninitializedRegExpMatchesArray):
(JSC::createRegExpMatchesArray):

  • runtime/Butterfly.h:

(JSC::Butterfly::offsetOfVectorLength):

  • runtime/ButterflyInlines.h:

(JSC::Butterfly::tryCreateUninitialized):
(JSC::Butterfly::createUninitialized):
(JSC::Butterfly::tryCreate):
(JSC::Butterfly::create):
(JSC::Butterfly::createOrGrowPropertyStorage):
(JSC::Butterfly::createOrGrowArrayRight):
(JSC::Butterfly::growArrayRight):
(JSC::Butterfly::resizeArray):

  • runtime/JSArray.cpp:

(JSC::JSArray::tryCreateUninitializedRestricted):
(JSC::createArrayButterflyInDictionaryIndexingMode): Deleted.

  • runtime/JSArray.h:

(JSC::tryCreateArrayButterfly):

  • runtime/JSObject.cpp:

(JSC::JSObject::createArrayStorageButterfly):
(JSC::JSObject::constructConvertedArrayStorageWithoutCopyingElements):
(JSC::JSObject::deleteProperty):
(JSC::JSObject::shiftButterflyAfterFlattening):

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

(JSC::JSObject::prepareToPutDirectWithoutTransition):

  • runtime/ObjectInitializationScope.cpp:

(JSC::ObjectInitializationScope::verifyPropertiesAreInitialized):

  • runtime/RegExpMatchesArray.cpp:

(JSC::createEmptyRegExpMatchesArray):

  • runtime/RegExpMatchesArray.h:

(JSC::tryCreateUninitializedRegExpMatchesArray):
(JSC::createRegExpMatchesArray):

3:26 PM Changeset in webkit [232950] by wilander@apple.com
  • 2 edits in trunk/Source/WebKit

Resource Load Statistics: Make sure to call callbacks even if there is no store (test infrastructure)
https://bugs.webkit.org/show_bug.cgi?id=186777
<rdar://problem/41216181>

Reviewed by Chris Dumez.

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreStatisticsUpdateCookiePartitioning):
(WKWebsiteDataStoreSetStatisticsShouldPartitionCookiesForHost):
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStore):
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):

3:14 PM Changeset in webkit [232949] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Better pack ResourceRequest
https://bugs.webkit.org/show_bug.cgi?id=186717

Reviewed by Darin Adler.

Better pack ResourceRequest to reduce its size from 240 to 232 bytes
on Mac.

  • platform/network/ResourceRequestBase.h:
2:46 PM Changeset in webkit [232948] by Chris Dumez
  • 6 edits in trunk

Crash under WebProcessPool::networkProcessFailedToLaunch():
https://bugs.webkit.org/show_bug.cgi?id=186784
<rdar://problem/33535377>

Reviewed by Brady Eidson.

Source/WebKit:

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(+[WKProcessPool _allProcessPoolsForTesting]):
Add SPI to retrieve all WebProcessPool for testing purposes.

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::clearCallbackStates):
Make iteration over completion handlers robust against completion handlers
getting removed while we iterate.

(WebKit::NetworkProcessProxy::didClose):
Ref the WebProcessPool (which keeps the NetworkProcessProxy alive too)
as several calls within this method might cause the WebProcessPool /
NetworkProcessProxy to get destroyed.

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:

(TEST):

2:45 PM Changeset in webkit [232947] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Implement IPC throttling to keep the main thread responsive when a process misbehaves
https://bugs.webkit.org/show_bug.cgi?id=186607

Reviewed by Geoffrey Garen.

Implement IPC throttling to keep the main thread responsive when a process misbehaves.
Instead of doing one main runloop dispatch per incoming message, we now do a single
runloop dispatch and process incoming messages in batch. We put a limit on the number
of messages to be processed in a batch (600). If the queue is larger that this limit,
we'll schedule a 0-timer to process remaining messages, giving the main runloop a chance
to process other events. Additionally, if an IPC connection keeps hitting this maximum
batch size limit, we implement back off and we'll further decrease the number of messages
we process in each batch (going as low as 60). This keeps Safari responsive enough to
allow the user to close the bad tab (even on older devices such as iPhone 5s).

Finally, if the incoming message queue becomes too large (50000), we go one step further
and kill the IPC connection in order to maintain performance / battery life.

Every time we apply throttling or terminate a connection due to throttling, we do a
RELEASE_LOG_ERROR() with useful information in order to help diagnose potential issues
in the future.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::Connection):
(IPC::Connection::enqueueIncomingMessage):
(IPC::Connection::MessagesThrottler::MessagesThrottler):
(IPC::Connection::MessagesThrottler::scheduleMessagesDispatch):
(IPC::Connection::MessagesThrottler::numberOfMessagesToProcess):
(IPC::Connection::dispatchIncomingMessages):

  • Platform/IPC/Connection.h:
  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::Connection::kill):

2:20 PM Changeset in webkit [232946] by graouts@webkit.org
  • 25 edits in trunk

[Web Animations] Implement "Starting of transitions" section from CSS Transitions
https://bugs.webkit.org/show_bug.cgi?id=186517
<rdar://problem/41000798>

Reviewed by Dean Jackson.

LayoutTests/imported/mozilla:

Mark some progressions in the Mozilla CSS Animations and CSS Transitions tests.

  • css-transitions/test_animation-cancel-expected.txt:
  • css-transitions/test_animation-ready-expected.txt:

Source/WebCore:

We implement the whole section at https://drafts.csswg.org/css-transitions-1/#starting so that we have spec-compliant starting of CSS Transitions.
To correctly implement this we now maintain two maps of transitions for a given property, a set of running transitions (m_elementToRunningCSSTransitionByCSSPropertyID)
and a set of completed transition (m_elementToCompletedCSSTransitionByCSSPropertyID).

  • animation/AnimationTimeline.cpp:

(WebCore::removeCSSTransitionFromMap): Add a utility to remove a CSSTransition from one of the two HashMap<Element*, HashMap<CSSPropertyID, RefPtr<CSSTransition>>>
managed by AnimationTimeline (m_elementToRunningCSSTransitionByCSSPropertyID and m_elementToCompletedCSSTransitionByCSSPropertyID).
(WebCore::AnimationTimeline::animationWasRemovedFromElement): Use the new removeCSSTransitionFromMap() utility.
(WebCore::AnimationTimeline::updateCSSAnimationsForElement): We rename "oldStyle" to "currentStyle" to align with the naming used by updateCSSAnimationsForElement().
We also remove an initial check that has been pushed up to Style::TreeResolver::createAnimatedElementUpdate().
(WebCore::propertyInStyleMatchesValueForTransitionInMap): When running the steps mandated by the spec we often need to check whether a given property has a transition
in an AnimationList that matches the value used in a given RenderStyle.
(WebCore::transitionCombinedDuration): We need to compute the combined duration twice while running the steps mandated by the spec, so we have a dedicated utility.
(WebCore::transitionMatchesProperty): New utility that indicates whether a WebCore::Animation matches a given property, by virtue of targeting it directly, targeting
a shorthand for which this property is a longhand, or targeting "all".
(WebCore::AnimationTimeline::updateCSSTransitionsForElement): This is where all of the new implementation for starting transitions happens. We implement the steps
as they appear in the spec.
(WebCore::shouldBackingAnimationBeConsideredForCSSTransition): Deleted.

  • animation/AnimationTimeline.h:
  • animation/CSSAnimation.cpp:

(WebCore::CSSAnimation::syncPropertiesWithBackingAnimation): Since only CSS Animations respect the delay and duration values as parsed directly in a WebCore:Animation
object, we move code that was previously in DeclarativeAnimation::syncPropertiesWithBackingAnimation to this method. CSS Transitions set those values based on the
delay and duration parameters passed to CSSTransition::create() and computed in AnimationTimeline::updateCSSTransitionsForElement().

  • animation/CSSTransition.cpp:

(WebCore::CSSTransition::create): Since the transition's delay and duration is computed in AnimationTimeline::updateCSSTransitionsForElement(), we now require them
to be passed when creating a CSSTransition and pass those to the new setTimingProperties() function. We also expect a target style and reversing-adjusted start style,
as well as a reversing-shortening factor.
(WebCore::CSSTransition::CSSTransition):
(WebCore::CSSTransition::resolve): We need to be able to query the last style computed by a call to resolve() from AnimationTimeline::updateCSSTransitionsForElement(),
we subclass this newly-virtual WebAnimation method and clone the style after we blended the property targeted by this transition.
(WebCore::CSSTransition::setTimingProperties): Set the transition delay and duration as provided in the call to create().
(WebCore::CSSTransition::canBeListed const): Fix a crash that was found while working on this bug where we could access a null effect.
(WebCore::CSSTransition::initialize): Deleted.
(WebCore::CSSTransition::matchesBackingAnimationAndStyles const): Deleted.

  • animation/CSSTransition.h:
  • animation/DeclarativeAnimation.cpp:

(WebCore::DeclarativeAnimation::syncPropertiesWithBackingAnimation): This virtual method now has an empty definition since the timing properties are now only set
for CSSAnimation.

  • animation/KeyframeEffectReadOnly.cpp:

(WebCore::KeyframeEffectReadOnly::stylesWouldYieldNewCSSTransitionsBlendingKeyframes const): Deleted.

  • animation/KeyframeEffectReadOnly.h:
  • animation/WebAnimation.h:
  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::AnimationPropertyWrapperBase::canInterpolate const): Since we need to be able to determine whether some property values can be interpolated, we add a new
canInterpolate() method to the base wrapper class so the cases where we can't interpolate values (length with an "auto" type) may return false.
(WebCore::LengthPropertyWrapper::LengthPropertyWrapper): Lengths can only be interpolated if both the start and end values are not "auto".
(WebCore::LengthVariantPropertyWrapper::LengthVariantPropertyWrapper):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
(WebCore::CSSPropertyAnimation::canPropertyBeInterpolated):

  • page/animation/CSSPropertyAnimation.h:
  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::createAnimatedElementUpdate): Move a check found in both updateCSSAnimationsForElement() and updateCSSTransitionsForElement() to their
shared call site.

LayoutTests:

Implementing the CSS Transitions spec for starting transitions highlighted a couple of issues with existing tests.

  • TestExpectations: The test imported/mozilla/css-transitions/test_animation-ready.html now passes reliably.
  • animations/transition-and-animation-3-expected.txt:
  • animations/transition-and-animation-3.html: This test was mistakenly expecting a retargeted transition to pick

up from the underlying value (100px) rather than the interrupted transition's value (~0px). We update the test
to be more obvious about what it is testing and with the correct behavior per the spec.

  • transitions/background-position-transitions-expected.txt:
  • transitions/background-position-transitions.html: Shorthand properties are expected to yield a transitiong for

each shorthand property, so we update this test to check the background-position shorthand properties.

  • transitions/resources/transition-test-helpers.js: We uncovered a crash, which is not new to this patch, that forces

us to work around using the background-position longhand properties. So we work around this by reading from the shorthand
background-position property and manually parsing the value. Fixing this crash is tracked by webkit.org/b/186766.

  • transitions/transition-to-from-auto-expected.txt:
  • transitions/transition-to-from-auto.html: Update the test to check that we only yield transitions when interpolating

between non-auto values, as mandated by the spec.

2:14 PM Changeset in webkit [232945] by BJ Burg
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: TypeError: Array.prototype.sort passed bad value in NetworkTableContentView _updateSortAndFilteredEntries
https://bugs.webkit.org/show_bug.cgi?id=186787
<rdar://problem/41175680>

Reviewed by Timothy Hatcher.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype._updateSortAndFilteredEntries):

2:04 PM Changeset in webkit [232944] by n_wang@apple.com
  • 2 edits in trunk/Source/WebCore

AX: [macOS] When zoom is enabled, focus doesn't follow text cursor
https://bugs.webkit.org/show_bug.cgi?id=186697

Reviewed by Darin Adler.

Now that web process doesn't have access to NSScreen. The conversion of the
rects is wrong. Fixed this by using the right function that's available in
WebCore to get the rects.

  • editing/mac/FrameSelectionMac.mm:

(WebCore::accessibilityConvertScreenRect):

1:48 PM Changeset in webkit [232943] by youenn@apple.com
  • 12 edits in trunk

Expose RTCPeerConnectionIceEventInit constructor
https://bugs.webkit.org/show_bug.cgi?id=186770

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/RTCPeerConnectionIceEvent-constructor-expected.txt:

Updated expectation as per patch.

  • web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl-expected.txt:

Rebasing this file, changes are unrelated but test is marked as flaky.

Source/WebCore:

Add event constructor as per specification.
Add support for the url attribute.
For that purpose, we need to pipe that information from LibWebRTCMediaEndpoint
up to RTCPeerConnectionIceEvent.

Covered by rebased test.

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::fireICECandidateEvent):
(WebCore::PeerConnectionBackend::disableICECandidateFiltering):
(WebCore::PeerConnectionBackend::newICECandidate):
(WebCore::PeerConnectionBackend::doneGatheringCandidates):
(WebCore::PeerConnectionBackend::finishedRegisteringMDNSName):

  • Modules/mediastream/PeerConnectionBackend.h:
  • Modules/mediastream/RTCPeerConnectionIceEvent.cpp:

(WebCore::RTCPeerConnectionIceEvent::create):
(WebCore::RTCPeerConnectionIceEvent::RTCPeerConnectionIceEvent):

  • Modules/mediastream/RTCPeerConnectionIceEvent.h:

(WebCore::RTCPeerConnectionIceEvent::url const):

  • Modules/mediastream/RTCPeerConnectionIceEvent.idl:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::OnIceCandidate):

  • bindings/js/WebCoreBuiltinNames.h:
  • dom/EventNames.in:
1:11 PM Changeset in webkit [232942] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

SVGTransformListValues wastes 127KB of Vector capacity on nytimes.com
https://bugs.webkit.org/show_bug.cgi?id=186704

Reviewed by Said Abou-Hallawa.

SVGTransformListValues has inline capacity 1, and every SVGGraphicsElement has
a SVGSynchronizableAnimatedProperty<WebCore::SVGTransformListValues>, so the inline
capacity wastes space for every SVGGraphicsElement that doesn't have a transform (i.e.
most of them).

So make SVGTransformListValues have zero inline capacity, and set its min capacity to
2, rather than the default 16, since most transform lists are short.

  • svg/SVGTransformListValues.h:
12:28 PM Changeset in webkit [232941] by Said Abou-Hallawa
  • 3 edits
    2 adds in trunk

Document should not be mutated under SMILTimeContainer::updateAnimations()
https://bugs.webkit.org/show_bug.cgi?id=186658

Reviewed by Simon Fraser.

Source/WebCore:

To update the animation of an SVG <animate> element, we call
SVGAnimateElementBase::resetAnimatedType(). It ensures the pointer m_animator
is valid. If it animates a css property, it calls computeCSSPropertyValue()
which calls resolveStyle() via other calls. resolveStyle() may call delayed
callbacks through the destructor of PostResolutionCallbackDisabler. These
callbacks may fire events. These events may execute JS event handlers.
If one of these event handlers deletes the same SVG <animate> we animate,
we will end up calling SVGAnimateElementBase::resetAnimatedPropertyType()
of the same <animate> element. This function will delete the same m_animator
which resetAnimatedType() still holds and will use later. This code
re-entrance is unexpected and unwanted.

The fix is to disable mutating the DOM while updating the SVG animations.

Test: svg/dom/css-animate-input-foucs-crash.html

  • svg/animation/SMILTimeContainer.cpp:

(WebCore::SMILTimeContainer::updateAnimations):

LayoutTests:

  • svg/dom/css-animate-input-foucs-crash-expected.txt: Added.
  • svg/dom/css-animate-input-foucs-crash.html: Added.
12:13 PM Changeset in webkit [232940] by Wenson Hsieh
  • 2 edits in trunk/LayoutTests

fast/forms/button-set-display-flex-justifyContent-center.html is failing on macOS Mojave
https://bugs.webkit.org/show_bug.cgi?id=186776
<rdar://problem/41104962>

Fix a failing layout test by making the reference markup robust for changes to system button text color. This
system color is different in macOS Mojave, which causes this layout test to fail.

Reviewed by Beth Dakin.

  • fast/forms/button-set-display-flex-justifyContent-center-expected.html:
12:05 PM Changeset in webkit [232939] by Michael Catanzaro
  • 3 edits
    2 copies
    1 add
    1 delete in trunk/LayoutTests

Unreviewed GTK test gardening

  • TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/css/WOFF2/directory-knowntags-001-expected.png: Renamed from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/woff2/directory-knowntags-001-expected.png.
  • platform/gtk/imported/w3c/web-platform-tests/css/WOFF2/tabledata-glyf-origlength-003-expected.png: Renamed from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/woff2/tabledata-glyf-origlength-003-expected.png.
12:01 PM Changeset in webkit [232938] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

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

This patch broke macOS 32-bit build (Requested by n_wang on
#webkit).

Reverted changeset:

"AX: [macOS] When zoom is enabled, focus doesn't follow text
cursor"
https://bugs.webkit.org/show_bug.cgi?id=186697
https://trac.webkit.org/changeset/232935

11:54 AM Changeset in webkit [232937] by jiewen_tan@apple.com
  • 4 edits in trunk/Source

Add a graceful exit for AuthenticationManager::initializeConnection
https://bugs.webkit.org/show_bug.cgi?id=186632
<rdar://problem/41041033>

Reviewed by Brent Fulgham.

Source/WebKit:

Add a graceful exit for AuthenticationManager::initializeConnection when the provided IPC connection
is null or the underlying xpc connection is null.

  • Shared/Authentication/cocoa/AuthenticationManagerCocoa.mm:

(WebKit::AuthenticationManager::initializeConnection):

Source/WTF:

  • wtf/spi/darwin/XPCSPI.h:
11:49 AM Changeset in webkit [232936] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk/Source/JavaScriptCore

Share structure across instances of classes exported through the ObjC API
https://bugs.webkit.org/show_bug.cgi?id=186579
<rdar://problem/40969212>

Patch by Tadeu Zagallo <Tadeu Zagallo> on 2018-06-18
Reviewed by Saam Barati.

A new structure was being created for each instance of exported ObjC
classes due to setting the prototype in the structure for every object,
since prototype transitions are not cached by the structure. Cache the
Structure in the JSObjcClassInfo to avoid the transition.

  • API/JSWrapperMap.mm:

(-[JSObjCClassInfo wrapperForObject:inContext:]):
(-[JSObjCClassInfo structureInContext:]):

  • API/tests/JSWrapperMapTests.h: Added.
  • API/tests/JSWrapperMapTests.mm: Added.

(+[JSWrapperMapTests testStructureIdentity]):
(runJSWrapperMapTests):

  • API/tests/testapi.mm:

(testObjectiveCAPIMain):

11:31 AM Changeset in webkit [232935] by n_wang@apple.com
  • 2 edits in trunk/Source/WebCore

AX: [macOS] When zoom is enabled, focus doesn't follow text cursor
https://bugs.webkit.org/show_bug.cgi?id=186697

Reviewed by Darin Adler.

Now that web process doesn't have access to NSScreen. The conversion of the
rects is wrong. Fixed this by using the right function that's available in
WebCore to convert the rects.

  • editing/mac/FrameSelectionMac.mm:

(WebCore::accessibilityConvertScreenRect):

10:55 AM Changeset in webkit [232934] by msaboff@apple.com
  • 16 edits in trunk

Support Unicode 11 in RegExp
https://bugs.webkit.org/show_bug.cgi?id=186685

Reviewed by Mark Lam.

JSTests:

  • test262/config.yaml: Removed from skip list Unicode 11 property tests as they

are now supported. Added new bug reference for still failing
test/built-ins/RegExp/property-escapes/character-class.js test.

  • test262/test/built-ins/RegExp/property-escapes/unsupported-binary-properties.js:

Removed "Extended_Pictographic" from unsupported properties since Unicode 11 now supports them.

Source/JavaScriptCore:

Updated the UCD tables used to generate RegExp property tables to version 11.0.

  • Scripts/generateYarrUnicodePropertyTables.py:
  • ucd/CaseFolding.txt:
  • ucd/DerivedBinaryProperties.txt:
  • ucd/DerivedCoreProperties.txt:
  • ucd/DerivedNormalizationProps.txt:
  • ucd/PropList.txt:
  • ucd/PropertyAliases.txt:
  • ucd/PropertyValueAliases.txt:
  • ucd/ScriptExtensions.txt:
  • ucd/Scripts.txt:
  • ucd/UnicodeData.txt:
  • ucd/emoji-data.txt:
10:30 AM Changeset in webkit [232933] by youenn@apple.com
  • 10 edits
    3 adds in trunk

Validate Cross-Origin-Resource-Policy for resources cached in the MemoryCache
https://bugs.webkit.org/show_bug.cgi?id=186639
<rdar://problem/41106984>

Reviewed by Geoffrey Garen.

Source/WebCore:

Add a method to check CORP.
Make use of it to validate any memory cached resource.
Whitelist CORP header so that it is not filtered out by Network Process.

Test: http/wpt/cross-origin-resource-policy/image-in-iframe-loads.html

  • loader/CrossOriginAccessControl.cpp:

(WebCore::shouldCrossOriginResourcePolicyCancelLoad):
(WebCore::validateCrossOriginResourcePolicy):

  • loader/CrossOriginAccessControl.h:
  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):

  • platform/network/ResourceResponseBase.cpp:

(WebCore::isSafeRedirectionResponseHeader):
(WebCore::isSafeCrossOriginResponseHeader):

Source/WebKit:

Make use of WebCore method to check CORP.

  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::validateResponse):

  • NetworkProcess/NetworkLoadChecker.h:

LayoutTests:

  • http/wpt/cross-origin-resource-policy/image-in-iframe-loads-expected.txt: Added.
  • http/wpt/cross-origin-resource-policy/image-in-iframe-loads.html: Added.
  • http/wpt/cross-origin-resource-policy/resources/iframeImage.html: Added.
  • http/wpt/cross-origin-resource-policy/resources/image.py:

(main):

8:55 AM Changeset in webkit [232932] by clopez@igalia.com
  • 8 edits in trunk/Source

[WTF] Remove workarounds needed to support libstdc++-4
https://bugs.webkit.org/show_bug.cgi?id=186762

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

Revert r226299, r226300 r226301 and r226302.

  • API/tests/TypedArrayCTest.cpp:

(assertEqualsAsNumber):

Source/WebCore:

Revert r226299, r226300 r226301 and r226302.

No new tests, no change in behaviour.

  • platform/graphics/FontSelectionAlgorithm.h:

(WebCore::FontSelectionValue::clampFloat):

  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::MediaPlayerPrivateAVFoundationCF::currentMediaTime const):

  • platform/graphics/win/UniscribeController.cpp:

(WebCore::UniscribeController::shapeAndPlaceItem):

Source/WTF:

Revert r226299, r226300 r226301 and r226302-

  • wtf/StdLibExtras.h:
8:40 AM Changeset in webkit [232931] by commit-queue@webkit.org
  • 4 edits in trunk/Source

[Threaded paintingEngine] Fix rendering glitches
https://bugs.webkit.org/show_bug.cgi?id=186764

Patch by Karl Leplat <karl.leplat_ext@softathome.com> on 2018-06-18
Reviewed by Žan Doberšek.

Source/WebCore:

  • platform/graphics/nicosia/NicosiaPaintingEngineBasic.cpp:

(Nicosia::PaintingEngineBasic::paint):
To keep backwards compatibility with no multi-threaded,
we call Nicosia::Buffer functions beginPainting() and completePainting().

Source/WebKit:

  • Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp:

(WebKit::CoordinatedBackingStoreTile::swapBuffers):
We call Nicosia::Buffer function waitUntilPaintingComplete()
in order to synchronize of using Nicosia:buffer between MainThread
and ThreadedCompositor.

7:00 AM Changeset in webkit [232930] by zandobersek@gmail.com
  • 3 edits in trunk/Tools

[webkitpy] WPTRunner should remove any metadata content before (re)generating it
https://bugs.webkit.org/show_bug.cgi?id=186755

Reviewed by Carlos Garcia Campos.

WPTRunner generates the WPT-compliant metadata content before each test
run. Before it does so, it should remove the complete target directory
for this metadata, allowing any change in the expectations JSON to be
immediately reflected.

For example, if a test failure expectation is removed, the related .ini
metadata file is not generated anymore, but the stale .ini file isn't
removed from the current metadata directory. To avoid this, purging
the metadata directory and regenerating it from scratch should be done
for each test run.

  • Scripts/webkitpy/w3c/wpt_runner.py:

(WPTRunner._generate_metadata_directory):

  • Scripts/webkitpy/w3c/wpt_runner_unittest.py:

(WPTRunnerTest.test_generate_metadata_directory):

6:43 AM Changeset in webkit [232929] by tpopela@redhat.com
  • 2 edits in trunk/Source/WebCore

Properly check the sscanf return valua
https://bugs.webkit.org/show_bug.cgi?id=186757

Reviewed by Carlos Garcia Campos.

Check if we matched anything and if we matched the expected amount of
data.

  • page/linux/ResourceUsageThreadLinux.cpp:

(WebCore::cpuPeriod):

6:35 AM Changeset in webkit [232928] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

[GTK] Wrong variable used in RenderThemeGtk
https://bugs.webkit.org/show_bug.cgi?id=186756

Patch by Tomas Popela <tpopela@redhat.com> on 2018-06-18
Reviewed by Carlos Garcia Campos.

Use SliderThumbHorizontalPart instead of SliderHorizontalPart.

  • rendering/RenderThemeGtk.cpp:

(WebCore::RenderThemeGtk::adjustSliderThumbSize const):

3:45 AM Changeset in webkit [232927] by zandobersek@gmail.com
  • 2 edits in trunk

Unreviewed GTK+ gardening. Updating the WPT expectations by removing
failure expectations for 2dcontext tests covering CSS HSL/HSLA color
parsing and createImageBitmap() API that are nowadays passing.

  • WebPlatformTests/gtk/TestExpectations.json:
2:07 AM Changeset in webkit [232926] by zandobersek@gmail.com
  • 2 edits
    15 adds in trunk/LayoutTests

Unreviewed WPE gardening. Manage the current set of CSS3 Filters and
legacy animation engine failures. Add the necessary failure expectations
and missing layout test baselines.

  • platform/wpe/TestExpectations:
  • platform/wpe/legacy-animation-engine/css3/filters/composited-during-animation-layertree-expected.txt: Added.
  • platform/wpe/legacy-animation-engine/css3/filters/composited-during-transition-layertree-expected.txt: Added.
  • platform/wpe/legacy-animation-engine/fast/text/crash-complex-text-surrogate-expected.txt: Added.
  • platform/wpe/legacy-animation-engine/media/track/opera/track/webvtt/rendering/adhoc/cue_font_size_transition-expected.txt: Added.
1:54 AM Changeset in webkit [232925] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[GStreamer] Crash when adding in-band text track with playbin3 enabled
https://bugs.webkit.org/show_bug.cgi?id=186654

Reviewed by Xabier Rodriguez-Calvar.

Text track indexes should be relative to the total amount of
in-band text tracks. The previous code would induce the creation
of in-band text tracks with indexes relative to the total amount
of all in-band (audio, video, text) tracks.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::updateTracks):

1:40 AM Changeset in webkit [232924] by zandobersek@gmail.com
  • 3 edits
    2 adds in trunk/LayoutTests

Unreviewed WPE gardening. Updating or adding baselines for a quadruple
of tests that are otherwise failing with a text-only failure.

  • platform/wpe/fast/canvas/webgl/index-validation-with-subsequent-draws-expected.txt: Added.
  • platform/wpe/fast/canvas/webgl/webgl-draw-buffers-expected.txt:
  • platform/wpe/fullscreen/full-screen-layer-dump-expected.txt: Added.
  • platform/wpe/js/dom/constructor-length-expected.txt:
12:38 AM Changeset in webkit [232923] by zandobersek@gmail.com
  • 1 edit
    8 adds in trunk/LayoutTests

Unreviewed WPE gardening. Adding platform-specific baselines for
WebCrypto tests whose baselines were changed in r232903.

  • platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.any.worker-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.any.worker-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any.worker-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker-expected.txt: Added.
Note: See TracTimeline for information about the timeline view.