Timeline



Feb 7, 2017:

10:54 PM Changeset in webkit [211854] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

REGRESSION(r210740): [GTK] 2.15 broke embedded videos in GNOME's yelp app
https://bugs.webkit.org/show_bug.cgi?id=167887

Reviewed by Michael Catanzaro.

Update the m_renderingCanBeAccelerated when accelerated rendering state changes.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::acceleratedRenderingStateChanged):
(WebCore::MediaPlayerPrivateGStreamerBase::createVideoSink):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
10:41 PM Changeset in webkit [211853] by Carlos Garcia Campos
  • 7 edits in trunk/Source/WebCore

[GTK] Handle extended colors in cairo and texture mapper backends
https://bugs.webkit.org/show_bug.cgi?id=167943

Reviewed by Michael Catanzaro.

Fixes: css3/color/backgrounds-and-borders.html

css3/color/box-shadows.html
css3/color/canvas.html
css3/color/composited-solid-backgrounds.html
css3/color/text.html

  • platform/graphics/Color.cpp:

(WebCore::premultipliedARGBFromColor): Handle the case of color being extended.

  • platform/graphics/cairo/CairoUtilities.cpp:

(WebCore::setSourceRGBAFromColor): Ditto.

  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::fillRectWithColor): Use isVisible() instead of alpha().
(WebCore::GraphicsContext::drawEllipse): Ditto.

  • platform/graphics/gtk/ColorGtk.cpp:

(WebCore::Color::operator GdkRGBA): Handle the case of color being extended.

  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::TextureMapperGL::drawNumber): Ditto.

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::blendWithOpacity): Ditto.
(WebCore::TextureMapperLayer::paintSelf): Use isVisible() instead of alpha().
(WebCore::TextureMapperLayer::computeOverlapRegions): Ditto.

5:47 PM Changeset in webkit [211852] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

WebItemProviderPasteboard should use -registerLoadHandlersToItemProvider: when creating a new UIItemProvider
https://bugs.webkit.org/show_bug.cgi?id=167918
<rdar://problem/30382347>

Reviewed by Tim Horton.

Adopts SPI in WebItemProviderPasteboard for object types that the platform knows how to serialize. Since we use
-createObjectOfClass: to initialize data when reading off of the pasteboard, we need to match the format that
objects conforming to UIItemProviderReading will expect. Thus, for all given objects that conform to
UIItemProviderWriting, we have them register themselves to the item provider.

We register other UTI types due to the fact that PlatformPasteboardIOS does not care about the specific
pasteboard used. This should not be necessary, however, since data written to the WebItemProviderPasteboard
should never need to be read by an actual UIPasteboard. This will be refactored in a future patch to add a
special type of WebItemProviderPasteboard-aware PlatformPasteboard.

Also fixes some reference counting issues in WebItemProviderPasteboard by changing the array of _itemProviders
to be a RetainPtr.

  • platform/ios/WebItemProviderPasteboard.mm:

(-[WebItemProviderPasteboard init]):
(-[WebItemProviderPasteboard pasteboardTypes]):
(-[WebItemProviderPasteboard itemProviders]):
(-[WebItemProviderPasteboard setItemProviders:]):
(-[WebItemProviderPasteboard numberOfItems]):
(-[WebItemProviderPasteboard setItems:]):
(-[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:]):
(-[WebItemProviderPasteboard itemProviderAtIndex:]):
(-[WebItemProviderPasteboard dealloc]): Deleted.

5:25 PM Changeset in webkit [211851] by Ryan Haddad
  • 2 edits in trunk/Tools

Update flakiness dashboard configuration.
https://bugs.webkit.org/show_bug.cgi?id=167957

Reviewed by Alexey Proskuryakov.

  • TestResultServer/static-dashboards/builders.jsonp:
5:14 PM Changeset in webkit [211850] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-604.1.5.4

Tag Safari-604.1.5.4.

5:12 PM Changeset in webkit [211849] by achristensen@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Fix libwebrtcpcrtc target include path
https://bugs.webkit.org/show_bug.cgi?id=167971

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-07
Reviewed by Alex Christensen.

  • Configurations/libwebrtcpcrtc.xcconfig:
5:07 PM Changeset in webkit [211848] by achristensen@apple.com
  • 3 edits
    12 deletes in trunk/Source/ThirdParty/libwebrtc

[WebRTC] usrsctp (libwebrtc third party library) is not compiling
https://bugs.webkit.org/show_bug.cgi?id=167969

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-07
Reviewed by Alex Christensen.

Also removing .gitignore files in libwebrtc directory.

  • Source/.gitignore: Removed.
  • Source/third_party/boringssl/src/.gitignore: Removed.
  • Source/third_party/gflags/src/.gitignore: Removed.
  • Source/third_party/jsoncpp/source/.gitignore: Removed.
  • Source/third_party/libyuv/.gitignore: Removed.
  • Source/third_party/protobuf/.gitignore: Removed.
  • Source/third_party/protobuf/csharp/.gitignore: Removed.
  • Source/third_party/protobuf/ruby/.gitignore: Removed.
  • Source/third_party/usrsctp/usrsctplib/.gitignore: Removed.
  • Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_input.c:

(sctp_process_cookie_existing):

  • Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_output.c:
  • Source/tools/.gitignore: Removed.
  • Source/webrtc/.gitignore: Removed.
5:04 PM Changeset in webkit [211847] by achristensen@apple.com
  • 2 edits
    1 add in trunk/Source/ThirdParty/libwebrtc

Move webrtc/pc to own Xcode target
https://bugs.webkit.org/show_bug.cgi?id=167970

Reviewed by Youenn Fablet.

It needs to include different directories than the rest of libwebrtc.
Also moved some target names so liblibsrtp.a is changed to libsrtp.a, etc.

  • Configurations/libwebrtcpcrtc.xcconfig: Added.
  • libwebrtc.xcodeproj/project.pbxproj:
5:04 PM Changeset in webkit [211846] by Ryan Haddad
  • 2 edits in trunk/Tools

Replace a bot that has an incorrect configuration.
https://bugs.webkit.org/show_bug.cgi?id=167747

Rubber-stamped by Alexey Proskuryakov.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
4:58 PM Changeset in webkit [211845] by rniwa@webkit.org
  • 4 edits in trunk

WebContent process repeatedly jetsams on BuzzFeed's Another Round page
https://bugs.webkit.org/show_bug.cgi?id=167830
<rdar://problem/30187368>

Reviewed by Simon Fraser.

Source/WebCore:

The jetsams on https://www.buzzfeed.com/anotherround were caused by WebKit creating the backing store
for every iframe's layer on the page regardless of whether they're in the viewport or not.

This was caused by GraphicsLayerCA's setVisibleAndCoverageRects not setting CoverageRectChanged on
m_uncommittedChanges on the very first call. Fixed the bug by initializing m_uncommittedChanges
to always have CoverageRectChanged so that the coverage rect would get updated properly.

Unfortunately, no new tests since somehow the backing store doesn't get created inside the test runner.

  • platform/graphics/ca/GraphicsLayerCA.h:

(WebCore::GraphicsLayerCA):

LayoutTests:

Rebaseline the test now that some overlay repaints are avoided properly by updating the overlay coverage rects.

  • platform/ios-simulator-wk2/pageoverlay/overlay-remove-reinsert-view-expected.txt:
4:47 PM Changeset in webkit [211844] by achristensen@apple.com
  • 3 edits
    2 adds in trunk/Source/ThirdParty/libwebrtc

[libwebrtc] Move libsrtp and libyuv to own Xcode targets
https://bugs.webkit.org/show_bug.cgi?id=167966

Reviewed by Youenn Fablet.

  • Configurations/libsrtp.xcconfig: Added.
  • Configurations/libyuv.xcconfig: Added.
  • Configurations/usrsctp.xcconfig:
  • libwebrtc.xcodeproj/project.pbxproj:
4:46 PM Changeset in webkit [211843] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark mathml/opentype/large-operators-displaystyle-dynamic.html as flaky on Sierra WK2 Release.
https://bugs.webkit.org/show_bug.cgi?id=167206

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:21 PM Changeset in webkit [211842] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip http/tests/security/bypassing-cors-checks-for-extension-urls.html on ios-simulator.

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
4:07 PM Changeset in webkit [211841] by Brent Fulgham
  • 8 edits in trunk/Source/WebKit2

Correct initialization of Resource Load Statistics for use in WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=167960

Reviewed by Andy Estes.

WebKit2 starts up with different process configuration settings depending on the type of
WebView and client application. This led to two problems:

  1. Registering the shared resource load observer did not start at UIProcess launch. Instead, it was lazily initialized as messages from the various WebProcess started getting received. This is too slow for WebKitTestRunner, which needs this object to be initialized right at launch time.


A new 'registerSharedResourceLoadObserver' method was needed, so that the WebProcess can ask
the WebsiteDataStore to register a resource load observer during platform initialization.

  1. Some WebView uses do not enable WebsiteDataStore, and should not activate a resource load statistics observer.
  • UIProcess/API/APIWebsiteDataStore.cpp:

(API::WebsiteDataStore::registerSharedResourceLoadObserver): Added.

  • UIProcess/API/APIWebsiteDataStore.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitialize): If the web process is using a WebsiteDataStore,
register a resource load observer.

  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver): Added.

  • UIProcess/WebResourceLoadStatisticsStore.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::registerSharedResourceLoadObserver): Added.

  • UIProcess/WebsiteData/WebsiteDataStore.h:
2:31 PM Changeset in webkit [211840] by commit-queue@webkit.org
  • 6 edits
    2 adds in trunk

Web Inspector: gradient editor should allow switching the units of the 'angle' parameter
https://bugs.webkit.org/show_bug.cgi?id=166938

Patch by Devin Rousso <Devin Rousso> on 2017-02-07
Reviewed by Brian Burg.

Source/WebInspectorUI:

  • UserInterface/Test.html:

Add WebInspector.Gradient for new model object tests.

  • UserInterface/Models/Gradient.js:

(WebInspector.Gradient.fromString):
(WebInspector.LinearGradient):
(WebInspector.LinearGradient.fromComponents):
(WebInspector.LinearGradient.prototype.set angleValue):
(WebInspector.LinearGradient.prototype.get angleValue):
(WebInspector.LinearGradient.prototype.set angleUnits):
(WebInspector.LinearGradient.prototype.get angleUnits):
(WebInspector.LinearGradient.prototype.copy):
(WebInspector.LinearGradient.prototype.toString):
(WebInspector.LinearGradient.prototype._angleValueForUnits):
Rework part of WebInspector.LinearGradient to support units other than "deg".

  • UserInterface/Views/GradientEditor.css:

(.gradient-editor > .gradient-angle > input[type="range"]):
(.gradient-editor > .gradient-angle > input[type="number"]):

  • UserInterface/Views/GradientEditor.js:

(WebInspector.GradientEditor):
(WebInspector.GradientEditor.prototype.set gradient):
(WebInspector.GradientEditor.prototype._gradientTypeChanged):
(WebInspector.GradientEditor.prototype._angleValueChanged):
(WebInspector.GradientEditor.prototype._angleUnitsChanged):
(WebInspector.GradientEditor.prototype._angleChanged): Deleted.
Add <select> for each unit type that will change the units of the gradient.

LayoutTests:

  • inspector/model/gradient-expected.txt: Added.
  • inspector/model/gradient.html: Added.

New tests for WebInspector.Gradient.

2:29 PM Changeset in webkit [211839] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=167275

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:09 PM Changeset in webkit [211838] by andersca@apple.com
  • 3 edits in trunk/Source/WebKit2

REGRESSION (r211819): [ios-simulator] API tests Coding.WKWebView and Coding.WKWebView_SameConfiguration crashing
https://bugs.webkit.org/show_bug.cgi?id=167947

Reviewed by Tim Horton.

  • Platform/spi/ios/UIKitSPI.h:

Add SPI declaration.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):
Make sure to call setDrawsBackground here.

(-[WKWebView _populateArchivedSubviews:]):
We don't want to archive the scroll view and the fixed overlay view.

(-[WKWebView setOpaque:]):
Return early if this is called before we have a page (like from -[UIView initWithCoder:]).

1:56 PM Changeset in webkit [211837] by commit-queue@webkit.org
  • 13 edits
    4 adds in trunk

[WebRTC] LibWebRTCEndpoint should not own objects that should be destroyed on the main thread
https://bugs.webkit.org/show_bug.cgi?id=167816

Patch by Youenn Fablet <youennf@gmail.com> on 2017-02-07
Reviewed by Alex Christensen.

Source/WebCore:

Tests: webrtc/libwebrtc/release-while-creating-offer.html

webrtc/libwebrtc/release-while-getting-stats.html
webrtc/libwebrtc/release-while-setting-local-description.html

Moving AV sources, stats promises, ICE candidates from LibWebRTCEndpoint to LibWebRTCPeerConnectionBackend.
This allows ensuring these are destroyed in the main thread.

  • Modules/mediastream/MediaEndpointPeerConnection.cpp:

(WebCore::MediaEndpointPeerConnection::getStats):

  • Modules/mediastream/MediaEndpointPeerConnection.h:
  • Modules/mediastream/PeerConnectionBackend.h:
  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::getStats):

  • Modules/mediastream/RTCPeerConnection.h:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::doCreateOffer):
(WebCore::LibWebRTCMediaEndpoint::doCreateAnswer):
(WebCore::LibWebRTCMediaEndpoint::getStats):
(WebCore::LibWebRTCMediaEndpoint::StatsCollector::StatsCollector):
(WebCore::LibWebRTCMediaEndpoint::StatsCollector::OnStatsDelivered):

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:

(WebCore::LibWebRTCMediaEndpoint::addIceCandidate):
(WebCore::LibWebRTCMediaEndpoint::isStopped):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::LibWebRTCPeerConnectionBackend::~LibWebRTCPeerConnectionBackend):
(WebCore::LibWebRTCPeerConnectionBackend::getStats):
(WebCore::LibWebRTCPeerConnectionBackend::iceCandidateSucceeded):
(WebCore::LibWebRTCPeerConnectionBackend::iceCandidateFailed):
(WebCore::LibWebRTCPeerConnectionBackend::doSetLocalDescription):
(WebCore::LibWebRTCPeerConnectionBackend::doSetRemoteDescription):
(WebCore::LibWebRTCPeerConnectionBackend::doAddIceCandidate):
(WebCore::LibWebRTCPeerConnectionBackend::addAudioSource):
(WebCore::LibWebRTCPeerConnectionBackend::addVideoSource):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
  • testing/MockLibWebRTCPeerConnection.cpp:

(WebCore::MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileCreatingOffer::MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileCreatingOffer):
(WebCore::releaseInNetworkThread):
(WebCore::MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileCreatingOffer::CreateOffer):
(WebCore::MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileGettingStats::MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileGettingStats):
(WebCore::MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileGettingStats::GetStats):
(WebCore::MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileSettingDescription::MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileSettingDescription):
(WebCore::MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileSettingDescription::SetLocalDescription):
(WebCore::MockLibWebRTCPeerConnectionFactory::CreatePeerConnection):

  • testing/MockLibWebRTCPeerConnection.h:

LayoutTests:

  • webrtc/libwebrtc/release-while-creating-offer.html: Added.
  • webrtc/libwebrtc/release-while-getting-stats.html: Added.
  • webrtc/libwebrtc/release-while-setting-local-description.html: Added.
1:37 PM Changeset in webkit [211836] by mmaxfield@apple.com
  • 18 edits
    2 adds in trunk

[Win] [GTK] [EFL] Compile (but don't use, yet) the platform-independent piece of ComplexTextController
https://bugs.webkit.org/show_bug.cgi?id=167927

Reviewed by Brent Fulgham.

Source/WebCore:

This patch simply moves some functions around to enable the Win, GTK, and EFL ports to compile the
platform-independent pieces of ComplexTextController. Those parts of ComplexTextController have
some dependencies which were previously only available on the Cocoa ports; however, those
dependencies are easily created or moved from elsewhere. The next step is to populate the
ComplexTextController::collectComplexTextRunsForCharacters() function for DirectWrite and HarfBuzz.
Once that is done, UniscribeController and HarfBuzzShaper can be deleted.

Adds ComplexTextController TestWebKitAPI tests to the Win and GTK ports.

  • CMakeLists.txt: Everyone can compile the platform-independent piece of ComplexTextController.
  • PlatformEfl.cmake: Add the HarfBuzz-specific piece.
  • PlatformGTK.cmake: Ditto.
  • PlatformWin.cmake: Add the DirectWrite-specific piece.
  • platform/graphics/ComplexTextController.cpp:

(WebCore::TextLayoutDeleter::operator()): ComplexTextController shouldn't be enabled yet for Win,
GTK, or EFL.
(WebCore::FontCascade::createLayout): Ditto.
(WebCore::FontCascade::width): Ditto.
(WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun): Moved shared code to the shared
file.

  • platform/graphics/Font.cpp:

(WebCore::Font::noSynthesizableFeaturesFont): Default implementation for other ports.
(WebCore::Font::variantCapsSupportsCharacterForSynthesis): Ditto.

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::fontForCombiningCharacterSequence): Ditto.
(WebCore::FontCascade::drawEmphasisMarksForComplexText): Ditto.
(WebCore::FontCascade::createLayout): Deleted. Moved to ComplexTextController.
(WebCore::TextLayoutDeleter::operator()): Deleted. Ditto.

  • platform/graphics/FontCascade.h: fontForCombiningCharacterSequence() should exist on all ports.
  • platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:

(WebCore::FontCascade::drawEmphasisMarksForComplexText): Deleted. Shared among all ports.

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::FontCascade::drawEmphasisMarksForComplexText): Deleted. Ditto.

  • platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp: Added.

(WebCore::ComplexTextController::collectComplexTextRunsForCharacters): Empty implementation of
HarfBuzz-specific piece of ComplexTextController.

  • platform/graphics/mac/ComplexTextControllerCoreText.mm: Moved constructors to shared file.
  • platform/graphics/win/ComplexTextControllerDirectWrite.cpp: Added.

(WebCore::ComplexTextController::collectComplexTextRunsForCharacters): Empty implementation of
Direct Write-specific piece of ComplexTextController.

  • platform/graphics/win/FontWin.cpp:

(WebCore::FontCascade::drawEmphasisMarksForComplexText): Deleted. Shared among all ports.

Tools:

Enable ComplexTextController API tests on the Win and GTK ports.

  • TestWebKitAPI/PlatformGTK.cmake:
  • TestWebKitAPI/PlatformWin.cmake:
1:29 PM Changeset in webkit [211835] by achristensen@apple.com
  • 6 edits in trunk/Source

Revert r166597
https://bugs.webkit.org/show_bug.cgi?id=167951

Reviewed by Andreas Kling.

Source/WebCore:

  • platform/spi/cf/CFNetworkSPI.h:

Remove now-unused SPI declaration.

Source/WebKit2:

CFURLConnectionInvalidateConnectionCache is not commonly called and is likely causing
CFNetwork to be in a strange state when using NSURLSession and invalidating the connection
cache during authentication, especially server trust evaluation. Right now we only call
it when handling memory pressure, and it isn't worth getting into such a strange state
in a poorly tested situation. See rdar://problem/27439617

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::lowMemoryHandler):
(WebKit::NetworkProcess::initializeSandbox):
(WebKit::NetworkProcess::platformLowMemoryHandler): Deleted.

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

(WebKit::NetworkProcess::platformLowMemoryHandler): Deleted.

1:22 PM Changeset in webkit [211834] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

SigillCrashAnalyzer::analyze() should use a do-while loop instead of a lambda.
https://bugs.webkit.org/show_bug.cgi?id=167950

Reviewed by Michael Saboff.

Lambdas aren't free (apparently, the compiler isn't able to detect that the
lambda does not escape and can be inlined completely). So, use a do-while loop
instead since we don't really need a lambda here.

  • tools/SigillCrashAnalyzer.cpp:
1:02 PM Changeset in webkit [211833] by Jonathan Bedard
  • 3 edits in trunk/Tools

File index appended to previous file in svn-create-patch with SVN 1.9
https://bugs.webkit.org/show_bug.cgi?id=167903
<rdar://problem/30387395>

Reviewed by Daniel Bates.

  • Scripts/VCSUtils.pm:

(fixSVNPatchForAdditionWithHistory): Append a trailing newline character.

  • Scripts/webkitperl/VCSUtils_unittest/fixSVNPatchForAdditionWithHistory.pl: Do not remove

trailing newline character from the expected result before comparing it to the actual result.

12:56 PM Changeset in webkit [211832] by weinig@apple.com
  • 2 edits in trunk/Source/WebCore

Try to fix the windows build.

  • bindings/js/ReadableStreamDefaultController.cpp:
12:44 PM Changeset in webkit [211831] by BJ Burg
  • 2 edits in trunk/Source/WebKit2

[Mac] Web Automation: NSEventType not initialized in WebAutomationSession::platformSimulateMouseInteraction
https://bugs.webkit.org/show_bug.cgi?id=167902

Reviewed by Joseph Pecoraro.

  • UIProcess/Automation/mac/WebAutomationSessionMac.mm:

(WebKit::WebAutomationSession::platformSimulateMouseInteraction):
Initialize these to 0, which is not a valid NSEventType. Assert that
each NSEventType has a valid value before attempting to use it.

12:19 PM Changeset in webkit [211830] by commit-queue@webkit.org
  • 10 edits
    3 adds in trunk

[WebRTC] LibWebRTC WK2 network stack is not providing correct ports for ICE candidates
https://bugs.webkit.org/show_bug.cgi?id=167939

Patch by Youenn Fablet <youennf@gmail.com> on 2017-02-07
Reviewed by Sam Weinig.

Source/WebCore:

Test: webrtc/no-port-zero-in-upd-candidates.html

  • testing/MockLibWebRTCPeerConnection.cpp:

(WebCore::MockLibWebRTCPeerConnectionFactory::MockLibWebRTCPeerConnectionFactory): Adding a way to create one real PC in WTR environment.

Source/WebKit2:

AddressReady signalling was done by the WebProcess for UDP and ServerTCP as real async sockets in those case do
not send it. But the WebProcess does not have information on the port, as it is assigned by the socket factory
which is in the network process.

Fixed that bug by signalling AddressReady in the network process for UDP, ServerTCP and ClientTCP.

  • NetworkProcess/webrtc/LibWebRTCSocketClient.cpp:

(WebKit::LibWebRTCSocketClient::LibWebRTCSocketClient):
(WebKit::LibWebRTCSocketClient::signalAddressReady):

  • NetworkProcess/webrtc/LibWebRTCSocketClient.h:
  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::createUDPSocket):
(WebKit::NetworkRTCProvider::createServerTCPSocket):
(WebKit::NetworkRTCProvider::createClientTCPSocket):

  • WebProcess/Network/webrtc/LibWebRTCSocket.cpp:

(WebKit::LibWebRTCSocket::LibWebRTCSocket):
(WebKit::LibWebRTCSocket::signalAddressReady):

LayoutTests:

  • webrtc/no-port-zero-in-upd-candidates.html: Added.
  • webrtc/no-port-zero-in-upd-candidates-expected.txt: Added.
  • webrtc/video.html:
  • webrtc/video-expected.txt: Added.
12:09 PM Changeset in webkit [211829] by Matt Baker
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: DOMTreeOutline becomes collapsed after switching back to Elements tab
https://bugs.webkit.org/show_bug.cgi?id=167924

Reviewed by Brian Burg.

  • UserInterface/Views/DOMTreeOutline.js:

(WebInspector.DOMTreeOutline.prototype.update):
Drive-by fix: move variable initialization below the early return.

  • UserInterface/Views/ElementsTabContentView.js:

(WebInspector.ElementsTabContentView.prototype.shown): Deleted.
Calling this._showDOMTreeContentView isn't necessary. The base class
implementation will call shown on the content view.

12:01 PM Changeset in webkit [211828] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

The SigillCrashAnalyzer should play nicer with client code that may install its own SIGILL handler.
https://bugs.webkit.org/show_bug.cgi?id=167858

Reviewed by Michael Saboff.

Here are the scenarios that may come up:

  1. Client code did not install a SIGILL handler.
    • In this case, once we're done analyzing the SIGILL, we can just restore the default handler and return to let the OS do the default action i.e. capture a core dump.
  1. Client code installed a SIGILL handler before JSC does.
    • In this case, we will see a non-null handler returned as the old signal handler when we install ours.
    • In our signal handler, after doing our crash analysis, we should invoke the client handler to let it do its work.
    • Our analyzer can also tell us if the SIGILL source is from JSC code in general (right now, this would just mean JIT code).
    • If the SIGILL source is not from JSC, we'll just let the client handler decided how to proceed. We assume that the client handler will do the right thing (which is how the old behavior is before the SigillCrashAnalyzer was introduced).
    • If the SIGILL source is from JSC, then we know the SIGILL is an unrecoverable condition. Hence, after we have given the client handler a chance to run, we should restore the default handler and let the OS capture a core dump. This intentionally overrides whatever signal settings the client handler may have set.
  1. Client code installed a SIGILL handler after JSC does.
    • In this case, we are dependent on the client handler to call our handler after it does its work. This is compatible with the old behavior before SigillCrashAnalyzer was introduced.
    • In our signal handler, if we determine that the SIGILL source is from JSC code, then the SIGILL is not recoverable. We should then restore the default handler and get a core dump.
    • If the SIGILL source is not from JSC, we check to see if there's a client handler installed after us.
    • If we detect a client handler installed after us, we defer judgement on what to do to the client handler. Since the client handler did not uninstall itself, it must have considered itself to have recovered from the SIGILL. We'll trust the client handler and take no restore action of our own (which is compatible with old code behavior).
    • If we detect no client handler and we have no previous handler, then we should restore the default handler and get a core dump.
  • tools/SigillCrashAnalyzer.cpp:

(JSC::handleCrash):
(JSC::installCrashHandler):
(JSC::SigillCrashAnalyzer::analyze): Deleted.

11:51 AM Changeset in webkit [211827] by achristensen@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Fix libwebrtc build after r211817
https://bugs.webkit.org/show_bug.cgi?id=167944

  • Configurations/usrsctp.xcconfig:

Disable more warnings.

11:49 AM Changeset in webkit [211826] by weinig@apple.com
  • 3 edits in trunk/Source/WebCore

Update bindings tests results for additional include.

  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
11:47 AM Changeset in webkit [211825] by weinig@apple.com
  • 2 edits in trunk/Source/WebCore

Try to fix the windows build.

  • bindings/js/JSDOMConvertNumbers.h:
11:44 AM Changeset in webkit [211824] by weinig@apple.com
  • 2 edits in trunk/Source/WebKit2

Try to fix the EFL build.

  • WebProcess/InjectedBundle/InjectedBundle.cpp:
11:34 AM Changeset in webkit [211823] by achristensen@apple.com
  • 6 edits in trunk/Source/WebCore

Fix libwebrtc build after r211728
https://bugs.webkit.org/show_bug.cgi?id=167821

  • platform/mediastream/mac/RealtimeIncomingVideoSource.cpp:

(WebCore::RealtimeIncomingVideoSource::processNewSample):

  • platform/mediastream/mac/RealtimeOutgoingAudioSource.cpp:

(WebCore::RealtimeOutgoingAudioSource::audioSamplesAvailable):
(WebCore::RealtimeOutgoingAudioSource::sourceHasMoreMediaData): Deleted.

  • platform/mediastream/mac/RealtimeOutgoingAudioSource.h:
  • platform/mediastream/mac/RealtimeOutgoingVideoSource.cpp:

(WebCore::RealtimeOutgoingVideoSource::RealtimeOutgoingVideoSource):
(WebCore::RealtimeOutgoingVideoSource::videoSampleAvailable):
(WebCore::RealtimeOutgoingVideoSource::sourceHasMoreMediaData): Deleted.

  • platform/mediastream/mac/RealtimeOutgoingVideoSource.h:
11:15 AM Changeset in webkit [211822] by timothy_horton@apple.com
  • 1 edit
    1 delete in trunk/Source/WebCore

Remove accidentally-added (in r211409) patch reject file

  • bindings/scripts/test/JS/JSTestSerialization.cpp.rej: Removed.
10:55 AM Changeset in webkit [211821] by weinig@apple.com
  • 17 edits
    27 copies in trunk/Source/WebCore

JSDOMConvert is too big. Split it up!
https://bugs.webkit.org/show_bug.cgi?id=167806

Rubber-stamped by Geoff Garen.

Split JSDOMConvert up roughly by IDL type. Some are grouped for convenience, e.g. all the
string types are together, all the numeric types are together. Also moved helpers from
JSDOMBinding to their respective JSDOMConvertFoo header. For now, JSDOMConvert.h as an
umbrella of all the sub headers, but it will be removed, and the code generator taught
to include the right header in a subsequent patch.

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

Add new files.

  • bindings/js/IDBBindingUtilities.cpp:
  • bindings/js/IDBBindingUtilities.h:

Remove toJS that takes a std::optional<IDBKeyPath>, it was unused, and update date code
to only call valueToDate once, and pass things by reference.

  • bindings/js/JSDOMBinding.cpp:
  • bindings/js/JSDOMBinding.h:

Move most of the conversion helpers into their respective JSDOMConvertFoo header.

  • bindings/js/JSDOMConvert.h:

Leave for now, just has includes of all the broken out headers.

  • bindings/js/JSDOMConvertAny.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertBase.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertBoolean.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertBufferSource.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertCallbacks.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertDate.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
  • bindings/js/JSDOMConvertDate.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertDictionary.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertEnumeration.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertEventListener.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertIndexedDB.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertInterface.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertJSON.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertNull.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertNullable.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertNumbers.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
  • bindings/js/JSDOMConvertNumbers.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertObject.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertRecord.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertSequences.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertSerializedScriptValue.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertStrings.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
  • bindings/js/JSDOMConvertStrings.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertUnion.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertVariadic.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertWebGL.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/js/JSDOMConvertXPathNSResolver.h: Copied from Source/WebCore/bindings/js/JSDOMConvert.h.
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateParametersCheck):
Add include of JSDOMConvertVariadic.h rather than JSDOMConvert.

  • bindings/js/JSCryptoCustom.cpp:
  • bindings/js/JSCryptoOperationData.cpp:
  • bindings/js/JSImageDataCustom.cpp:
  • bindings/js/ReadableStreamDefaultController.h:
  • bindings/js/WebCoreTypedArrayController.cpp:
  • html/canvas/WebGLAny.cpp:
  • platform/mac/SerializedPlatformRepresentationMac.mm:

Add includes for specific JSDOMConvert header now that helpers have
been moved their from JSDOMBinding.h

10:53 AM Changeset in webkit [211820] by weinig@apple.com
  • 2 edits in trunk/Source/WebCore

Remove unnecessary exports on inline functions. They were causing build failures
with some compilers.

  • Modules/mediasource/SampleMap.h:

(WebCore::PresentationOrderSampleMap::begin):
(WebCore::PresentationOrderSampleMap::end):
(WebCore::PresentationOrderSampleMap::rbegin):
(WebCore::PresentationOrderSampleMap::rend):
(WebCore::DecodeOrderSampleMap::begin):
(WebCore::DecodeOrderSampleMap::end):
(WebCore::DecodeOrderSampleMap::rbegin):
(WebCore::DecodeOrderSampleMap::rend):
(WebCore::SampleMap::sizeInBytes):
(WebCore::SampleMap::decodeOrder):
(WebCore::SampleMap::presentationOrder):
(WebCore::SampleMap::addRange):
(WebCore::SampleMap::SampleMap): Deleted.

10:42 AM Changeset in webkit [211819] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

-[WKWebView encodeWithCoder:] needs to call super
https://bugs.webkit.org/show_bug.cgi?id=167945
rdar://problem/29777668

Reviewed by Geoffrey Garen.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView encodeWithCoder:]):
Call super.

10:24 AM Changeset in webkit [211818] by Yusuke Suzuki
  • 8 edits
    1 delete in trunk

Unreviewed, manual roll out of r211777
https://bugs.webkit.org/show_bug.cgi?id=167457

Source/JavaScriptCore:

  • jsc.cpp:

(GlobalObject::moduleLoaderImportModule):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncImportModule):

Source/WebCore:

  • bindings/js/ScriptModuleLoader.cpp:

(WebCore::ScriptModuleLoader::importModule):

LayoutTests:

Later, I'll reland it with the deterministic tests.

  • inspector/controller/resources/cappuccino.js: Removed.
  • inspector/controller/resources/cocoa.js: Removed.
  • inspector/controller/resources/drink.js: Removed.
  • inspector/controller/runtime-controller-expected.txt:
  • inspector/controller/runtime-controller.html:
10:24 AM Changeset in webkit [211817] by achristensen@apple.com
  • 5 edits in trunk/Source/ThirdParty/libwebrtc

build usrsctp with Xcode
https://bugs.webkit.org/show_bug.cgi?id=167944

Reviewed by Youenn Fablet.

  • Configurations/usrsctp.xcconfig:
  • Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_pcb.c:
  • Source/third_party/usrsctp/usrsctplib/usrsctplib/user_atomic.h:
  • libwebrtc.xcodeproj/project.pbxproj:
10:08 AM Changeset in webkit [211816] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[Soup] WebKitSoupRequestInputStream can still leave requests unfinished after r211773
https://bugs.webkit.org/show_bug.cgi?id=167929

Reviewed by Michael Catanzaro.

The while loop to process the pending data requests was not a good idea, because having a new pending request
doesn't mean we have more data available, but that more data was requested.

  • WebProcess/soup/WebKitSoupRequestInputStream.cpp:

(webkitSoupRequestInputStreamPendingReadAsyncComplete): Process only one request if needed.

10:04 AM Changeset in webkit [211815] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[GStreamer] Deadlock when media player is destroyed
https://bugs.webkit.org/show_bug.cgi?id=167861

Reviewed by Michael Catanzaro.

The problem is that we are calling notifyOne() for the draw mutex without taking the lock.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::repaint):

9:59 AM Changeset in webkit [211814] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

MediaSourceClientGStreamerMSE: wrap FastMalloc-ed memory into pipeline-bound GstBuffers
https://bugs.webkit.org/show_bug.cgi?id=167928

Reviewed by Xabier Rodriguez-Calvar.

The buffers created in MediaSourceClientGStreamerMSE can be large enough in size
that repetitive allocations can cause larger heap fragmentation in different libc
allocators. To avoid that occurrence, we should simply use FastMalloc to allocate
memory for these buffers.

  • platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:

(WebCore::MediaSourceClientGStreamerMSE::append):

9:38 AM WebKitGTK/2.14.x edited by Michael Catanzaro
(diff)
9:36 AM WebKitGTK/2.14.x edited by Michael Catanzaro
Propose more merges… (diff)
9:20 AM Changeset in webkit [211813] by commit-queue@webkit.org
  • 3 edits in trunk

[GTK][Efl] Do not require LibXslt if XSLT is disabled
https://bugs.webkit.org/show_bug.cgi?id=167931

This fixes build with --no-xslt, when the libxslt dev files are not installed.

Patch by Olivier Blin <Olivier Blin> on 2017-02-07
Reviewed by Michael Catanzaro.

  • Source/cmake/OptionsEfl.cmake:
  • Source/cmake/OptionsGTK.cmake:
8:59 AM Changeset in webkit [211812] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[webkitdirs] remove unused host_processor variable in determineArchitecture()
https://bugs.webkit.org/show_bug.cgi?id=167936

Patch by Olivier Blin <Olivier Blin> on 2017-02-07
Reviewed by Michael Catanzaro.

  • Scripts/webkitdirs.pm:

(determineArchitecture):
The host_processor variable in webkitdirs.pm's determineArchitecture() is not used anymore,
since r195083.

8:14 AM Changeset in webkit [211811] by commit-queue@webkit.org
  • 5 edits
    1 add
    1 delete in trunk

Use a JSON file to define which WPT files/folders to import
https://bugs.webkit.org/show_bug.cgi?id=167923

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-07
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • resources/ImportExpectations: Removed.
  • resources/import-expectations.json: Added.

Tools:

  • Scripts/webkitpy/w3c/test_downloader.py:

(TestDownloader.init):
(TestDownloader._init_paths_from_expectations):

  • Scripts/webkitpy/w3c/test_importer.py:

(parse_args):

  • Scripts/webkitpy/w3c/test_importer_unittest.py:
6:50 AM Changeset in webkit [211810] by matthew_hanson@apple.com
  • 2 edits in branches/safari-604.1.5-branch/Source/WebKit2

Merge r211752. rdar://problem/30119091

6:50 AM Changeset in webkit [211809] by matthew_hanson@apple.com
  • 3 edits
    2 adds in branches/safari-604.1.5-branch

Merge r211659. rdar://problem/30386165

6:49 AM Changeset in webkit [211808] by matthew_hanson@apple.com
  • 2 edits in branches/safari-604.1.5-branch/Source/JavaScriptCore

Merge r211630. rdar://problem/30357032

6:30 AM Changeset in webkit [211807] by commit-queue@webkit.org
  • 7 edits
    4 copies
    1 move
    6 adds
    3 deletes in trunk

[Modern Media Controls] Handle media durations of an hour or more gracefully
https://bugs.webkit.org/show_bug.cgi?id=167882
<rdar://problem/29601260>

Patch by Antoine Quint <Antoine Quint> on 2017-02-07
Reviewed by Eric Carlson.

Source/WebCore:

We add a new "labelsMayDisplayTimesOverAnHour" to TimeControl so that time labels
to the left and right of the scrubber may have extra room to display to account for
the extra "xx:" characters that may appear. We don't lay the time out dynamically
such that we don't see layout jumps as the times shown in the labels go around
the hour mark.

We also refactor the ElapsedTimeSupport and RemainingTimeSupport in a single
TimeLabelsSupport class which updates both elapsed and remaining time labels
and sets the "labelsMayDisplayTimesOverAnHour" on the TimeControl should a
"durationchange" happen to make the media duration reach or go past the hour mark.

Tests: http/tests/media/modern-media-controls/time-labels-support/long-time.html

media/modern-media-controls/time-control/time-control-labels-may-display-times-over-an-hour.html
media/modern-media-controls/time-labels-support/elapsed-time.html
media/modern-media-controls/time-labels-support/remaining-time.html

  • Modules/modern-media-controls/controls/time-control.js:

(TimeControl.prototype.get labelsMayDisplayTimesOverAnHour):
(TimeControl.prototype.set labelsMayDisplayTimesOverAnHour):
(TimeControl.prototype.set width):

  • Modules/modern-media-controls/controls/time-label.css:

(.time-label):

  • Modules/modern-media-controls/js-files:
  • Modules/modern-media-controls/media/elapsed-time-support.js: Removed.
  • Modules/modern-media-controls/media/media-controller.js:

(MediaController.prototype._updateControlsIfNeeded):

  • Modules/modern-media-controls/media/time-labels-support.js: Renamed from Source/WebCore/Modules/modern-media-controls/media/remaining-time-support.js.

(TimeLabelsSupport.prototype.get control):
(TimeLabelsSupport.prototype.syncControl):
(TimeLabelsSupport):

  • WebCore.xcodeproj/project.pbxproj:

LayoutTests:

Add new tests to check that we correctly handle times at or past the hour mark.

  • http/tests/media/modern-media-controls/time-labels-support/long-time-expected.txt: Added.
  • http/tests/media/modern-media-controls/time-labels-support/long-time.html: Added.
  • media/modern-media-controls/time-control/time-control-labels-may-display-times-over-an-hour-expected.txt: Added.
  • media/modern-media-controls/time-control/time-control-labels-may-display-times-over-an-hour.html: Added.
  • media/modern-media-controls/time-labels-support/elapsed-time-expected.txt: Renamed from LayoutTests/media/modern-media-controls/elapsed-time-support/elapsed-time-support-expected.txt.
  • media/modern-media-controls/time-labels-support/elapsed-time.html: Renamed from LayoutTests/media/modern-media-controls/elapsed-time-support/elapsed-time-support.html.
  • media/modern-media-controls/time-labels-support/remaining-time-expected.txt: Renamed from LayoutTests/media/modern-media-controls/remaining-time-support/remaining-time-support-expected.txt.
  • media/modern-media-controls/time-labels-support/remaining-time.html: Renamed from LayoutTests/media/modern-media-controls/remaining-time-support/remaining-time-support.html.
6:07 AM Changeset in webkit [211806] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

LayoutTet media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=167275

Patch by Antoine Quint <Antoine Quint> on 2017-02-07
Reviewed by Eric Carlson.

After bringing fullscreen controls up to spec as part of https://bugs.webkit.org/show_bug.cgi?id=167875,
we need to initiate dragging on an area that is not covered by controls, so we shift further right to
initiate dragging.

  • media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls.html:
  • platform/mac/TestExpectations:
5:46 AM Changeset in webkit [211805] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

LayoutTest media/modern-media-controls/layout-node/addChild.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=167461

Unreviewed test gardening, this test is no longer flaky.

Patch by Antoine Quint <Antoine Quint> on 2017-02-07

  • platform/mac/TestExpectations:
5:22 AM Changeset in webkit [211804] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[mac-wk1] LayoutTest media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-buttons-styles.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=163598

Unreviewed test gardening, this test is no longer flaky.

Patch by Antoine Quint <Antoine Quint> on 2017-02-07

  • platform/mac-wk1/TestExpectations:
5:09 AM Changeset in webkit [211803] by pvollan@apple.com
  • 5 edits in trunk/Source/WebCore

Read stroke width of subtitles from MediaAccessibility framework.
https://bugs.webkit.org/show_bug.cgi?id=167871
<rdar://problem/29265906>

Reviewed by Brent Fulgham.

Read MACaptionFontAttributeStrokeWidth from CTFontDescriptorRef.

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::CaptionUserPreferencesMediaAF::strokeWidth):
(WebCore::CaptionUserPreferencesMediaAF::captionsTextEdgeCSS):

  • page/CaptionUserPreferencesMediaAF.h:
  • platform/cf/MediaAccessibilitySoftLink.cpp:
  • platform/cf/MediaAccessibilitySoftLink.h:
2:53 AM Changeset in webkit [211802] by commit-queue@webkit.org
  • 11 edits
    2 adds in trunk

[Modern Media Controls] Improve handling of <video> with only audio tracks
https://bugs.webkit.org/show_bug.cgi?id=167836
<rdar://problem/30255812>

Patch by Antoine Quint <Antoine Quint> on 2017-02-07
Reviewed by Dean Jackson.

Source/WebCore:

We now check for the availability of video tracks before considering a <video>
element is displaying an actual video file and turning auto-hide on. We also
check that we have video tracks before enabling the fullscreen button. This
brings the behavior of a <video> pointing to a resource with no video tracks
to be the same as an <audio> element.

Test: media/modern-media-controls/media-controller/media-controller-video-with-only-audio.html

  • Modules/modern-media-controls/media/controls-visibility-support.js:

(ControlsVisibilitySupport.prototype.get tracksToMonitor):
(ControlsVisibilitySupport.prototype._updateControls):
(ControlsVisibilitySupport):

  • Modules/modern-media-controls/media/fullscreen-support.js:

(FullscreenSupport.prototype.syncControl):
(FullscreenSupport):

LayoutTests:

Add a new test to check that a <video> with a resource that only has audio tracks
does not auto-hide nor show the fullscreen button. We also rebaseline a few existing
tests for this change of behavior.

  • fast/regions/inline-block-inside-anonymous-overflow-with-covered-controls-expected.html:
  • fast/regions/inline-block-inside-anonymous-overflow-with-covered-controls.html:
  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-on-expected.txt:
  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-on.html:
  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-toggle-expected.txt:
  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-toggle.html:
  • media/modern-media-controls/media-controller/media-controller-video-with-only-audio-expected.txt: Added.
  • media/modern-media-controls/media-controller/media-controller-video-with-only-audio.html: Added.
  • media/modern-media-controls/time-label/time-label-white-space-nowrap.html:
2:01 AM WebKitGTK/2.14.x edited by Carlos Garcia Campos
(diff)
1:51 AM Changeset in webkit [211801] by Carlos Garcia Campos
  • 6 edits
    2 adds in releases/WebKitGTK/webkit-2.14

Merge r211775 - Overlay scrolling with iframe-s broken
https://bugs.webkit.org/show_bug.cgi?id=165056

Reviewed by Antonio Gomes.

Source/WebCore:

Mouse press events for overlay scrollbars are ignored if there's a subframe under the scrollbar. This doesn't
happen with normal scrollbars, because the subframe is not really under the scrollbar, so events are always
correctly passed to the scrollbar. With overlay scrollbars, the hit test detects the scrollbar, but events are
always passed first to the subframe. Scrollbars are correctly updated on hover though, because
handleMouseMoveEvent checks the presence of scrollbars before checking for subframes and move events are
actually passed to both, the scrollbar and the subframe. Overlay scrollbars should always take precedence over
subframes to handle mouse press events, so we should check first if mouse is over a scrollbar and never pass the
event to a subframe in that case. Another problem is that the cursor is not updated either when the overlay
scrollbar is hovered and there's a subframe. This is because in handleMouseMoveEvent we pass the event to both
the scrollbar and subframe but we never update the cursor when a suframe was found. So, here again we need to make
an exception for scrollbars and upate the cursor when mouse is over the scrollbar even if a subframe was found.

Test: fast/scrolling/scroll-animator-overlay-scrollbars-clicked.html

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMousePressEvent): Move the scrollbar check before the subframe check.
(WebCore::EventHandler::handleMouseMoveEvent): Update the cursor when hovering a scrollbar even if a subframe
was found.
(WebCore::EventHandler::updateLastScrollbarUnderMouse): Use an enum instead of a boolean for setLast parameter.

  • page/EventHandler.h:

LayoutTests:

Add a new test to check that clicking on an overlay scrollbar works even it's over a subframe.

  • fast/scrolling/scroll-animator-overlay-scrollbars-clicked-expected.txt: Added.
  • fast/scrolling/scroll-animator-overlay-scrollbars-clicked.html: Added.
  • platform/ios-simulator/TestExpectations:
  • platform/mac-wk1/TestExpectations:
1:39 AM Changeset in webkit [211800] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r211366 - Unreviewed. Fix GTK+ debug build after r211365.

Remove invalid assert.

  • WebProcess/WebPage/AcceleratedDrawingArea.cpp:

(WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingModeNow):

1:38 AM Changeset in webkit [211799] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r211206 - ImageBufferCairo: cairo_image_surface should use bmalloc-allocated memory
https://bugs.webkit.org/show_bug.cgi?id=165751

Reviewed by Carlos Garcia Campos.

Allocate the underlying memory for cairo_image_surface objects through FastMalloc.
This way we can steer such large allocations away from the default libc allocator.

Objects of this class can create Cairo surfaces that need as much as 4MB of memory
for the underlying pixel buffer. Allocating such objects through the default
libc allocator can lead to increased memory usage because of non-optimal allocation
strategy in libc. In contrast, bmalloc performs large allocations by directly using
mmap() to reserve the necessary memory.

The improvements can be significant. On nytimes.com, with the threaded version of
the CoordinatedGraphics system, the memory consumption can drop by roughly 20%.

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::ImageBuffer): Zero-allocate the necessary memory via FastMalloc.
Tie that memory lifetime to the lifetime of the surface by using
cairo_surface_set_user_data() with the specific user data key.

1:34 AM Changeset in webkit [211798] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r211277 - [GTK] Stop forcing accelerated compositing by default
https://bugs.webkit.org/show_bug.cgi?id=167492

Reviewed by Žan Doberšek.

We are now ready to bring back the on demand accelerated compositing mode with the threaded
compositor. Unfortunately, having AC always enabled brought a lot of issues for many people. Not only it
requires a lot more memory but also caused rendering issues (or even nothing rendered at all) with some graphics
drivers. People started to use WEBKIT_DISABLE_COMPOSITING_MODE as a workaround, but that was not expected to be
used by users. So, entering/leaving AC when required by web contents is not actually the solution but a huge
improvement for many people. If we are eventually ready to force AC mode again, we'll change this again. Note
that we still have WEBKIT_DISABLE_COMPOSITING_MODE, but now also WEBKIT_FORCE_COMPOSITING_MODE for testing and debugging.

  • UIProcess/gtk/WebPreferencesGtk.cpp:

(WebKit::WebPreferences::platformInitializeStore):

1:34 AM Changeset in webkit [211797] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r211365 - [GTK] Do not release OpenGL resource immediately when leaving accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=167544

Reviewed by Michael Catanzaro.

Sometimes the conditions to be in AC mode or not change quickly, and then we leave AC mode just enter it again
after a very short period of time. In those cases we are dropping all the GL resources and the compositor
thread, and creating it again. We could keep the layer tree host alive for a while when exiting AC mode, and
reuse it if we enter AC mode before the previous one has been discarded. While the previous layer tree host is
alive we still need to keep it up to date, for example if the web view is resized or contents size change, and
synchronize with the threaded compositor when it becomes the layer tree host again.

  • WebProcess/WebPage/AcceleratedDrawingArea.cpp:

(WebKit::AcceleratedDrawingArea::~AcceleratedDrawingArea): Discard the previous layer tree host.
(WebKit::AcceleratedDrawingArea::AcceleratedDrawingArea): Initialize the timer to discard the previous layer
tree host.
(WebKit::AcceleratedDrawingArea::pageBackgroundTransparencyChanged): Notify the previous layer tree host if needed.
(WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged): Ditto.
(WebKit::AcceleratedDrawingArea::updateBackingStoreState): Ditto.
(WebKit::AcceleratedDrawingArea::enterAcceleratedCompositingMode): Reuse the previous layer tree host if possible.
(WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingModeNow): Exit AC mode and save the layer tree host
starting a timer of 5 seconds to discard it if not reused.
(WebKit::AcceleratedDrawingArea::discardPreviousLayerTreeHost): Invalidate and destroy the previous layer tree host.
(WebKit::AcceleratedDrawingArea::didChangeViewportAttributes): Notify the previous layer tree host if needed.
(WebKit::AcceleratedDrawingArea::deviceOrPageScaleFactorChanged): Ditto.

  • WebProcess/WebPage/AcceleratedDrawingArea.h:
  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:

(WebKit::ThreadedCoordinatedLayerTreeHost::scrollNonCompositedContents): If it's discardable add the action to
be synchronized instead.
(WebKit::ThreadedCoordinatedLayerTreeHost::contentsSizeChanged): Ditto.
(WebKit::ThreadedCoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged): Ditto.
(WebKit::ThreadedCoordinatedLayerTreeHost::pageBackgroundTransparencyChanged): Ditto.
(WebKit::ThreadedCoordinatedLayerTreeHost::sizeDidChange): Ditto.
(WebKit::ThreadedCoordinatedLayerTreeHost::didChangeViewportAttributes): Ditto.
(WebKit::ThreadedCoordinatedLayerTreeHost::setIsDiscardable): When the layer tree host becomes discardable,
reset the sync actions and return. When it becomes the real layer tree host again, apply all pending actions to
synchronize with the threaded compositor.

  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
  • WebProcess/WebPage/DrawingAreaImpl.cpp:

(WebKit::DrawingAreaImpl::scroll): Notify the previous layer tree host if needed.
(WebKit::DrawingAreaImpl::mainFrameContentSizeChanged): Ditto.
(WebKit::DrawingAreaImpl::exitAcceleratedCompositingMode): Use AcceleratedDrawingArea::exitAcceleratedCompositingModeNow().

  • WebProcess/WebPage/LayerTreeHost.h:

(WebKit::LayerTreeHost::setIsDiscardable): Added.

1:34 AM Changeset in webkit [211796] by Carlos Garcia Campos
  • 10 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r211350 - [Coordinated Graphics] WebPage shouldn't use the layerTreeHost directly
https://bugs.webkit.org/show_bug.cgi?id=167494

Reviewed by Michael Catanzaro.

In Coordinated Graphics we have a couple of methods that the WebPage uses directly from the layer tree host,
instead of using the drawing area interface. This patch adds DrawingArea::didChangeViewportAttributes and
DrawingArea::deviceOrPageScaleFactorChanged and renames LayerTreeHost::didChangeViewportProperties as
LayerTreeHost::didChangeViewportAttributes for consistency.

  • Shared/CoordinatedGraphics/SimpleViewportController.cpp:

(WebKit::SimpleViewportController::didChangeViewportAttributes): Receive an rvalue reference to avoid copies.

  • Shared/CoordinatedGraphics/SimpleViewportController.h:
  • WebProcess/WebPage/AcceleratedDrawingArea.cpp:

(WebKit::AcceleratedDrawingArea::didChangeViewportAttributes): Forward it to the layer tree host if any.
(WebKit::AcceleratedDrawingArea::deviceOrPageScaleFactorChanged): Ditto.

  • WebProcess/WebPage/AcceleratedDrawingArea.h:
  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:

(WebKit::ThreadedCoordinatedLayerTreeHost::didChangeViewportAttributes): Renamed and updated to pass an rvalue reference.
(WebKit::ThreadedCoordinatedLayerTreeHost::didChangeViewportProperties): Deleted.

  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
  • WebProcess/WebPage/DrawingArea.h:
  • WebProcess/WebPage/LayerTreeHost.h:

(WebKit::LayerTreeHost::didChangeViewportAttributes): Renamed and updated to pass an rvalue reference.
(WebKit::LayerTreeHost::didChangeViewportProperties): Deleted.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::sendViewportAttributesChanged): Use the drawing area.
(WebKit::WebPage::scalePage): Ditto
(WebKit::WebPage::setDeviceScaleFactor): Ditto.
(WebKit::WebPage::viewportPropertiesDidChange): Ditto.

1:33 AM Changeset in webkit [211795] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r211358 - [Threaded Compositor] Crash in GraphicsContext3D::deleteTexture when destroying TextureMapperPlatformLayerProxy
https://bugs.webkit.org/show_bug.cgi?id=167575

Reviewed by Žan Doberšek.

We should clear all the buffers on invalidate to ensure we don't have textures alive after CoordinatedGraphicsScene::purgeGLResources().

Fix crash in media/video-poster-background.html.

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:

(WebCore::TextureMapperPlatformLayerProxy::invalidate): Clear current, pending and all used buffers.

1:33 AM Changeset in webkit [211794] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.14/Source

Merge r211357 - [Threaded Compositor] Crash on WebCore::GLContext::version()
https://bugs.webkit.org/show_bug.cgi?id=167559

Reviewed by Michael Catanzaro.

Source/WebCore:

Fixes crashes in several media tests.

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:

(WebCore::TextureMapperPlatformLayerProxy::invalidate): Clear m_compositorThreadUpdateTimer and call the update function.

Source/WebKit2:

This is happening because TextureMapperPlatformLayerProxy::compositorThreadUpdateTimerFired() is fired after the
threaded compositor is deleted. CoordinatedGraphicsScene::purgeGLResources() should invalidate the proxies
before clearing the map.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::purgeGLResources):

1:33 AM Changeset in webkit [211793] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r211367 - [GTK] Scrolling iframes, doesn't redraw their content
https://bugs.webkit.org/show_bug.cgi?id=167581

Reviewed by Carlos Garcia Campos.

Take into account whether we are using AC or not in order to repaint an area after scrolling.

No behaviour change, no new tests.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::invalidateContentsForSlowScroll):

1:33 AM Changeset in webkit [211792] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r211348 - [Threaded Compositor] Crash when detaching the CoordinatedGraphicsScene
https://bugs.webkit.org/show_bug.cgi?id=167547

Reviewed by Michael Catanzaro.

It seems that commitSceneState() can be called after the CoordinatedGraphicsScene has been detached.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::commitSceneState): Return early if scene has been detached.
(WebKit::CoordinatedGraphicsScene::detach): Take the render queue lock before clearing the render queue.

1:33 AM Changeset in webkit [211791] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r211347 - [Threaded Compositor] Crash when deleting the compositor run loop
https://bugs.webkit.org/show_bug.cgi?id=167545

Reviewed by Michael Catanzaro.

The problem is that we are releasing the WorkQueue before the update timer that keeps a reference to the run
loop, destroyed by the WorkQueue. So, invalidate the WorkQueue in the next run loop iteration to ensure it
happens after the CompositingRunLoop destructor.

  • Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:

(WebKit::CompositingRunLoop::~CompositingRunLoop):

1:33 AM Changeset in webkit [211790] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r211346 - [GTK] ASSERTION FAILED: !m_layerTreeHost in DrawingAreaImpl::display()
https://bugs.webkit.org/show_bug.cgi?id=167548

Reviewed by Michael Catanzaro.

The problem is that non accelerated compositing forceRepaint implementation is doing a layout and then calling
display. The layout makes the drawing area enter in AC mode and display asserts that we have a layer tree
host. forceRepaint shouldn't do the layout because display already does that and it correctly handles the case
of entering AC mode during the layout. It shouldn't call setNeedsDisplay either, because that schedules a
display, but we are going to display synchronously.

  • WebProcess/WebPage/DrawingAreaImpl.cpp:

(WebKit::DrawingAreaImpl::forceRepaint):

1:33 AM Changeset in webkit [211789] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r211281 - [Threaded Compositor] Stop creating the GLContext on demand the first time makeContextCurrent is called
https://bugs.webkit.org/show_bug.cgi?id=167496

Reviewed by Žan Doberšek.

This is causing problems with animations when entering AC mode on demand. What happens is that the threaded
compositor is created, then the animation is scheduled and during the first animation iteration the GLContext is
created, making the first frame of the animation quite slow. In my computer creating the GLContext takes 0.8
seconds. If the animation duration is less than the time it takes to create the GLContext, the animation ends
without iterating. This causing timeouts in the bots in tests like
animations/animation-iteration-event-destroy-renderer.html that expect webkitAnimationIteration events that
never fire.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::ThreadedCompositor): Create the GLContext right after the compositing thread is
created if we already have a native surface handle.
(WebKit::ThreadedCompositor::createGLContext): Helper to create the GLContext.
(WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing): Create the GLContext when a native surface
handle is given.
(WebKit::ThreadedCompositor::makeContextCurrent): Deleted.
(WebKit::ThreadedCompositor::renderLayerTree): Make the context cunrrent directly here.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
1:33 AM Changeset in webkit [211788] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r211205 - [Threaded Compositor] Update also the contents size when creating the threaded compositor
https://bugs.webkit.org/show_bug.cgi?id=167452

Reviewed by Žan Doberšek.

In r210954 we ensured that the threaded compositor and the viewport controller were created with the initial web
page size. If we don't update the contents size, the visible rectangle will be empty and tiles won't be created
until contentsSizeDidChange is called. It's even possible, when entering AC mode on demand, that we create the
layer tree host after the contents size changed, in which case nothing is rendered unless we resize the window.

  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:

(WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost):

1:32 AM Changeset in webkit [211787] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r211204 - [GTK] WebProcess from WebKitGtk+ 2.15.3 SIGSEVs in WebCore::GraphicsContext3D::drawArrays(unsigned int, int, int) at Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:740
https://bugs.webkit.org/show_bug.cgi?id=167296

Reviewed by Sergio Villar Senin.

Use a VBO to pass the vertex data when using the stencil for clipping. Passing a custom array without
using an VBO is deprecated when using OpenGL >= 3.0 and a Core profile.

No behaviour change, no new tests.

  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::TextureMapperGL::beginClip):

1:32 AM Changeset in webkit [211786] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.14/Source

Merge r211145 - [GTK] UIProcess from WebKitGtk+ 2.15.x SIGSEGVs because of X Error BadDamage in WebKit::AcceleratedBackingStoreX11::update(WebKit::LayerTreeContext const&) () at Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp:145
https://bugs.webkit.org/show_bug.cgi?id=165656

Reviewed by Michael Catanzaro.

Source/WebCore:

Also return the base error code from PlatformDisplayX11::supportsXDamage().

  • platform/graphics/x11/PlatformDisplayX11.cpp:

(WebCore::PlatformDisplayX11::supportsXDamage):

  • platform/graphics/x11/PlatformDisplayX11.h:

Source/WebKit2:

We are incorrectly handling BadDamage errors because the BadDamage value we pass to the XErrorTrapper is not
the actual error code used by X11. Since XDamage is an extension, it has its own errors and a base error
code. We need to use the base error code we get when calling XDamageQueryExtension to pass the right error code
to the XErrorTrapper.

  • UIProcess/gtk/AcceleratedBackingStoreX11.cpp:

(WebKit::AcceleratedBackingStoreX11::create): Get also the damage base error.
(WebKit::xDamageErrorCode): Helper to get the actual error code.
(WebKit::AcceleratedBackingStoreX11::~AcceleratedBackingStoreX11): Use xDamageErrorCode().
(WebKit::AcceleratedBackingStoreX11::update): Ditto.

1:32 AM Changeset in webkit [211785] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.14/Source

Merge r211141 - [GTK] The inspector is broken when AC support is disabled
https://bugs.webkit.org/show_bug.cgi?id=165237

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Ensure that PageOverlayController destroys its root GraphicsLayers when leaving AC. They
will be recreated if we enter AC again, avoiding a crash because the layers don't belong to
the appropriate compositor. Also, don't append the document overlay layers if we are not
in compositing mode.

No new tests added.

  • page/PageOverlayController.cpp:

(WebCore::PageOverlayController::willDetachRootLayer):

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

(WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
(WebCore::RenderLayerCompositor::detachRootLayer):

Source/WebKit2:

WebInspector must not use PageOverlays or GraphicsLayers when AC is not avaialable.

No new tests added.

  • WebProcess/WebCoreSupport/WebInspectorClient.cpp:

(WebKit::WebInspectorClient::highlight):
(WebKit::WebInspectorClient::showPaintRect):

1:32 AM Changeset in webkit [211784] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r211084 - [GTK] Do not paint non composited content into the window when using the threaded compositor
https://bugs.webkit.org/show_bug.cgi?id=167367

Reviewed by Carlos Garcia Campos.

When using the threaded compositor we need to send the non composited content for compositing as well,
not painting it directly into the window.

No new tests.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::paintsIntoWindow):

1:32 AM Changeset in webkit [211783] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r210954 - [Threaded Compositor] Initialize the threaded compositor with the current size
https://bugs.webkit.org/show_bug.cgi?id=167196

Reviewed by Žan Doberšek.

We are always creating the threaded compositor with an empty size and then a sizeDidChange always happen when
the backing store state changes. This is always happening because the threaded compositor is created before the
first backing store state, but if we wanted to create it later, for example to enter/leave AC mode on demand,
the threaded compositor will not have the viewport size unless the window is resized, or sizeDidChange is called
manually when entering AC mode. Creating the threaded compositor is sync and changing the size too, so it's
better to do both things at the same time using the same sync operation.

  • Shared/CoordinatedGraphics/SimpleViewportController.cpp:

(WebKit::SimpleViewportController::SimpleViewportController): Pass an initial size to the constructor.

  • Shared/CoordinatedGraphics/SimpleViewportController.h:
  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::create): Add viewportSize and scaleFactor construction parameters,
(WebKit::ThreadedCompositor::ThreadedCompositor): Ditto. Also mark as needs resize if the given size is not empty.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:

(WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost): Initialize the threaded compositor
with an initial viewport size and scale factor.

1:32 AM Changeset in webkit [211782] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r211083 - [Coordinated Graphics] Ensure that we're in AC mode before trying to create GraphicsLayers
https://bugs.webkit.org/show_bug.cgi?id=167365

Reviewed by Carlos Garcia Campos.

When entering AC on demand, the RenderLayerCompositor wants to create the root GraphicsLayer before the
AcceleratedDrawingArea is in AC mode. This means there's no LayerTreeHost to request the GraphicsLayerFactory,
so no layers are created. Ensure that we are in AC mode before requesting the GraphicsLayerFactory.

No behaviour change, no new tests.

  • WebProcess/WebPage/AcceleratedDrawingArea.cpp:

(WebKit::AcceleratedDrawingArea::graphicsLayerFactory):

1:32 AM Changeset in webkit [211781] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r210920 - [GTK] Do not update the backing store state unnecessarily when page visibility changes
https://bugs.webkit.org/show_bug.cgi?id=167195

Reviewed by Sergio Villar Senin.

I've noticed that we are receiving UpdateBackingStoreState messages in the web process even when size and scale
factor didn't change. That's quite unfortunate because we do a lot of work unnecessarily and we tell the
threaded compositor that the size changed. This is not only a problem because it's not true, but also because
changing the size is a sync operation in the threaded compositor, so we block the compositing thread for
nothing. This is happening because the WebPageProxy notifies the drawing area that the backing store is
discardable when the page is not visible, and that always produces a new backing store state. In accelerating
compositing mode we don't even have a backing store to discard, so we should check we have something to discard
and also make sure we only generate a new backing store state if we really discarded the backing store.

  • UIProcess/DrawingAreaProxyImpl.cpp:

(WebKit::DrawingAreaProxyImpl::discardBackingStoreSoon):
(WebKit::DrawingAreaProxyImpl::discardBackingStore):

1:31 AM Changeset in webkit [211780] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r210847 - [GTK] [TextureMapper] [GLES2] Draw repeated patterns for NPOT textures manually
https://bugs.webkit.org/show_bug.cgi?id=167118

Reviewed by Žan Doberšek.

When using GLES2 without the GL_OES_texture_npot extension, some implementations fail to properly
draw repeated patters from a texture (using GL_REPEAT). For those cases, perform the repetition
manually using the shader.

Covered by existent tests.

  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::driverSupportsNPOTTextures):
(WebCore::TextureMapperGL::drawTexture):
(WebCore::TextureMapperGL::drawTexturedQuadWithProgram):

  • platform/graphics/texmap/TextureMapperShaderProgram.cpp:

(WebCore::TextureMapperShaderProgram::create):

  • platform/graphics/texmap/TextureMapperShaderProgram.h:
1:00 AM Changeset in webkit [211779] by commit-queue@webkit.org
  • 7 edits in trunk

[Readable Streams API] Implement ReadableByteStreamController enqueue()
https://bugs.webkit.org/show_bug.cgi?id=167786

Patch by Romain Bellessort <romain.bellessort@crf.canon.fr> on 2017-02-07
Reviewed by Youenn Fablet.

Source/WebCore:

Implemented ReadableByteStreamController enqueue() method. Also replaced
@queue by an Array instead of a dedicated queue object (said object is
useful for ReadableStreamDefaultController, but not for ReadableByteStreamController).

Added 8 tests to cover newly added code as well as code that was previously unreachable.

  • Modules/streams/ReadableByteStreamController.js:

(enqueue): Implemented as defined by spec.

  • Modules/streams/ReadableByteStreamInternals.js:

(privateInitializeReadableByteStreamController): Updated @queue.
(readableByteStreamControllerCancel): Updated @queue.
(readableByteStreamControllerError): Updated @queue.
(readableByteStreamControllerPull): Updated @queue.
(readableByteStreamControllerEnqueue): Added.
(readableByteStreamControllerEnqueueChunkToQueue): Added.

  • Modules/streams/ReadableStreamInternals.js:

(readableStreamFulfillReadRequest): Added (used at different places).

LayoutTests:

Added 8 tests to cover newly added code as well as code that was previously unreachable.

  • streams/readable-byte-stream-controller-expected.txt:
  • streams/readable-byte-stream-controller.js:
12:51 AM Changeset in webkit [211778] by Chris Dumez
  • 7 edits in trunk

Object.preventExtensions() on a Location object should throw a TypeError
https://bugs.webkit.org/show_bug.cgi?id=167917

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline web platform test now that one more check is passing.

  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:

Source/WebCore:

Object.preventExtensions() on a Location object should throw a TypeError:

Firefox already implements this.

No new tests, rebaselined existing tests.

  • bindings/js/JSLocationCustom.cpp:

(WebCore::JSLocation::preventExtensions):

LayoutTests:

Rebaseline test now that more checks are passing.

  • http/tests/security/preventExtensions-window-location-expected.txt:
  • http/tests/security/preventExtensions-window-location.html:
12:17 AM Changeset in webkit [211777] by Yusuke Suzuki
  • 8 edits
    4 adds in trunk

Web Inspector: allow import() inside the inspector
https://bugs.webkit.org/show_bug.cgi?id=167457

Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

We relax import module hook to accept null SourceOrigin.
Such a script can be evaluated from the inspector console.

  • jsc.cpp:

(GlobalObject::moduleLoaderImportModule):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncImportModule):

Source/WebCore:

When evaluating import("..."), we need the caller's context to resolve
the module specifier correctly. For example, if import("./cocoa.js") is
evaluated in the script "drinks/hot.js", this module name is resolved to
"drinks/cocoa.js". If the same import operator is evaluated in the script
"menu/all.js", the module specifier becomes "menu/cocoa.js".

Previously we reject the import operator if the caller does not have such
a context. These context is SourceOrigin and its ScriptFetcher. While they
are offered in the script tag and other code evaluations, the inspector
console does not offer that. These class are offered in the WebCore side
and we should not touch these classes in the JSC's inspector code.

Now we relax the above restriction. If the above caller information is not
offered, we fallback to the default one. In the web page, we use the page's
URL as the caller's source origin. This allows us to evaluate the import
operator in the inspector console.

And as of r167698, the console recognizes await import("...") form. We use
this to test this import() in the console functionality.

  • bindings/js/ScriptModuleLoader.cpp:

(WebCore::ScriptModuleLoader::importModule):

LayoutTests:

  • inspector/controller/resources/cappuccino.js: Added.
  • inspector/controller/resources/cocoa.js: Added.
  • inspector/controller/resources/drink.js: Added.
  • inspector/controller/runtime-controller-expected.txt:
  • inspector/controller/runtime-controller.html:
12:14 AM Changeset in webkit [211776] by mmaxfield@apple.com
  • 2 edits
    2 moves in trunk/Source/WebCore

Move platform-independent parts of ComplexTextController out of mac/ subfolder
https://bugs.webkit.org/show_bug.cgi?id=167922

Reviewed by Jon Lee.

Just a mechanical git mv, and updating the Xcode projects.

No new tests because there is no behavior change.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/ComplexTextController.cpp: Renamed from Source/WebCore/platform/graphics/mac/ComplexTextController.cpp.
  • platform/graphics/ComplexTextController.h: Renamed from Source/WebCore/platform/graphics/mac/ComplexTextController.h.

Feb 6, 2017:

10:45 PM Changeset in webkit [211775] by Carlos Garcia Campos
  • 6 edits
    2 adds in trunk

Overlay scrolling with iframe-s broken
https://bugs.webkit.org/show_bug.cgi?id=165056

Reviewed by Antonio Gomes.

Source/WebCore:

Mouse press events for overlay scrollbars are ignored if there's a subframe under the scrollbar. This doesn't
happen with normal scrollbars, because the subframe is not really under the scrollbar, so events are always
correctly passed to the scrollbar. With overlay scrollbars, the hit test detects the scrollbar, but events are
always passed first to the subframe. Scrollbars are correctly updated on hover though, because
handleMouseMoveEvent checks the presence of scrollbars before checking for subframes and move events are
actually passed to both, the scrollbar and the subframe. Overlay scrollbars should always take precedence over
subframes to handle mouse press events, so we should check first if mouse is over a scrollbar and never pass the
event to a subframe in that case. Another problem is that the cursor is not updated either when the overlay
scrollbar is hovered and there's a subframe. This is because in handleMouseMoveEvent we pass the event to both
the scrollbar and subframe but we never update the cursor when a suframe was found. So, here again we need to make
an exception for scrollbars and upate the cursor when mouse is over the scrollbar even if a subframe was found.

Test: fast/scrolling/scroll-animator-overlay-scrollbars-clicked.html

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMousePressEvent): Move the scrollbar check before the subframe check.
(WebCore::EventHandler::handleMouseMoveEvent): Update the cursor when hovering a scrollbar even if a subframe
was found.
(WebCore::EventHandler::updateLastScrollbarUnderMouse): Use an enum instead of a boolean for setLast parameter.

  • page/EventHandler.h:

LayoutTests:

Add a new test to check that clicking on an overlay scrollbar works even it's over a subframe.

  • fast/scrolling/scroll-animator-overlay-scrollbars-clicked-expected.txt: Added.
  • fast/scrolling/scroll-animator-overlay-scrollbars-clicked.html: Added.
  • platform/ios-simulator/TestExpectations:
  • platform/mac-wk1/TestExpectations:
10:34 PM Changeset in webkit [211774] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[GTK] jhbuild fails: mesa-11.0.6.tar.xz: 404 Not Found
https://bugs.webkit.org/show_bug.cgi?id=167916

Patch by Fujii Hironori <Fujii Hironori> on 2017-02-06
Reviewed by Carlos Garcia Campos.

URL of mesa-11.0.6.tar.xz has been moved.

  • gtk/jhbuild.modules: Fix the module path.
10:12 PM Changeset in webkit [211773] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[Soup] Long resources loaded by custom protocols sometimes never finish loading
https://bugs.webkit.org/show_bug.cgi?id=167890

Reviewed by Michael Catanzaro.

It's another bug that has appeared in WebKitSoupRequestInputStream after moving the custom protocols handling to
the main thread. The problem is that webkitSoupRequestInputStreamPendingReadAsyncComplete invalidates
pendingAsyncRead after calling webkitSoupRequestInputStreamReadAsyncResultComplete, but in some cases
webkitSoupRequestInputStreamReadAsyncResultComplete completes the task in the same run loop iteration. In that
case webkitSoupRequestInputStreamReadAsync is called again creating a new AsyncReadData that is destroyed right
after webkitSoupRequestInputStreamReadAsyncResultComplete returns.

  • WebProcess/soup/WebKitSoupRequestInputStream.cpp:

(AsyncReadData::AsyncReadData): Use an rvalue reference for the task.
(webkitSoupRequestInputStreamPendingReadAsyncComplete): Use WTFMove to ensure pendingAsyncRead is cleared before
webkitSoupRequestInputStreamReadAsyncResultComplete is called, and continue processing pending requests if there
are new ones after webkitSoupRequestInputStreamReadAsyncResultComplete.
(webkitSoupRequestInputStreamReadAsync): Use WTFMove to transfer the task to AsyncReadData.
(webkitSoupRequestInputStreamDidFailWithError): Use WTFMove to ensure pendingAsyncRead is cleared.

8:47 PM Changeset in webkit [211772] by Chris Dumez
  • 5 edits in trunk

Symbols exposed on cross-origin Window / Location objects should be configurable
https://bugs.webkit.org/show_bug.cgi?id=167920

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline web platform test now that more checks are passing.

  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:

Source/WebCore:

Symbols exposed on cross-origin Window / Location objects should be configurable:

Firefox behaves as per specification.

No new tests, rebaselined existing test.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess):

  • bindings/js/JSLocationCustom.cpp:

(WebCore::JSLocation::getOwnPropertySlotDelegate):

8:27 PM Changeset in webkit [211771] by commit-queue@webkit.org
  • 11 edits
    1 copy
    1 add in trunk/Source

Web Inspector: Do not use RunLoop when dispatching inspector GC event
https://bugs.webkit.org/show_bug.cgi?id=167683
<rdar://problem/30167791>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-06
Reviewed by Brian Burg.

Source/JavaScriptCore:

Move the RunLoop deferred implementation to WebCore. It is not needed
for JSContext inspection, and in JSContext inspection we are not
guarenteed a RunLoop to defer to.

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

(Inspector::InspectorHeapAgent::InspectorHeapAgent):
(Inspector::InspectorHeapAgent::~InspectorHeapAgent):
(Inspector::InspectorHeapAgent::disable):
(Inspector::InspectorHeapAgent::didGarbageCollect):
(Inspector::SendGarbageCollectionEventsTask::SendGarbageCollectionEventsTask): Deleted.
(Inspector::SendGarbageCollectionEventsTask::addGarbageCollection): Deleted.
(Inspector::SendGarbageCollectionEventsTask::reset): Deleted.
(Inspector::SendGarbageCollectionEventsTask::timerFired): Deleted.

(Inspector::InspectorHeapAgent::dispatchGarbageCollectedEvent):
Make a virtual method so that WebCore implementations of this agent can choose
to dispatch this event asynchronously.

  • inspector/agents/InspectorScriptProfilerAgent.cpp:

Remove unnecessary RunLoop include.

Source/WebCore:

Covered by existing tests.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • inspector/InspectorAllInOne.cpp:

Add new file.

  • inspector/PageHeapAgent.cpp:

(WebCore::PageHeapAgent::PageHeapAgent):
(WebCore::PageHeapAgent::enable):
(WebCore::PageHeapAgent::disable):

  • inspector/PageHeapAgent.h:

Extend WebHeapAgent.

  • inspector/WorkerInspectorController.cpp:

(WebCore::WorkerInspectorController::WorkerInspectorController):
Use WebHeapAgent.

  • inspector/WebHeapAgent.cpp: Added.

(WebCore::SendGarbageCollectionEventsTask::SendGarbageCollectionEventsTask):
(WebCore::SendGarbageCollectionEventsTask::addGarbageCollection):
(WebCore::SendGarbageCollectionEventsTask::reset):
(WebCore::SendGarbageCollectionEventsTask::timerFired):
(WebCore::WebHeapAgent::WebHeapAgent):
(WebCore::WebHeapAgent::~WebHeapAgent):
(WebCore::WebHeapAgent::disable):
(WebCore::WebHeapAgent::dispatchGarbageCollectedEvent):
(WebCore::WebHeapAgent::dispatchGarbageCollectionEventsAfterDelay):

  • inspector/WebHeapAgent.h:

Move the defered event dispatch from InspectorHeapAgent here where a RunLoop is guarenteed.

8:23 PM Changeset in webkit [211770] by mitz@apple.com
  • 4 edits in trunk/Source/WebKit2

[iOS] -[WKWebView becomeFirstResponder] and -[WKWebView resignFirstResponder] don’t get called when non-programmatic first responder changes happen
https://bugs.webkit.org/show_bug.cgi?id=167898

Reviewed by Tim Horton.

Made WKContentView’s -becomeFirstResponder and -resignFirstResponder forward to the
WKWebView, giving subclasses an opportunity to override these methods. Changed the WKWebView
implementations to call back into WKContentView methods that actually do the work.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView becomeFirstResponder]): If the current content view is a WKContentView, call

-becomeFirstResponderForWebView. Added a check that the content view has a superview to
get the right behavior when this is called during the transition from not having to having
a custom content view.

(-[WKWebView canBecomeFirstResponder]): If the current content view is a WKContentView, call

-canBecomeFirstResponderForWebView.

(-[WKWebView resignFirstResponder]): If the current content view is a WKContentView, call

-resignFirstResponderForWebView.

(-[WKWebView _setHasCustomContentView:loadedMIMEType:]): If the new content view is a

WKContentView, use -canBecomeFirstResponderForWebView.

  • UIProcess/ios/WKContentViewInteraction.h: Added _becomingFirstResponder ivar.
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView canBecomeFirstResponder]): Return _becomingFirstResponder. Normally this is

NO, so code that hit-tests then walks up the view hierarchy to select a first responder
will continue to the WKWebView. But we need to return YES around the call to super’s
-becomeFirstResponder in -becomeFirstResponderForWebView.

(-[WKContentView canBecomeFirstResponderForWebView]): Moved the old

-becomeFirstResponderForWebView implementation here.

(-[WKContentView becomeFirstResponder]): Forward to the WKWebView.
(-[WKContentView becomeFirstResponderForWebView]): Moved the old -becomeFirstResponder

implementation here, setting _becomingFirstResponder to YES around the call to super.

(-[WKContentView resignFirstResponder]): Forward to the WKWebView.
(-[WKContentView resignFirstResponderForWebView]): Moved the old -resignFirstResponder

implementation here.

8:19 PM Changeset in webkit [211769] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

Static Analyzer: Address some leaks in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=167897

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-06
Reviewed by Alexey Proskuryakov.

  • MiniBrowser/mac/BrowserWindowController.m:

(-[BrowserWindowController sharingService:transitionImageForShareItem:contentRect:]):

  • MiniBrowser/mac/ExtensionManagerWindowController.m:

(-[ExtensionManagerWindowController add:]):
(-[ExtensionManagerWindowController remove:]):

  • MiniBrowser/mac/SettingsController.m:

(-[SettingsController _populateMenu]):
(-[SettingsController togglePerWindowWebProcessesDisabled:]):
Address obvious leaks caught by the static analyzer.

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

ExtendedColor leaks seen on leaks bot
https://bugs.webkit.org/show_bug.cgi?id=167912

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-06
Reviewed by Alexey Proskuryakov.

  • platform/graphics/Color.cpp:

(WebCore::Color::operator=):
Before overwriting m_colorData, we must deref the extended color inside it.

6:19 PM Changeset in webkit [211767] by Simon Fraser
  • 2 edits in trunk/Source/WebKit2

Remove assertion in WebViewImpl::performKeyEquivalent()

Reviewed by Wenson Hsieh.

The assertion ASSERT(event == [NSApp currentEvent]) fires when using certain key combinations
in MiniBrowser's location field (e.g. Option-Shift-Arrow to select). The assertion is not correct,
so remove it.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::performKeyEquivalent):

6:19 PM Changeset in webkit [211766] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Re-land r210095 (avoid a tile revalidation on scale change)
https://bugs.webkit.org/show_bug.cgi?id=167866

Reviewed by Tim Horton.

r210095 was rolled out in r211230 but now that all TileControllers unparent
offscreen tiles, we can roll it back it.

Also add more Tiling logging.

  • platform/graphics/ca/TileGrid.cpp:

(WebCore::validationPolicyAsString):
(WebCore::TileGrid::setScale):
(WebCore::TileGrid::prepopulateRect):
(WebCore::TileGrid::revalidateTiles):
(WebCore::TileGrid::ensureTilesForRect):

6:14 PM Changeset in webkit [211765] by mmaxfield@apple.com
  • 9 edits in trunk

Migrate ComplexTextController to use platform-independent types
https://bugs.webkit.org/show_bug.cgi?id=167833

Reviewed by Brent Fulgham.

Source/WebCore:

ComplexTextController will eventually be used on all ports to perform complex text layout.
This is a mechanical patch which migrates the shared parts of ComplexTextController away from
using CoreGraphics and CoreFoundation types in favor of WebCore/platform types. Eventually,
ComplexTextController will get moved to PAL but there is a layering violation (TextLayout) to
fix first.

No new tests because there is no behavior change.

  • platform/graphics/GlyphBuffer.h:

(WebCore::GlyphBufferAdvance::GlyphBufferAdvance):

  • platform/graphics/mac/ComplexTextController.cpp:

(WebCore::ComplexTextController::offsetForPosition):
(WebCore::advanceByCombiningCharacterSequence):
(WebCore::ComplexTextController::ComplexTextRun::indexAt):
(WebCore::ComplexTextController::ComplexTextRun::setIsNonMonotonic):
(WebCore::ComplexTextController::advance):
(WebCore::ComplexTextController::adjustGlyphsAndAdvances):

  • platform/graphics/mac/ComplexTextController.h:

(WebCore::ComplexTextController::ComplexTextRun::create):
(WebCore::ComplexTextController::ComplexTextRun::stringLength):
(WebCore::ComplexTextController::ComplexTextRun::indexBegin):
(WebCore::ComplexTextController::ComplexTextRun::indexEnd):
(WebCore::ComplexTextController::ComplexTextRun::endOffsetAt):
(WebCore::ComplexTextController::ComplexTextRun::glyphs):
(WebCore::ComplexTextController::ComplexTextRun::growInitialAdvanceHorizontally):
(WebCore::ComplexTextController::ComplexTextRun::initialAdvance):
(WebCore::ComplexTextController::ComplexTextRun::baseAdvances):
(WebCore::ComplexTextController::ComplexTextRun::glyphOrigins):
(WebCore::ComplexTextController::glyphOrigin):
(WebCore::ComplexTextController::ComplexTextRun::createForTesting): Deleted.

  • platform/graphics/mac/ComplexTextControllerCoreText.mm:

(SOFT_LINK):
(WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun):
(WebCore::ComplexTextController::collectComplexTextRunsForCharacters):

Tools:

Migrate tests away from platform-dependent types.

  • TestWebKitAPI/Tests/WebCore/ComplexTextController.cpp:

(TestWebKitAPI::TEST_F):

LayoutTests:

Rebaseline tiny rounding result.

  • platform/mac/fast/text/complex-text-opacity-expected.txt:
6:08 PM Changeset in webkit [211764] by Simon Fraser
  • 2 edits in trunk/Source/WebKit2

[iOS WK2] Keep the tiled scrolling indicator on-screen when pinching
https://bugs.webkit.org/show_bug.cgi?id=167915

Reviewed by Tim Horton.

Clamp the location to the larger of the location of .unobscuredContentRect() and 0,0.

  • UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:

(WebKit::RemoteLayerTreeDrawingAreaProxy::indicatorLocation):

5:48 PM Changeset in webkit [211763] by Brent Fulgham
  • 6 edits in trunk

Correct File Path Handling in SecurityOrigin and FileSystem
https://bugs.webkit.org/show_bug.cgi?id=167894
<rdar://problem/30380080>

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Roll out the URL decoding being done in the FileSystem class (added in Bug 167894), and instead ensure that
SecurityOrigin properly handles file URLs, and only passes valid file strings to the FileSystem interface.

Tested by FileSystemTests and SecurityOriginTests in TestWebKitAPI.

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::SecurityOrigin): Initialize m_filePath using the url's fileSystemPath, not
the %-encoded 'path' property.
(WebCore::SecurityOrigin::canDisplay): Pass the 'fileSystemPath' to 'filesHaveSameVolume', rather than
the %-encoded 'path' property.

  • page/SecurityOrigin.h:
  • platform/FileSystem.cpp:

(WebCore::filesHaveSameVolume): Do not use 'decodeURLEscapeSequences' in 'filesHaveSameVolume'.

Tools:

  • TestWebKitAPI/Tests/WebCore/FileSystem.cpp: Don't encode the temporary files,

and perform same-volume checks using filesystem-compatible paths.

  • TestWebKitAPI/Tests/WebCore/SecurityOrigin.cpp: Create SecurityOrigins from

filesystem paths, and perform validation of same-volume checks.
(TestWebKitAPI::SecurityOriginTest::tempFilePath): Added.
(TestWebKitAPI::SecurityOriginTest::spaceContainingFilePath): Added.
(TestWebKitAPI::SecurityOriginTest::bangContainingFilePath): Added.
(TestWebKitAPI::SecurityOriginTest::quoteContainingFilePath): Added.

5:39 PM Changeset in webkit [211762] by aestes@apple.com
  • 4 edits
    1 copy in trunk/Source/WebCore

[Cocoa] Split FileSystemMac.mm into Mac and Cocoa parts
https://bugs.webkit.org/show_bug.cgi?id=167908

Reviewed by Sam Weinig.

Kept the Mac-only functions in FileSystemMac.mm and moved the rest into FileSystemCocoa.mm.

  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/cocoa/FileSystemCocoa.mm: Copied from Source/WebCore/platform/mac/FileSystemMac.mm.
  • platform/mac/FileSystemMac.mm:

(-[WebFileManagerDelegate fileManager:shouldProceedAfterError:movingItemAtURL:toURL:]): Moved to FileSystemCocoa.mm.
(WebCore::homeDirectoryPath): Ditto.
(WebCore::openTemporaryFile): Ditto.
(WebCore::moveFile): Ditto.
(WebCore::getVolumeFreeSpace): Ditto.

5:33 PM Changeset in webkit [211761] by eric.carlson@apple.com
  • 5 edits in trunk/Source/WebCore

[MediaStream Mac] Remove some unused code
https://bugs.webkit.org/show_bug.cgi?id=167913

Reviewed by Jer Noble.

No new tests, no functional change.

  • platform/mediastream/CaptureDeviceManager.h:

(WebCore::CaptureSessionInfo::~CaptureSessionInfo): Deleted.
(WebCore::CaptureSessionInfo::supportsVideoSize): Deleted.
(WebCore::CaptureSessionInfo::bestSessionPresetForVideoDimensions): Deleted.

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

(WebCore::AVCaptureDeviceManager::refreshCaptureDeviceList):
(WebCore::AVCaptureSessionInfo::AVCaptureSessionInfo): Deleted.
(WebCore::AVCaptureSessionInfo::supportsVideoSize): Deleted.
(WebCore::AVCaptureSessionInfo::bestSessionPresetForVideoDimensions): Deleted.

  • platform/mediastream/mac/AVMediaCaptureSource.mm:

(WebCore::AVMediaCaptureSource::AVMediaCaptureSource):

5:20 PM Changeset in webkit [211760] by Simon Fraser
  • 2 edits in trunk/Source/WebKit2

Tiled scrolling indicator gets doubled up on navigation
https://bugs.webkit.org/show_bug.cgi?id=167909

Reviewed by Tim Horton.

TiledCoreAnimationDrawingArea::updateDebugInfoLayer() would parent a new m_debugInfoLayer
in m_hostingLayer without removing the old one, causing the old tiled scrolling indicator layer
hierarchy to get left in the layer tree.

Also a couple of nullptr/0 -> nil.

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer):
(WebKit::TiledCoreAnimationDrawingArea::updateDebugInfoLayer):

4:29 PM Changeset in webkit [211759] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.25

Tag Safari-603.1.25.

4:25 PM Changeset in webkit [211758] by commit-queue@webkit.org
  • 10 edits
    2 adds in trunk

Allow some schemes to opt-out of CORS
https://bugs.webkit.org/show_bug.cgi?id=167795

Patch by Youenn Fablet <youennf@gmail.com> on 2017-02-06
Reviewed by Alex Christensen.

Source/WebCore:

Test: http/tests/security/bypassing-cors-checks-for-extension-urls.html

Adding the possibility to opt out of CORS for DocumentThreadableLoader clients (fetch and XHR).
This is made specific to the case of user extension URLs for pages running user scripts.
Introducing a boolean flag in Page for that purpose.
Introducing a helper routine in SchemeRegistry to centralize the various user script extension schemes.

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::DocumentThreadableLoader):

  • page/Frame.cpp:

(WebCore::Frame::injectUserScripts):

  • page/Page.h:

(WebCore::Page::setAsRunningUserScripts):
(WebCore::Page::isRunningUserScripts):

  • platform/SchemeRegistry.cpp:

(WebCore::SchemeRegistry::isUserExtensionScheme):

  • platform/SchemeRegistry.h:
  • testing/Internals.cpp:

(WebCore::Internals::setAsRunningUserScripts):

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

LayoutTests:

  • http/tests/security/bypassing-cors-checks-for-extension-urls-expected.txt: Added.
  • http/tests/security/bypassing-cors-checks-for-extension-urls.html: Added.
3:56 PM Changeset in webkit [211757] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

More build fixes after r211751
https://bugs.webkit.org/show_bug.cgi?id=166998

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
(WebKit::NetworkDataTaskSoup::authenticate):
(WebKit::NetworkDataTaskSoup::continueAuthenticate):
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
Use the correct partition for credentials.

3:50 PM Changeset in webkit [211756] by Chris Dumez
  • 11 edits in trunk

Align OwnPropertyKeys? with the HTML specification for cross-origin Window / Location objects
https://bugs.webkit.org/show_bug.cgi?id=167647
<rdar://problem/30339489>

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline web platform test now that more checks are passing.

  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:

Source/WebCore:

Align OwnPropertyKeys? with the HTML specification for cross-origin Window / Location objects:

In particular, the following changes were made:

  • Location:
    • We now return the following symbols as well: @@toStringTag, @@hasInstance, @@isConcatSpreadable as per [2].
  • Window:
    • We now return the following symbols as well: @@toStringTag, @@hasInstance, @@isConcatSpreadable as per [2].
    • We now return the indices of the child browsing contexts as per [1].
    • We now return the names of the child browsing contexts as per [3].

No new tests, updated / rebaselined existing tests.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::getOwnPropertySlotByIndex):
Index properties should be configurable as per:

(WebCore::inScope):
(WebCore::addScopedChildrenNames):
(WebCore::addCrossOriginPropertyNames):
(WebCore::addScopedChildrenIndexes):
(WebCore::addCrossOriginOwnPropertyNames):
(WebCore::JSDOMWindow::getOwnPropertyNames):

  • bindings/js/JSLocationCustom.cpp:

(WebCore::addCrossOriginPropertyNames):
(WebCore::addCrossOriginOwnPropertyNames):
(WebCore::JSLocation::getOwnPropertyNames):

LayoutTests:

Extend test coverage for OwnPropertyKeys? for cross-origin Window / Location objects.

  • http/tests/security/cross-frame-access-enumeration-expected.txt:
  • http/tests/security/cross-frame-access-enumeration.html:
  • http/tests/security/resources/cross-frame-iframe-for-enumeration-test.html:
  • js/dom/getOwnPropertyDescriptor-expected.txt:
  • js/resources/getOwnPropertyDescriptor.js:
3:47 PM Changeset in webkit [211755] by yoav@yoav.ws
  • 10 edits in trunk

http/tests/preload/dynamic_removing_preload.html fails to test what it should
https://bugs.webkit.org/show_bug.cgi?id=167792

Reviewed by Ryosuke Niwa.

Source/WebCore:

Cancel the link preload resource load when the link element is removed from the DOM.

No new tests, but unskipping an existing test: http/tests/preload/dynamic_removing_preload.html

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::removedFrom): Call m_linkLoader.cancelLoad().

  • loader/LinkLoader.cpp:

(WebCore::LinkLoader::cancelLoad): Clear m_preloadResourceClient.

  • loader/LinkLoader.h:
  • loader/LinkPreloadResourceClients.h:

(WebCore::LinkPreloadResourceClient::clearResource): Call m_resource->cancelLoad().

  • loader/SubresourceLoader.cpp:

(WebCore::LinkPreloadResourceClient::didFinishLoading): Change ASSERT to exempt cancelled loads.

LayoutTests:

  • TestExpectations: Unskip dynamic_removing_preload.html
  • http/tests/preload/dynamic_removing_preload-expected.txt:
  • http/tests/preload/dynamic_removing_preload.html: Switch test to use ResourceTiming.
3:47 PM Changeset in webkit [211754] by achristensen@apple.com
  • 5 edits in trunk/Source

More build fixes after r211751
https://bugs.webkit.org/show_bug.cgi?id=166998

Source/WebCore:

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::applyAuthenticationToRequest):

  • platform/network/soup/SocketStreamHandleImplSoup.cpp:

(WebCore::SocketStreamHandleImpl::create):

Source/WebKit/win:

  • WebDownloadCFNet.cpp:

(WebDownload::didReceiveAuthenticationChallenge):

3:27 PM Changeset in webkit [211753] by achristensen@apple.com
  • 5 edits in trunk/Source/WebCore

Fix non-cocoa builds after r211751.
https://bugs.webkit.org/show_bug.cgi?id=166998

  • platform/network/cf/ResourceHandleCFNet.cpp:

(WebCore::ResourceHandle::createCFURLConnection):
(WebCore::ResourceHandle::willSendRequest):
(WebCore::ResourceHandle::tryHandlePasswordBasedAuthentication):
(WebCore::ResourceHandle::receivedCredential):

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
(WebCore::ResourceHandle::receivedCredential):

  • platform/network/curl/ResourceHandleManager.cpp:

(WebCore::ResourceHandleManager::applyAuthenticationToRequest):

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::applyAuthenticationToRequest):
(WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
(WebCore::ResourceHandle::receivedCredential):

3:02 PM Changeset in webkit [211752] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit2

Update sandbox to allow CoreMedia to perform custom media loading.
https://bugs.webkit.org/show_bug.cgi?id=167700

Reviewed by Alexey Proskuryakov.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
2:45 PM Changeset in webkit [211751] by achristensen@apple.com
  • 25 edits
    14 adds in trunk

credentials should be partitioned by main document domain
https://bugs.webkit.org/show_bug.cgi?id=166998
Source/WebCore:

rdar://problem/22901123

Reviewed by Brady Eidson.

Covered by http/tests/security/credentials-iframes.html
Also added http/tests/security/credentials-from-different-domains.html to verify existing behavior without iframes.

  • Modules/websockets/WebSocketChannel.cpp:

(WebCore::WebSocketChannel::connect):

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

(WebCore::SecurityOrigin::domainForCachePartition):
Return emptyString instead of a null String because it is used as a key in a HashMap, and hashing null strings dereferences null.

  • page/SocketProvider.cpp:

(WebCore::SocketProvider::createSocketStreamHandle):

  • page/SocketProvider.h:
  • platform/network/CredentialStorage.cpp:

(WebCore::CredentialStorage::set):
(WebCore::CredentialStorage::get):
(WebCore::CredentialStorage::remove):

  • platform/network/CredentialStorage.h:

Partition credentials.

  • platform/network/ResourceHandleInternal.h:

(WebCore::ResourceHandleInternal::ResourceHandleInternal):

  • platform/network/cf/SocketStreamHandleImpl.h:

(WebCore::SocketStreamHandleImpl::create):

  • platform/network/cf/SocketStreamHandleImplCFNet.cpp:

(WebCore::SocketStreamHandleImpl::SocketStreamHandleImpl):
(WebCore::SocketStreamHandleImpl::getStoredCONNECTProxyCredentials):

  • platform/network/curl/SocketStreamHandleImpl.h:

(WebCore::SocketStreamHandleImpl::create):

  • platform/network/mac/ResourceHandleMac.mm:

(WebCore::ResourceHandle::createNSURLConnection):
(WebCore::ResourceHandle::willSendRequest):
(WebCore::ResourceHandle::tryHandlePasswordBasedAuthentication):
(WebCore::ResourceHandle::receivedCredential):

  • platform/network/soup/SocketStreamHandleImpl.h:

Source/WebKit/mac:

rdar://problem/22901123

Reviewed by Brady Eidson.

  • Misc/WebDownload.mm:
  • Plugins/WebBaseNetscapePluginView.mm:

(WebKit::getAuthenticationInfo):
Don't use partitioned credentials for WebKit1 plugins or downloads.
Downloads should be authenticated before becoming a download anyways.

Source/WebKit2:

rdar://problem/22901123

Reviewed by Brady Eidson.

  • NetworkProcess/NetworkDataTask.cpp:

(WebKit::NetworkDataTask::NetworkDataTask):

  • NetworkProcess/NetworkDataTask.h:

(WebKit::NetworkDataTask::partition):

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
(WebKit::NetworkDataTaskCocoa::tryPasswordBasedAuthentication):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

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

  • WebProcess/Network/WebSocketProvider.cpp:

(WebKit::WebSocketProvider::createSocketStreamHandle):

  • WebProcess/Network/WebSocketProvider.h:
  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::getAuthenticationInfo):

LayoutTests:

<rdar://problem/22901123>

Reviewed by Brady Eidson.

  • http/tests/security/credentials-from-different-domains-expected.txt: Added.
  • http/tests/security/credentials-from-different-domains.html: Added.
  • http/tests/security/credentials-iframes-expected.txt: Added.
  • http/tests/security/credentials-iframes.html: Added.
  • http/tests/security/resources/cors-basic-auth.php: Added.
  • http/tests/security/resources/credentials-from-different-domains-continued-1.html: Added.
  • http/tests/security/resources/credentials-from-different-domains-continued-2.html: Added.
  • http/tests/security/resources/credentials-iframes-continued.html: Added.
  • http/tests/security/resources/credentials-iframes-different-domain.html: Added.
  • http/tests/security/resources/credentials-iframes-same-domain.html: Added.
  • platform/mac-wk1/http: Added.
  • platform/mac-wk1/http/security: Added.
  • platform/mac-wk1/http/security/credentials-iframes-expected.txt: Added.

DumpRenderTree prints out the entire URL of the authentication challenge.
WebKitTestRunner only prints out the host and port.
Both results show the fact that no credentials were sent on the second request.

2:33 PM Changeset in webkit [211750] by Simon Fraser
  • 8 edits in trunk

Safari pages are blank sometimes (missing tiles)
https://bugs.webkit.org/show_bug.cgi?id=167904

Reviewed by Tim Horton.

Source/WebCore:

After r211683 we failed to udpate the "inWindow" flag on the page tiled layer, because
usingTiledBacking() on GraphicsLayer confusingly was false for the page tiled layer.

Fix by removing usingTiledBacking() entirely, and checking for tiledBacking(),
looking at the layer type when necessary.

Tested by tiled-drawing/tiled-backing-in-window.html

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::GraphicsLayer):
(WebCore::GraphicsLayer::setIsInWindowIncludingDescendants): This is the bug fix.
(WebCore::GraphicsLayer::getDebugBorderInfo):
(WebCore::GraphicsLayer::dumpProperties):

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::usingTiledBacking): Deleted.

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::recursiveCommitChanges):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
(WebCore::GraphicsLayerCA::changeLayerTypeTo):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::willDestroyLayer):
(WebCore::RenderLayerBacking::compositingLayerType):

  • rendering/RenderLayerCompositor.cpp: A bit more logging.

(WebCore::RenderLayerCompositor::setIsInWindow):
(WebCore::RenderLayerCompositor::attachRootLayer):

LayoutTests:

New result; this test detected the bug.

  • tiled-drawing/tiled-backing-in-window-expected.txt:
2:20 PM Changeset in webkit [211749] by achristensen@apple.com
  • 1 edit
    1 delete in trunk/Source/ThirdParty/libwebrtc

[WebRTC] Remove unneeded build directory accidentally checked in with libwebrtc source.

Reviewed by Youenn Fablet.

  • third_party/usrsctp/build: Removed.
1:58 PM Changeset in webkit [211748] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Change the CSS animation timer a to be little more than 60fps to ensure we hit that frame rate
https://bugs.webkit.org/show_bug.cgi?id=167825

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-02-06
Reviewed by Simon Fraser.

The system timer fires little bit slower than 60fps. This might cause the
frame to be missed and hence it can lower the frame rate significantly. The
rAF timer was set to 15ms for the same reason. So set the repeated CSS
animation timer also to 15ms.

  • page/animation/CSSAnimationController.cpp:
1:49 PM Changeset in webkit [211747] by andersca@apple.com
  • 12 edits
    1 add in trunk/Source/WebKit2

Crash child processes if they receive an invalid message
https://bugs.webkit.org/show_bug.cgi?id=167900

Reviewed by Dan Bernstein.

Previously, some processes would try to gracefully exit, others would just drop messages leading to weird bugs.
Instead, set app-specific crash information to the message that failed to be decoded, and then crash.

  • DatabaseProcess/DatabaseProcess.cpp:

(WebKit::DatabaseProcess::didReceiveInvalidMessage): Deleted.

  • DatabaseProcess/DatabaseProcess.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::didReceiveInvalidMessage): Deleted.

  • NetworkProcess/NetworkProcess.h:
  • PluginProcess/PluginProcess.cpp:

(WebKit::PluginProcess::didReceiveInvalidMessage): Deleted.

  • PluginProcess/PluginProcess.h:
  • Shared/ChildProcess.h:
  • Shared/Cocoa/ChildProcessCocoa.mm: Added.

(WebKit::ChildProcess::didReceiveInvalidMessage):

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::didReceiveInvalidMessage): Deleted.

  • WebProcess/WebProcess.h:
1:49 PM Changeset in webkit [211746] by jer.noble@apple.com
  • 14 edits
    10 adds in trunk

Playback stalls when a SourceBuffer append causes frame eviction
https://bugs.webkit.org/show_bug.cgi?id=167834

Reviewed by Eric Carlson.

PerformanceTests:

Add an in-page performance test measuring the amount of time required
to append a large amount of media data to a SourceBuffer, and then to
completely remove that data 30s at a time.

Add a microbenchmark for MediaTime which measures the amount of time
required to create a 1M entry std::map and traverse the map 1M times.

  • Media/MSERemoveCodedFrames.html: Added.
  • Media/media-source-loader.js:

(MediaSourceLoader.prototype.get duration):

  • MediaTime/Configurations/Base.xcconfig: Added.
  • MediaTime/Configurations/DebugRelease.xcconfig: Added.
  • MediaTime/Makefile: Added.
  • MediaTime/MediaTime.xcodeproj/project.pbxproj: Added.
  • MediaTime/main.cpp: Added.

(performTest):
(test):
(main):

  • Skipped:

Source/WebCore:

Test: PerformanceTests/Media/MSERemoveCodedFrames.html

Optimize searching through SampleMap by presentationTime.

Many of the methods exposed by PresentationOrderSampleMap used the bare std::equal_range,
lower_bound, or upper_bound methods. Unlike those methods exposed on std::map, the bare
search methods perform a linear O(n) search, rather than a the binary O(log(n)) search used
by std::map. Rewrite those methods using the bare methods in terms of the std::map search
methods.

Drive-by fix: rename findSampleOnOrAfterPresentationTime to
findSampleStartingOnOrAfterPresentationTime to make the behavior of the method more
explicit.

  • Modules/mediasource/SampleMap.cpp:

(WebCore::PresentationOrderSampleMap::findSampleContainingPresentationTime):
(WebCore::PresentationOrderSampleMap::findSampleStartingOnOrAfterPresentationTime):
(WebCore::PresentationOrderSampleMap::reverseFindSampleBeforePresentationTime):
(WebCore::DecodeOrderSampleMap::findSyncSampleAfterPresentationTime):
(WebCore::PresentationOrderSampleMap::findSamplesBetweenPresentationTimes):
(WebCore::PresentationOrderSampleMap::findSamplesWithinPresentationRange):
(WebCore::PresentationOrderSampleMap::findSampleOnOrAfterPresentationTime): Deleted.

  • Modules/mediasource/SampleMap.h:

(WebCore::PresentationOrderSampleMap::begin):
(WebCore::PresentationOrderSampleMap::end):
(WebCore::PresentationOrderSampleMap::rbegin):
(WebCore::PresentationOrderSampleMap::rend):
(WebCore::DecodeOrderSampleMap::begin):
(WebCore::DecodeOrderSampleMap::end):
(WebCore::DecodeOrderSampleMap::rbegin):
(WebCore::DecodeOrderSampleMap::rend):
(WebCore::SampleMap::SampleMap):
(WebCore::SampleMap::sizeInBytes):
(WebCore::SampleMap::decodeOrder):
(WebCore::SampleMap::presentationOrder):

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::removeSamplesFromTrackBuffer):
(WebCore::SourceBuffer::removeCodedFrames):
(WebCore::SourceBuffer::reenqueueMediaForTime):

  • WebCore.xcodeproj/project.pbxproj:

Source/WTF:

Optimize the MediaTime class; specifically the compare() method. The class only
needs 6 bits to store the TimeFlags, so make that a uint8_t rather than uint32_t.
The implementation is slightly simpler if the TimeScale is unsigned, so make that
a uint32_t rather than int32_t. Inline the comparison operators. Optimize the equality
comparison by bitwise-and'ing the flags together and masking the result. Optimize for
common comparison scenarios (equal timeScales, equal timeValues(), etc.). Attempt the
mathematically simpler simpler method for comparing ratios, and only fall back to the
complex method if the results of multiplying the timeScale by the timeValue overflows.

  • wtf/MediaTime.cpp:

(WTF::greatestCommonDivisor):
(WTF::leastCommonMultiple):
(WTF::signum):
(WTF::MediaTime::MediaTime):
(WTF::MediaTime::createWithFloat):
(WTF::MediaTime::createWithDouble):
(WTF::MediaTime::operator+):
(WTF::MediaTime::operator-):
(WTF::MediaTime::operator!):
(WTF::MediaTime::operator bool):
(WTF::MediaTime::compare):
(WTF::MediaTime::setTimeScale):
(WTF::abs):
(WTF::MediaTime::operator<): Deleted.
(WTF::MediaTime::operator>): Deleted.
(WTF::MediaTime::operator!=): Deleted.
(WTF::MediaTime::operator==): Deleted.
(WTF::MediaTime::operator>=): Deleted.
(WTF::MediaTime::operator<=): Deleted.

  • wtf/MediaTime.h:

Tools:

Add new correctness tests for the Webcore::SampleMap class. Add additional subtests
for the WTF::MediaTime class.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/MediaTime.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/SampleMap.cpp: Added.

(WTF::operator<<):
(TestWebKitAPI::TestSample::create):
(TestWebKitAPI::TestSample::TestSample):
(TestWebKitAPI::TEST_F):

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

Skip media/audio-dealloc-crash.html on ios-simulator.

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
12:18 PM Changeset in webkit [211744] by Chris Dumez
  • 8 edits
    3 deletes in trunk/Source/WebKit2

[WK2] Drop legacy WKBundlePageDiagnosticLoggingClient API
https://bugs.webkit.org/show_bug.cgi?id=167883
<rdar://problem/30376695>

Reviewed by Sam Weinig.

Drop legacy WKBundlePageDiagnosticLoggingClient API as I am not aware of any remaining client.
All clients have now switched to the equivalent UIProcess-side API.

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundlePageSetDiagnosticLoggingClient): Deleted.

  • WebProcess/InjectedBundle/API/c/WKBundlePage.h:
  • WebProcess/InjectedBundle/API/c/WKBundlePageDiagnosticLoggingClient.h: Removed.
  • WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.cpp: Removed.
  • WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.h: Removed.
  • WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.cpp:

(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessage):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithResult):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithValue):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::close):
(WebKit::WebPage::initializeInjectedBundleDiagnosticLoggingClient): Deleted.

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::injectedBundleUIClient):
(WebKit::WebPage::injectedBundleDiagnosticLoggingClient): Deleted.

12:06 PM Changeset in webkit [211743] by sbarati@apple.com
  • 3 edits in trunk/PerformanceTests

Make ARES-6 work from the CLI again
https://bugs.webkit.org/show_bug.cgi?id=167895

Reviewed by Michael Saboff.

  • ARES-6/driver.js:

(Driver.prototype.readyTrigger):
(Driver.prototype.disableTrigger):

  • ARES-6/stats.js:

(Stats.prototype.toString.span.span):
(Stats.prototype.toString.return.span):
(Stats.prototype.toString):

11:46 AM Changeset in webkit [211742] by Ryan Haddad
  • 2 edits in trunk/Tools

Change capitalization in platform name after r211735.

Unreviewed dashboard fix.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:

(WebKitBuildbot):

11:21 AM Changeset in webkit [211741] by commit-queue@webkit.org
  • 30 edits
    3 moves in trunk/Source

Rename AnimationController to CSSAnimationController
https://bugs.webkit.org/show_bug.cgi?id=167829

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-02-06
Reviewed by Simon Fraser.

Source/WebCore:

AnimationController is a very generic name. The current function of this
class is CSS animation.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::computeRenderStyleForProperty):

  • dom/Document.cpp:
  • history/CachedFrame.cpp:
  • page/Frame.cpp:

(WebCore::Frame::Frame):

  • page/Frame.h:

(WebCore::Frame::animation):

  • page/FrameView.cpp:
  • page/Page.cpp:
  • page/animation/AnimationBase.cpp:
  • page/animation/CSSAnimationController.cpp: Renamed from Source/WebCore/page/animation/AnimationController.cpp.

(WebCore::AnimationPrivateUpdateBlock::AnimationPrivateUpdateBlock):
(WebCore::AnimationPrivateUpdateBlock::~AnimationPrivateUpdateBlock):
(WebCore::CSSAnimationControllerPrivate::CSSAnimationControllerPrivate):
(WebCore::CSSAnimationControllerPrivate::~CSSAnimationControllerPrivate):
(WebCore::CSSAnimationControllerPrivate::ensureCompositeAnimation):
(WebCore::CSSAnimationControllerPrivate::clear):
(WebCore::CSSAnimationControllerPrivate::updateAnimations):
(WebCore::CSSAnimationControllerPrivate::updateAnimationTimerForRenderer):
(WebCore::CSSAnimationControllerPrivate::updateAnimationTimer):
(WebCore::CSSAnimationControllerPrivate::updateStyleIfNeededDispatcherFired):
(WebCore::CSSAnimationControllerPrivate::fireEventsAndUpdateStyle):
(WebCore::CSSAnimationControllerPrivate::startUpdateStyleIfNeededDispatcher):
(WebCore::CSSAnimationControllerPrivate::addEventToDispatch):
(WebCore::CSSAnimationControllerPrivate::addElementChangeToDispatch):
(WebCore::CSSAnimationControllerPrivate::animationFrameCallbackFired):
(WebCore::CSSAnimationControllerPrivate::animationTimerFired):
(WebCore::CSSAnimationControllerPrivate::isRunningAnimationOnRenderer):
(WebCore::CSSAnimationControllerPrivate::isRunningAcceleratedAnimationOnRenderer):
(WebCore::CSSAnimationControllerPrivate::suspendAnimations):
(WebCore::CSSAnimationControllerPrivate::resumeAnimations):
(WebCore::CSSAnimationControllerPrivate::animationsAreSuspendedForDocument):
(WebCore::CSSAnimationControllerPrivate::detachFromDocument):
(WebCore::CSSAnimationControllerPrivate::suspendAnimationsForDocument):
(WebCore::CSSAnimationControllerPrivate::resumeAnimationsForDocument):
(WebCore::CSSAnimationControllerPrivate::startAnimationsIfNotSuspended):
(WebCore::CSSAnimationControllerPrivate::setAllowsNewAnimationsWhileSuspended):
(WebCore::CSSAnimationControllerPrivate::pauseAnimationAtTime):
(WebCore::CSSAnimationControllerPrivate::pauseTransitionAtTime):
(WebCore::CSSAnimationControllerPrivate::beginAnimationUpdateTime):
(WebCore::CSSAnimationControllerPrivate::beginAnimationUpdate):
(WebCore::CSSAnimationControllerPrivate::endAnimationUpdate):
(WebCore::CSSAnimationControllerPrivate::receivedStartTimeResponse):
(WebCore::CSSAnimationControllerPrivate::getAnimatedStyleForRenderer):
(WebCore::CSSAnimationControllerPrivate::computeExtentOfAnimation):
(WebCore::CSSAnimationControllerPrivate::numberOfActiveAnimations):
(WebCore::CSSAnimationControllerPrivate::addToAnimationsWaitingForStyle):
(WebCore::CSSAnimationControllerPrivate::removeFromAnimationsWaitingForStyle):
(WebCore::CSSAnimationControllerPrivate::styleAvailable):
(WebCore::CSSAnimationControllerPrivate::addToAnimationsWaitingForStartTimeResponse):
(WebCore::CSSAnimationControllerPrivate::removeFromAnimationsWaitingForStartTimeResponse):
(WebCore::CSSAnimationControllerPrivate::startTimeResponse):
(WebCore::CSSAnimationControllerPrivate::animationWillBeRemoved):
(WebCore::CSSAnimationControllerPrivate::addToAnimationsDependentOnScroll):
(WebCore::CSSAnimationControllerPrivate::removeFromAnimationsDependentOnScroll):
(WebCore::CSSAnimationControllerPrivate::scrollWasUpdated):
(WebCore::CSSAnimationController::CSSAnimationController):
(WebCore::CSSAnimationController::~CSSAnimationController):
(WebCore::CSSAnimationController::cancelAnimations):
(WebCore::CSSAnimationController::updateAnimations):
(WebCore::CSSAnimationController::getAnimatedStyleForRenderer):
(WebCore::CSSAnimationController::computeExtentOfAnimation):
(WebCore::CSSAnimationController::notifyAnimationStarted):
(WebCore::CSSAnimationController::pauseAnimationAtTime):
(WebCore::CSSAnimationController::numberOfActiveAnimations):
(WebCore::CSSAnimationController::pauseTransitionAtTime):
(WebCore::CSSAnimationController::isRunningAnimationOnRenderer):
(WebCore::CSSAnimationController::isRunningAcceleratedAnimationOnRenderer):
(WebCore::CSSAnimationController::isSuspended):
(WebCore::CSSAnimationController::suspendAnimations):
(WebCore::CSSAnimationController::resumeAnimations):
(WebCore::CSSAnimationController::allowsNewAnimationsWhileSuspended):
(WebCore::CSSAnimationController::setAllowsNewAnimationsWhileSuspended):
(WebCore::CSSAnimationController::serviceAnimations):
(WebCore::CSSAnimationController::animationsAreSuspendedForDocument):
(WebCore::CSSAnimationController::detachFromDocument):
(WebCore::CSSAnimationController::suspendAnimationsForDocument):
(WebCore::CSSAnimationController::resumeAnimationsForDocument):
(WebCore::CSSAnimationController::startAnimationsIfNotSuspended):
(WebCore::CSSAnimationController::beginAnimationUpdate):
(WebCore::CSSAnimationController::endAnimationUpdate):
(WebCore::CSSAnimationController::supportsAcceleratedAnimationOfProperty):
(WebCore::CSSAnimationController::wantsScrollUpdates):
(WebCore::CSSAnimationController::scrollWasUpdated):
(WebCore::CSSAnimationController::hasAnimations):

  • page/animation/CSSAnimationController.h: Renamed from Source/WebCore/page/animation/AnimationController.h.

(WebCore::AnimationUpdateBlock::AnimationUpdateBlock):
(WebCore::AnimationUpdateBlock::~AnimationUpdateBlock):

  • page/animation/CSSAnimationControllerPrivate.h: Renamed from Source/WebCore/page/animation/AnimationControllerPrivate.h.

(WebCore::CSSAnimationControllerPrivate::hasAnimations):
(WebCore::CSSAnimationControllerPrivate::isSuspended):
(WebCore::CSSAnimationControllerPrivate::setBeginAnimationUpdateTime):
(WebCore::CSSAnimationControllerPrivate::allowsNewAnimationsWhileSuspended):
(WebCore::CSSAnimationControllerPrivate::wantsScrollUpdates):
(WebCore::CSSAnimationControllerPrivate::scrollPosition):

  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::singleton):

  • page/animation/CompositeAnimation.cpp:

(WebCore::CompositeAnimation::CompositeAnimation):

  • page/animation/CompositeAnimation.h:

(WebCore::CompositeAnimation::create):
(WebCore::CompositeAnimation::animationController):

  • page/animation/ImplicitAnimation.cpp:
  • page/animation/KeyframeAnimation.cpp:
  • page/ios/FrameIOS.mm:
  • platform/graphics/GraphicsLayer.h:
  • rendering/RenderElement.h:
  • rendering/RenderLayer.cpp:
  • rendering/RenderLayerBacking.cpp:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresCompositingForAnimation):

  • rendering/RenderObject.cpp:
  • rendering/RenderObject.h:

(WebCore::RenderObject::animation):

  • testing/Internals.cpp:

Source/WebKit/mac:

  • WebView/WebFrame.mm:
  • WebView/WebView.mm:

Source/WebKit/win:

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

Static Analyzer: JSContext.mm: Incorrect decrement of the reference count of an object
https://bugs.webkit.org/show_bug.cgi?id=167848

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-06
Reviewed by Saam Barati.

Source/JavaScriptCore/API/JSContext.mm:87:5: warning: Incorrect decrement of the reference count of an object that is not owned at this point by the caller

[self.exceptionHandler release];

1 warning generated.

  • API/JSContext.mm:

(-[JSContext dealloc]):
Use the ivar in dealloc instead of going through the getter.

11:13 AM Changeset in webkit [211739] by Jon Davis
  • 3 edits
    2 adds in trunk/Websites/webkit.org

Add a survey to learn how people use WebKit Nightly builds
https://bugs.webkit.org/show_bug.cgi?id=167748

Reviewed by Joseph Pecoraro.

  • wp-content/themes/webkit/functions.php:
  • wp-content/themes/webkit/nightly-start.php:
  • wp-content/themes/webkit/nightly-survey.php: Added.
  • wp-content/themes/webkit/survey.json: Added.
11:06 AM Changeset in webkit [211738] by Alan Bujtas
  • 11 edits in trunk/Source/WebCore

Simple line layout: Use simplified text measuring when possible.
https://bugs.webkit.org/show_bug.cgi?id=167843
<rdar://problem/30364907>

Reviewed by Antti Koivisto.

This patch adds a simplified version of text width measuring.
Certain type of text runs (no spacing etc) only require a subset of what we
currently do in FontCascade::width().

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::widthForSimpleText):

  • platform/graphics/FontCascade.h:
  • platform/graphics/WidthCache.h:

(WebCore::WidthCache::add):
(WebCore::WidthCache::addSlowCase):

  • platform/graphics/WidthIterator.cpp:

(WebCore::WidthIterator::advanceInternal):

  • rendering/RenderText.cpp:

(WebCore::RenderText::styleDidChange):
(WebCore::RenderText::setRenderedText):
(WebCore::RenderText::computeCanUseSimplifiedTextMeasuring):

  • rendering/RenderText.h:

(WebCore::RenderText::canUseSimplifiedTextMeasuring):

  • rendering/SimpleLineLayoutFlowContents.cpp:

(WebCore::SimpleLineLayout::initializeSegments):

  • rendering/SimpleLineLayoutFlowContents.h:
  • rendering/SimpleLineLayoutTextFragmentIterator.cpp:

(WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragmentIterator):
(WebCore::SimpleLineLayout::TextFragmentIterator::textWidth):

  • rendering/SimpleLineLayoutTextFragmentIterator.h:
10:59 AM Changeset in webkit [211737] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch/Source

Merge r211666. rdar://problem/30167791

10:55 AM Changeset in webkit [211736] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Null check the WebKit::RemoteObjectProxy object before calling it
https://bugs.webkit.org/show_bug.cgi?id=167891
rdar://problem/30229358

Reviewed by Tim Horton.

If a _WKRemoteObjectRegistry invocation reply block outlives its underlying WebKit::RemoteObjectProxy object,
we'll crash trying to send an unused reply to it. Work around this crash by adding a null check before calling
sendUnusedReply.

While this fixes the crash it will lead to leaks in the process that holds on to the reply block. A more long term fix
would be to manage the reply block checkers and call sendUnusedReply when invalidating the _WKRemoteObjectRegistry.

  • Shared/API/Cocoa/_WKRemoteObjectRegistry.mm:

(-[_WKRemoteObjectRegistry _invokeMethod:]):

10:38 AM Changeset in webkit [211735] by ap@apple.com
  • 5 edits in trunk/Tools

Move the Leaks bot to Sierra
https://bugs.webkit.org/show_bug.cgi?id=167886

Reviewed by Daniel Bates.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
  • BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
  • BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js:

(LeaksViewer._displayURLPrompt):

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:

(WebKitBuildbot):

10:35 AM WebKitGTK/2.14.x edited by Michael Catanzaro
(diff)
10:00 AM Changeset in webkit [211734] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[Soup] Deadlock in NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=167876

Reviewed by Michael Catanzaro.

WebKitSoupRequestInputStream uses a read lock. What is happening is that webkitSoupRequestInputStreamAddData
takes the lock, and it calls webkitSoupRequestInputStreamPendingReadAsyncComplete with the lock help. That
causes webkitSoupRequestInputStreamReadAsync to be called again to read the next chunk, but in the same run loop
operation. We don't really need the read lock because both webkitSoupRequestInputStreamAddData and
webkitSoupRequestInputStreamReadAsync shoudl always be called from the main thread.

  • WebProcess/soup/WebKitSoupRequestInputStream.cpp:

(webkitSoupRequestInputStreamReadAsync): Remove the read lock and assert if called from a secondary thread.
(webkitSoupRequestInputStreamAddData): Ditto.

9:49 AM Changeset in webkit [211733] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

Resource usage overlay should ignore mouse events outside bounds by default
https://bugs.webkit.org/show_bug.cgi?id=167874

Reviewed by Andreas Kling.

It's overriding the default causing that the first click after the overlay is shown is always handled by the
overlay even when clicked outside bounds. It should only be set false while dragging.

  • page/ResourceUsageOverlay.cpp:

(WebCore::ResourceUsageOverlay::initialize):

9:47 AM Changeset in webkit [211732] by Chris Dumez
  • 5 edits
    2 deletes in trunk/LayoutTests/imported/w3c

Re-sync html/browsers/origin/cross-origin-objects tests
https://bugs.webkit.org/show_bug.cgi?id=167881

Reviewed by Youenn Fablet.

Re-sync html/browsers/origin/cross-origin-objects tests from upstream a052787d.

  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions-expected.txt: Removed.
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html: Removed.
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html:
  • web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html:
  • web-platform-tests/html/browsers/origin/cross-origin-objects/w3c-import.log:
9:36 AM Changeset in webkit [211731] by Ryan Haddad
  • 2 edits in trunk/PerformanceTests

Skip ARES-6 on performance bots
https://bugs.webkit.org/show_bug.cgi?id=167863

Unreviewed test gardening.

ES6SampleBench was renamed to ARES-6, so this should be updated in PerformanceTests/Skipped as well.

  • Skipped:
9:35 AM Changeset in webkit [211730] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

CrashTracer: com.apple.WebKit.WebContent at WebCore: WebCore::Node::invalidateStyle
https://bugs.webkit.org/show_bug.cgi?id=167878
rdar://problem/30251840

Reviewed by Andreas Kling.

Speculative fix.

We are trying to invalidate a null node from ~PostResolutionCallbackDisabler. Looks like the only way
this could happen is if HTMLFrameOwnerElement::scheduleinvalidateStyleAndLayerComposition is called
with null 'this'. There is one place where this might happen.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::attachRootLayer): Add null check.

9:28 AM Changeset in webkit [211729] by Ryan Haddad
  • 11 edits
    2 deletes in trunk

Unreviewed, rolling out r211722.

This change introduced a LayoutTest failure on mac-wk2.

Reverted changeset:

"[Modern Media Controls] Improve handling of <video> with only
audio tracks"
https://bugs.webkit.org/show_bug.cgi?id=167836
http://trac.webkit.org/changeset/211722

9:22 AM Changeset in webkit [211728] by eric.carlson@apple.com
  • 19 edits
    2 adds in trunk/Source/WebCore

[MediaStream Mac] Stop using AVSampleBufferAudioRenderer
https://bugs.webkit.org/show_bug.cgi?id=167821

Reviewed by Jer Noble.

  • WebCore.xcodeproj/project.pbxproj: Add new files.
  • platform/audio/mac/AudioSampleDataSource.cpp:

(WebCore::AudioSampleDataSource::pullSamplesInternal): Don't assume the first timestamp from the
render proc after a pause is zero.

Stop using an audio renderer for each audio track. No audio renderers means we don't need to use
an AVSampleBufferRenderSynchronizer.

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

(-[WebAVSampleBufferStatusChangeListener invalidate]): No more audio renderers.
(-[WebAVSampleBufferStatusChangeListener observeValueForKeyPath:ofObject:change:context:]): Ditto.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC): Ditto.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::~MediaPlayerPrivateMediaStreamAVFObjC): Pause

audio tracks explicitly.

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::audioSourceProvider): Remove the existing code,

it was incorrect and not thread safe.

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::flushRenderers): No more audio renderers.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayer): No more render synchronizer.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::destroyLayer): Ditto.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::play): Start each audio track.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::pause): Pause each audio track.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVolume): Pass the command to each audio track.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setMuted): Ditto.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::streamTime): No more render synchronizer.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::sampleBufferUpdated): Don't handle audio samples.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateTracks): Update for audio track class change. No
more render synchronizer.
(-[WebAVSampleBufferStatusChangeListener beginObservingRenderer:]): Deleted.
(-[WebAVSampleBufferStatusChangeListener stopObservingRenderer:]): Deleted.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueAudioSample): Deleted.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::requestNotificationWhenReadyForAudioData): Deleted.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::createAudioRenderer): Deleted.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::destroyAudioRenderer): Deleted.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::destroyAudioRenderers): Deleted.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::rendererStatusDidChange): Deleted.

  • platform/mediastream/AudioTrackPrivateMediaStream.h:
  • platform/mediastream/MediaStreamTrackPrivate.cpp:

(WebCore::MediaStreamTrackPrivate::MediaStreamTrackPrivate): add/removeObserver takes a reference,
not a pointer.
(WebCore::MediaStreamTrackPrivate::~MediaStreamTrackPrivate): Ditto.
(WebCore::MediaStreamTrackPrivate::videoSampleAvailable): Renamed from sourceHasMoreMediaData.
(WebCore::MediaStreamTrackPrivate::sourceHasMoreMediaData): Deleted.

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

(WebCore::RealtimeMediaSource::addObserver): Take a reference, not a pointer.
(WebCore::RealtimeMediaSource::removeObserver): Ditto.
(WebCore::RealtimeMediaSource::videoSampleAvailable): Renamed from mediaDataUpdated.
(WebCore::RealtimeMediaSource::audioSamplesAvailable): New.
(WebCore::RealtimeMediaSource::stop): Drive-by cleanup.
(WebCore::RealtimeMediaSource::requestStop): Ditto.
(WebCore::RealtimeMediaSource::mediaDataUpdated): Deleted.

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/mac/AVAudioCaptureSource.h:
  • platform/mediastream/mac/AVAudioCaptureSource.mm:

(WebCore::AVAudioCaptureSource::AVAudioCaptureSource):
(WebCore::AVAudioCaptureSource::addObserver):
(WebCore::AVAudioCaptureSource::shutdownCaptureSession):
(WebCore::AVAudioCaptureSource::captureOutputDidOutputSampleBufferFromConnection):
(WebCore::operator==): Deleted.
(WebCore::operator!=): Deleted.

  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::processNewFrame): Call videoSampleAvailable, not mediaDataUpdated.

Render audio with a CoreAudio output unit.

  • platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp: Added.

(WebCore::AudioTrackPrivateMediaStreamCocoa::AudioTrackPrivateMediaStreamCocoa):
(WebCore::AudioTrackPrivateMediaStreamCocoa::~AudioTrackPrivateMediaStreamCocoa):
(WebCore::AudioTrackPrivateMediaStreamCocoa::playInternal):
(WebCore::AudioTrackPrivateMediaStreamCocoa::play):
(WebCore::AudioTrackPrivateMediaStreamCocoa::pause):
(WebCore::AudioTrackPrivateMediaStreamCocoa::setVolume):
(WebCore::AudioTrackPrivateMediaStreamCocoa::setupAudioUnit):
(WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable):
(WebCore::AudioTrackPrivateMediaStreamCocoa::sourceStopped):
(WebCore::AudioTrackPrivateMediaStreamCocoa::render):
(WebCore::AudioTrackPrivateMediaStreamCocoa::inputProc):

  • platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h: Added.
  • platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
  • platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:

(WebCore::alignTo16Bytes):
(WebCore::MockRealtimeAudioSourceMac::emitSampleBuffers):
(WebCore::MockRealtimeAudioSourceMac::reconfigure): Minor cleanup.
(WebCore::MockRealtimeAudioSourceMac::render): Ditto.

  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:

(WebCore::MockRealtimeVideoSourceMac::updateSampleBuffer): Call videoSampleAvailable, not mediaDataUpdated.

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

(WebCore::WebAudioSourceProviderAVFObjC::~WebAudioSourceProviderAVFObjC):
(WebCore::WebAudioSourceProviderAVFObjC::provideInput): Use a mutex. Get rid of m_writeAheadCount,
it is always 0.
(WebCore::WebAudioSourceProviderAVFObjC::prepare): Use a lock.
(WebCore::WebAudioSourceProviderAVFObjC::unprepare): Ditto.
(WebCore::WebAudioSourceProviderAVFObjC::process): Ditto.

  • platform/mock/MockRealtimeAudioSource.h:

(WebCore::MockRealtimeAudioSource::renderInterval): Decrease the render interval.

9:17 AM WebKitGTK/2.14.x edited by Michael Catanzaro
(diff)
9:07 AM Changeset in webkit [211727] by matthew_hanson@apple.com
  • 11 edits
    2 adds in branches/safari-603-branch

Merge r211653. rdar://problem/29872943

8:54 AM Changeset in webkit [211726] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Guard and unguard ports in a much less intrusive way
https://bugs.webkit.org/show_bug.cgi?id=167813

Reviewed by Sam Weinig.

Instead of adopting mach_port_construct/mach_port_destruct, just guard and unguard the ports where appropriate.

  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::Connection::platformInitialize):
(IPC::Connection::open):

8:21 AM Changeset in webkit [211725] by Jonathan Bedard
  • 3 edits in trunk/Tools

Prevent app crash on launch during simctl install workaround
https://bugs.webkit.org/show_bug.cgi?id=167685

Reviewed by Daniel Bates.

  • Scripts/webkitpy/port/simulator_process.py:

(SimulatorProcess.init): Pass environment to install.

  • Scripts/webkitpy/xcode/simulator.py:

(Device.install_app): Accept environment, pass environment to launch.

8:19 AM Changeset in webkit [211724] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

[Modern Media Controls] Add a backdrop filter to the start button on macOS
https://bugs.webkit.org/show_bug.cgi?id=167879
<rdar://problem/30375174>

Patch by Antoine Quint <Antoine Quint> on 2017-02-06
Reviewed by Eric Carlson.

Source/WebCore:

Add a backdrop filter to the start button on macOS.

Test: media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-start-button-style.html

  • Modules/modern-media-controls/controls/macos-inline-media-controls.css:

(.media-controls.mac.inline > button.start > div):

LayoutTests:

Add a new test that checks that the expected backdrop filter is applied to the start button on macOS.

  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-start-button-style-expected.txt: Added.
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-start-button-style.html: Added.
8:16 AM Changeset in webkit [211723] by commit-queue@webkit.org
  • 22 edits
    4 copies
    10 adds in trunk

[Modern Media Controls] Bring fullscreen controls up to spec
https://bugs.webkit.org/show_bug.cgi?id=167875
<rdar://problem/29611222>

Patch by Antoine Quint <Antoine Quint> on 2017-02-06
Reviewed by Eric Carlson.

Source/WebCore:

We update the fullscreen PiP icon to have the correct size and add two new buttons
around the volume slider, "volume-down" to bring the volume to 0 and "volume-up"
to bring the volume to 1.

To accomodate the new volume buttons, we move the volume slider inside an additional
ButtonsContainer object, along with the two new buttons.

Tests: media/modern-media-controls/volume-down-support/volume-down-support.html

media/modern-media-controls/volume-up-support/volume-up-support.html

  • Modules/modern-media-controls/controls/icon-service.js:
  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.css:

(.media-controls.mac.fullscreen button.volume-down):
(.media-controls.mac.fullscreen button.volume-up):

  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:
  • Modules/modern-media-controls/controls/volume-down-button.js: Added.

(VolumeDownButton):

  • Modules/modern-media-controls/controls/volume-slider.js:

(VolumeSlider):

  • Modules/modern-media-controls/controls/volume-up-button.js: Added.

(VolumeUpButton):

(MediaController.prototype._updateControlsIfNeeded):

  • Modules/modern-media-controls/media/volume-down-support.js: Added.

(VolumeDownSupport.prototype.get control):
(VolumeDownSupport.prototype.buttonWasPressed):
(VolumeDownSupport):

  • Modules/modern-media-controls/media/volume-up-support.js: Added.

(VolumeUpSupport.prototype.get control):
(VolumeUpSupport.prototype.buttonWasPressed):
(VolumeUpSupport):

  • WebCore.xcodeproj/project.pbxproj:

LayoutTests:

Rebaseline some existing tests due to the addition of the volume-down and volume-up
buttons as well as the width change of the PiP icon and add a couple of new tests to
check the behavior of the volume-down and volume-up buttons.

  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-constructor-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-constructor.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-styles-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-styles.html:
  • media/modern-media-controls/media-controller/media-controller-fullscreen-ltr.html:
  • media/modern-media-controls/volume-down-support/volume-down-support-expected.txt: Added.
  • media/modern-media-controls/volume-down-support/volume-down-support.html: Added.
  • media/modern-media-controls/volume-up-support/volume-up-support-expected.txt: Added.
  • media/modern-media-controls/volume-up-support/volume-up-support.html: Added.
  • platform/ios-simulator/TestExpectations:
8:09 AM WebKitGTK/2.14.x edited by Michael Catanzaro
(diff)
5:48 AM Changeset in webkit [211722] by commit-queue@webkit.org
  • 11 edits
    2 adds in trunk

[Modern Media Controls] Improve handling of <video> with only audio tracks
https://bugs.webkit.org/show_bug.cgi?id=167836
<rdar://problem/30255812>

Patch by Antoine Quint <Antoine Quint> on 2017-02-06
Reviewed by Dean Jackson.

Source/WebCore:

We now check for the availability of video tracks before considering a <video>
element is displaying an actual video file and turning auto-hide on. We also
check that we have video tracks before enabling the fullscreen button. This
brings the behavior of a <video> pointing to a resource with no video tracks
to be the same as an <audio> element.

Test: media/modern-media-controls/media-controller/media-controller-video-with-only-audio.html

  • Modules/modern-media-controls/media/controls-visibility-support.js:

(ControlsVisibilitySupport.prototype.get tracksToMonitor):
(ControlsVisibilitySupport.prototype._updateControls):
(ControlsVisibilitySupport):

  • Modules/modern-media-controls/media/fullscreen-support.js:

(FullscreenSupport.prototype.syncControl):
(FullscreenSupport):

LayoutTests:

Add a new test to check that a <video> with a resource that only has audio tracks
does not auto-hide nor show the fullscreen button. We also rebaseline a few existing
tests for this change of behavior.

  • fast/regions/inline-block-inside-anonymous-overflow-with-covered-controls-expected.html:
  • fast/regions/inline-block-inside-anonymous-overflow-with-covered-controls.html:
  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-on-expected.txt:
  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-on.html:
  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-toggle-expected.txt:
  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-toggle.html:
  • media/modern-media-controls/media-controller/media-controller-video-with-only-audio-expected.txt: Added.
  • media/modern-media-controls/media-controller/media-controller-video-with-only-audio.html: Added.
  • media/modern-media-controls/time-label/time-label-white-space-nowrap.html:
4:22 AM Changeset in webkit [211721] by magomez@igalia.com
  • 3 edits in trunk/Source/WebKit2

[GTK][EFL] Release unused UpdateAtlas when in memory pressure situation
https://bugs.webkit.org/show_bug.cgi?id=167872

Reviewed by Carlos Garcia Campos.

In a memory pressure situation, release all the unused UpdateAtlas as soon as possible, instead
of waiting 3 seconds before releasing them.

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:

(WebKit::CompositingCoordinator::releaseInactiveAtlasesTimerFired):
(WebKit::CompositingCoordinator::releaseAtlases):

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
3:15 AM Changeset in webkit [211720] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: sibling elements's disclosure triangles aren't vertically aligned in DOM tree outline in certain ports
https://bugs.webkit.org/show_bug.cgi?id=167568

Patch by Fujii Hironori <Fujii Hironori> on 2017-02-06
Reviewed by Brian Burg.

The triangle has 13px height and has float:left. If the line-height
is smaller than 13px, the sibling element's triangles aren't
vertically aligned.

  • UserInterface/Views/DOMTreeOutline.css:

(.tree-outline.dom li.parent): Set line-height 13px explicitly.

1:28 AM Changeset in webkit [211719] by achristensen@apple.com
  • 2 edits in trunk/Tools

Rebase API tests after r211638
https://bugs.webkit.org/show_bug.cgi?id=167779

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):
URLs with non-special schemes and characters like % in the host now fail to parse,
more like their special counterparts and according to spec.

12:51 AM Changeset in webkit [211718] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix WinCairo build after r211681
https://bugs.webkit.org/show_bug.cgi?id=167096

  • platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp:

Include some necessary GLES headers.

12:35 AM Changeset in webkit [211717] by Csaba Osztrogonác
  • 2 edits in trunk/Tools

Unreviewed trivial fix after r211697.
https://bugs.webkit.org/show_bug.cgi?id=167863

  • Scripts/run-javascriptcore-tests:

(runJSCStressTests): Renamed ES6SampleBench to ARES-6.

Feb 5, 2017:

10:23 PM Changeset in webkit [211716] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

Data interaction fails in Safari splitscreen mode when dropping into a contenteditable
https://bugs.webkit.org/show_bug.cgi?id=167862
<rdar://problem/30368405>

Reviewed by Tim Horton.

Adds a counter to WebItemProviderPasteboard that can incremented, decremented, and queried by clients.

  • platform/ios/WebItemProviderPasteboard.h:
  • platform/ios/WebItemProviderPasteboard.mm:

(-[WebItemProviderPasteboard init]):
(-[WebItemProviderPasteboard hasPendingOperation]):
(-[WebItemProviderPasteboard incrementPendingOperationCount]):
(-[WebItemProviderPasteboard decrementPendingOperationCount]):

10:17 PM Changeset in webkit [211715] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/LayoutTests

Merge r211523. rdar://problem/29453068

10:17 PM Changeset in webkit [211714] by matthew_hanson@apple.com
  • 22 edits in branches/safari-603-branch/Source

Merge r211482. rdar://problem/29711409

10:17 PM Changeset in webkit [211713] by matthew_hanson@apple.com
  • 6 edits
    2 adds in branches/safari-603-branch

Merge r211504. rdar://problem/30301117

10:17 PM Changeset in webkit [211712] by matthew_hanson@apple.com
  • 3 edits
    2 adds in branches/safari-603-branch

Merge r211659. rdar://problem/28725791

10:17 PM Changeset in webkit [211711] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebCore

Merge r211676. rdar://problem/30229990

10:17 PM Changeset in webkit [211710] by matthew_hanson@apple.com
  • 13 edits in branches/safari-603-branch/Source

Merge r211569. rdar://problem/30229990

10:17 PM Changeset in webkit [211709] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebKit2

Merge r211565. rdar://problem/28896113

10:17 PM Changeset in webkit [211708] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebKit2

Merge r211628. rdar://problem/26685576

10:17 PM Changeset in webkit [211707] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebKit2

Merge r211626. rdar://problem/26685576

10:17 PM Changeset in webkit [211706] by matthew_hanson@apple.com
  • 14 edits
    1 copy
    2 moves
    1 add in branches/safari-603-branch/Source

Merge r211551. rdar://problem/26685576

10:17 PM Changeset in webkit [211705] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r211630. rdar://problem/30318237

10:17 PM Changeset in webkit [211704] by matthew_hanson@apple.com
  • 7 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r211658. rdar://problem/29144126

9:51 PM Changeset in webkit [211703] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch

Merge r211446. rdar://problem/30273885

9:50 PM Changeset in webkit [211702] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebCore

Merge r211455. rdar://problem/30241193

9:25 PM Changeset in webkit [211701] by matthew_hanson@apple.com
  • 21 edits
    5 adds in branches/safari-603-branch

Merge r211656. rdar://problem/30102568

9:25 PM Changeset in webkit [211700] by matthew_hanson@apple.com
  • 15 edits
    2 moves
    2 adds
    1 delete in branches/safari-603-branch/LayoutTests

Merge r211616. rdar://problem/30060142

9:25 PM Changeset in webkit [211699] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebKit/win

Merge r211584. rdar://problem/29994156

9:25 PM Changeset in webkit [211698] by matthew_hanson@apple.com
  • 6 edits
    1 add in branches/safari-603-branch

Merge r211207. rdar://problem/30154036

8:56 PM Changeset in webkit [211697] by fpizlo@apple.com
  • 7 edits
    1 move
    3 adds
    1 delete in trunk/PerformanceTests

Change ES6SampleBench into ARES-6
https://bugs.webkit.org/show_bug.cgi?id=167863

Rubber stamped by Saam Barati.

This imports changes that Jonathan Davis (Jon Davis) made to ES6SampleBench to make it look
super awesome. Its now called ARES-6.

  • ARES-6: Copied from PerformanceTests/ES6SampleBench.
  • ARES-6/ARES-6.svg: Added.
  • ARES-6/driver.js:

(Driver):
(Driver.prototype.readyTrigger):
(Driver.prototype.disableTrigger):
(Driver.prototype.start):
(Driver.prototype._updateIterations):

  • ARES-6/glue.js:
  • ARES-6/index.html:
  • ARES-6/results.js:

(Results.prototype.reportRunning):
(Results.prototype.reportDone):

  • ARES-6/stats.js:

(Stats.prototype.toString.return.span):
(Stats.prototype.toString.span.span):
(Stats.prototype.toString): Deleted.

  • ARES-6/style.css: Removed.
  • ARES-6/styles.css: Added.

(html):
(body):
(header,):
(p a):
(p a:hover):
(.flip):
(header):
(h2,):
(p):
(.about h2):
(.logo):
(.start):
(.start.ready):
(.start.ready:hover):
(.start:after):
(.start.ready .testrun):
(.tests):
(.test):
(.overall h2,):
(.test .indicator):
(.test .indicator.running):
(@keyframes test-running):
(100%):
(.score):
(.score label):
(.score .value):
(.score .units):
(.score .margin):
(.overall):
(.overall .score):
(.overall .margin):
(.testing, .about):
(.testing):
(.about):
(#about:target):
(@media only screen and (max-width: 784px)):

  • ARES-6/swoop.svg: Added.
  • ES6SampleBench: Removed.
  • ES6SampleBench/Air: Removed.
  • ES6SampleBench/Air/README.md: Removed.
  • ES6SampleBench/Air/airjs-tests.yaml: Removed.
  • ES6SampleBench/Air/all.js: Removed.
  • ES6SampleBench/Air/allocate_stack.js: Removed.
  • ES6SampleBench/Air/arg.js: Removed.
  • ES6SampleBench/Air/basic_block.js: Removed.
  • ES6SampleBench/Air/benchmark.js: Removed.
  • ES6SampleBench/Air/code.js: Removed.
  • ES6SampleBench/Air/custom.js: Removed.
  • ES6SampleBench/Air/frequented_block.js: Removed.
  • ES6SampleBench/Air/insertion_set.js: Removed.
  • ES6SampleBench/Air/inst.js: Removed.
  • ES6SampleBench/Air/liveness.js: Removed.
  • ES6SampleBench/Air/make_dist.sh: Removed.
  • ES6SampleBench/Air/opcode.js: Removed.
  • ES6SampleBench/Air/payload-airjs-ACLj8C.js: Removed.
  • ES6SampleBench/Air/payload-gbemu-executeIteration.js: Removed.
  • ES6SampleBench/Air/payload-imaging-gaussian-blur-gaussianBlur.js: Removed.
  • ES6SampleBench/Air/payload-typescript-scanIdentifier.js: Removed.
  • ES6SampleBench/Air/reg.js: Removed.
  • ES6SampleBench/Air/stack_slot.js: Removed.
  • ES6SampleBench/Air/stress-test.js: Removed.
  • ES6SampleBench/Air/strip-hash.rb: Removed.
  • ES6SampleBench/Air/symbols.js: Removed.
  • ES6SampleBench/Air/test.html: Removed.
  • ES6SampleBench/Air/test.js: Removed.
  • ES6SampleBench/Air/tmp.js: Removed.
  • ES6SampleBench/Air/tmp_base.js: Removed.
  • ES6SampleBench/Air/util.js: Removed.
  • ES6SampleBench/Basic: Removed.
  • ES6SampleBench/Basic/ast.js: Removed.
  • ES6SampleBench/Basic/basic-tests.yaml: Removed.
  • ES6SampleBench/Basic/basic.js: Removed.
  • ES6SampleBench/Basic/benchmark.js: Removed.
  • ES6SampleBench/Basic/caseless_map.js: Removed.
  • ES6SampleBench/Basic/lexer.js: Removed.
  • ES6SampleBench/Basic/number.js: Removed.
  • ES6SampleBench/Basic/parser.js: Removed.
  • ES6SampleBench/Basic/random.js: Removed.
  • ES6SampleBench/Basic/state.js: Removed.
  • ES6SampleBench/Basic/stress-test.js: Removed.
  • ES6SampleBench/Basic/test.html: Removed.
  • ES6SampleBench/Basic/test.js: Removed.
  • ES6SampleBench/Basic/util.js: Removed.
  • ES6SampleBench/air_benchmark.js: Removed.
  • ES6SampleBench/basic_benchmark.js: Removed.
  • ES6SampleBench/cli.js: Removed.
  • ES6SampleBench/driver.js: Removed.
  • ES6SampleBench/glue.js: Removed.
  • ES6SampleBench/index.html: Removed.
  • ES6SampleBench/results.js: Removed.
  • ES6SampleBench/stats.js: Removed.
  • ES6SampleBench/style.css: Removed.
8:03 PM Changeset in webkit [211696] by matthew_hanson@apple.com
  • 5 edits
    2 adds in branches/safari-603-branch

Merge r211541. rdar://problem/30100286

8:03 PM Changeset in webkit [211695] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebKit2

Merge r211538. rdar://problem/30229620

8:03 PM Changeset in webkit [211694] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Tools

Merge r211526. rdar://problem/30301498

8:03 PM Changeset in webkit [211693] by matthew_hanson@apple.com
  • 3 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r211486. rdar://problem/30167791

8:03 PM Changeset in webkit [211692] by matthew_hanson@apple.com
  • 5 edits
    2 adds in branches/safari-603-branch

Merge r211471. rdar://problem/30270210

8:03 PM Changeset in webkit [211691] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r211463. rdar://problem/30296879

8:03 PM Changeset in webkit [211690] by matthew_hanson@apple.com
  • 3 edits
    2 adds in branches/safari-603-branch

Merge r211433. rdar://problem/30091558

8:03 PM Changeset in webkit [211689] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch/LayoutTests

Merge r211302. rdar://problem/23601055

3:04 PM Changeset in webkit [211688] by Simon Fraser
  • 7 edits in trunk/Source

Remove unparentsOffscreenTiles logic in TileController
https://bugs.webkit.org/show_bug.cgi?id=167823

Reviewed by Tim Horton.
Source/WebCore:

Give all TileGrids the "unparents offscreen tiles" behavior. This was enabled for
only the page tiles in WK2 on Mac and iOS, but there's no reason to not use it for
tiled composited layers also.

Also use more modern C++ idioms in a few places.

  • platform/graphics/TiledBacking.h:
  • platform/graphics/ca/TileController.h:
  • platform/graphics/ca/TileGrid.cpp:

(WebCore::TileGrid::revalidateTiles):
(WebCore::TileGrid::ensureTilesForRect):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::RenderLayerBacking):

Source/WebKit2:

Drive-by fix: make sure we put the tiled scrolling indicator's layer back when switching tabs.

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::updateRootLayers):

12:55 PM Changeset in webkit [211687] by commit-queue@webkit.org
  • 7 edits
    3 adds in trunk

[Modern Media Controls] PiP button is not visible with a live broadcast video
https://bugs.webkit.org/show_bug.cgi?id=167794
<rdar://problem/30348790>

Patch by Antoine Quint <Antoine Quint> on 2017-02-05
Reviewed by Dean Jackson.

Source/WebCore:

We were only listening to the "loadedmetadata", "error", "webkitpresentationmodechanged"
and "webkitcurrentplaybacktargetiswirelesschanged" events to invalidate the enabled state
for the PiP button. We also need to check availability of video tracks, which we already
did for fullscreen, which is quite similar.

So we now listen to "addtrack", "removetrack" and "change" events on the media.videoTracks
property, which correctly invalidates the PiP button when the first video track becomes
available or the last video track is removed.

Since a couple of other MediaControllerSupport subclasses (FullscreenSupport and TracksSupport)
would also listen to those events on various track types, we add a new "tracksToMonitor"
property on MediaControllerSupport which subclasses can override to provide a list of tracks
that should listen to those events. This removes the need for dedicated construction and
destruction time in MediaControllerSupport subclasses that need to listen to events on
tracks rather than the media itself.

Test: http/tests/media/modern-media-controls/pip-support/pip-support-live-broadcast.html

  • Modules/modern-media-controls/media/fullscreen-support.js:

(FullscreenSupport):
(FullscreenSupport.prototype.get tracksToMonitor):
(FullscreenSupport.prototype.destroy): Deleted.

  • Modules/modern-media-controls/media/media-controller-support.js:

(MediaControllerSupport):
(MediaControllerSupport.prototype.destroy):
(MediaControllerSupport.prototype.get tracksToMonitor):

  • Modules/modern-media-controls/media/pip-support.js:

(PiPSupport.prototype.get tracksToMonitor):

  • Modules/modern-media-controls/media/tracks-support.js:

(TracksSupport):
(TracksSupport.prototype.get tracksToMonitor):
(TracksSupport.prototype.destroy): Deleted.

LayoutTests:

Add a new test to check that a live broadcast video shows the picture-in-picture button.

  • http/tests/media/modern-media-controls/pip-support/pip-support-live-broadcast-expected.txt: Added.
  • http/tests/media/modern-media-controls/pip-support/pip-support-live-broadcast.html: Added.
  • platform/mac/TestExpectations:
12:41 PM Changeset in webkit [211686] by Alan Bujtas
  • 1 edit
    1 add in trunk/PerformanceTests

Simple line layout: Add performance test with varying string and font-size to minimize width-cache hit.
https://bugs.webkit.org/show_bug.cgi?id=167859
<rdar://problem/30368070>

Reviewed by Antti Koivisto.

This is in preparation for webkit.org/b/167843.

  • Layout/simple-line-layout-with-varying-content.html: Added.
12:40 PM Changeset in webkit [211685] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

[Modern Media Controls] Time labels may wrap instead of displaying on a single line
https://bugs.webkit.org/show_bug.cgi?id=167835
<rdar://problem/30340534>

Patch by Antoine Quint <Antoine Quint> on 2017-02-05
Reviewed by Dean Jackson.

Source/WebCore:

No text in modern media controls is expected to wrap, so let's prevent any wrapping.

Test: media/modern-media-controls/time-label/time-label-white-space-nowrap.html

  • Modules/modern-media-controls/controls/media-controls.css:

(.media-controls):

LayoutTests:

New test that checks that time labels have "white-space: nowrap" applied.

  • media/modern-media-controls/time-label/time-label-white-space-nowrap-expected.txt: Added.
  • media/modern-media-controls/time-label/time-label-white-space-nowrap.html: Added.
11:26 AM Changeset in webkit [211684] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

The VMInspector should use an RAII Locker.
https://bugs.webkit.org/show_bug.cgi?id=167854

Reviewed by Saam Barati.

Previously, VMInspector::lock() was returning an expected LockToken, and there's
no way to unlock it when we're done with it. This was not a problem before
because the VMInspector had only one client, the SigillCrashAnalyzer, that
expected the process to crash due to a SIGILL shortly thereafter.

However, the VMInspector is useful as a debugging tool that we can apply in other
debugging tasks. Fixing VMInspector::lock() to return an RAII locker will enable
other use cases. Plus it's just bad form to be able to lock something and never
be able to unlock it.

  • tools/SigillCrashAnalyzer.cpp:

(JSC::SigillCrashAnalyzer::analyze):

  • tools/VMInspector.cpp:
  • tools/VMInspector.h:
11:18 AM Changeset in webkit [211683] by Simon Fraser
  • 19 edits
    5 adds in trunk

Clean up how GraphicsLayer's "inWindow" state is set, and fix some issues with Page Overlays
https://bugs.webkit.org/show_bug.cgi?id=167850

Reviewed by Tim Horton.
Source/WebCore:

RenderLayerCompositor::setIsInWindowForLayerIncludingDescendants() walked the RenderLayer
tree to set the GraphicsLayer's "inWindow" state. This had the problem of skipping non-primary
GraphicsLayers. We also never did this work for page overlay layers.

Fix by giving GraphicsLayers a recursive function that sets the inWindow state, and call that
from RenderLayerCompositor::setIsInWindow() and PageOverlayController.

PageOverlayController also needs to implement tiledBackingUsageChanged so that tiled backings
created dynamically get the correct in-window state.

Page overlays also had some serious issues in MiniBrowser, in that they disappeared on reload,
and on hide/show web view. This was because the overlay root layers were re-parented, but
addChild() for each overlay's layer wasn't called. Clean up by replacing willAttachRootLayer() followed
by viewOverlayRootLayer()/documentOverlayRootLayer() with single calls that set up the layers,
update the inWindow state, and return the layer.

Make it possible to dump tile caches in page overlay tests.

Make showGraphicsLayers() always dump page overlay layers (source of much confusion).

Test: pageoverlay/overlay-remove-reinsert-view.html

  • page/PageOverlayController.cpp:

(WebCore::PageOverlayController::documentOverlayRootLayer):
(WebCore::PageOverlayController::viewOverlayRootLayer):
(WebCore::PageOverlayController::layerWithDocumentOverlays):
(WebCore::PageOverlayController::layerWithViewOverlays):
(WebCore::PageOverlayController::tiledBackingUsageChanged):
(WebCore::PageOverlayController::willAttachRootLayer): Deleted.

  • page/PageOverlayController.h:
  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::setIsInWindowIncludingDescendants):
(WebCore::dumpChildren):

  • platform/graphics/GraphicsLayer.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
(WebCore::RenderLayerCompositor::setIsInWindow):
(WebCore::RenderLayerCompositor::attachRootLayer):
(WebCore::RenderLayerCompositor::rootLayerAttachmentChanged):
(WebCore::RenderLayerCompositor::setIsInWindowForLayerIncludingDescendants): Deleted.

  • rendering/RenderLayerCompositor.h:
  • testing/Internals.cpp:

(WebCore::toLayerTreeFlags):
(WebCore::Internals::layerTreeAsText):
(WebCore::Internals::pageOverlayLayerTreeAsText):

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

(WebCore::MockPageOverlayClient::layerTreeAsText):

  • testing/MockPageOverlayClient.h:

Tools:

  • DumpRenderTree/TestRunner.cpp:

(TestRunner::uiScriptDidComplete): Fix an assertion that fires for non-16-bit strings.

LayoutTests:

  • pageoverlay/overlay-large-document-expected.txt:
  • pageoverlay/overlay-large-document-scrolled-expected.txt:
  • pageoverlay/overlay-remove-reinsert-view-expected.txt: Added.
  • pageoverlay/overlay-remove-reinsert-view.html: Added.
  • platform/ios-simulator-wk2/pageoverlay/overlay-remove-reinsert-view-expected.txt: Added.
  • platform/mac-wk1/pageoverlay/overlay-remove-reinsert-view-expected.txt: Added.
  • tiled-drawing/tiled-backing-in-window-expected.txt:
10:01 AM Changeset in webkit [211682] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Simple line layout: Use RenderText::canUseSimpleFontCodePath() only as a hint.
https://bugs.webkit.org/show_bug.cgi?id=167853
<rdar://problem/30367302>

Reviewed by Simon Fraser.

Source/WebCore:

Apparently RenderText::canUseSimpleFontCodePath() only checks if the string is qualified for
the simple font code path. However certain css properties could still force us to use the complex
path.
In most cases, we still do only one string traversal thanks to TextRun::setCharacterScanForCodePath().

Test: fast/text/simple-line-layout-simple-text-but-complex-font-path.html

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForFontAndText):

LayoutTests:

  • fast/text/simple-line-layout-simple-text-but-complex-font-path-expected.html: Added.
  • fast/text/simple-line-layout-simple-text-but-complex-font-path.html: Added.
9:22 AM Changeset in webkit [211681] by zandobersek@gmail.com
  • 7 edits
    2 adds in trunk/Source/WebCore

Move TextureMapper-specific logic out of GraphicsContext3DPrivate
https://bugs.webkit.org/show_bug.cgi?id=167096

Reviewed by Alex Christensen.

Move the TextureMapper-specific functionality in GraphicsContext3DPrivate into a
separate class. The new TextureMapperGC3DPlatformLayer class inherits from the
class that's aliased to the PlatformLayer type, like GraphicsContext3DPrivate did
before.

In GraphicsContext3D, the new m_texmapLayer member variable of the
std::unique_ptr<TextureMapperGC3DPlatformLayer> type is used for configurations
that enable TextureMapper, largely the same way the GraphicsContext3DPrivate
object was used before. The remaining code in GraphicsContext3DPrivate is left
unchanged to keep it working for other ports.

No new tests -- no change in behavior.

  • platform/TextureMapper.cmake:
  • platform/graphics/GraphicsContext3D.h:
  • platform/graphics/GraphicsContext3DPrivate.cpp:

(WebCore::GraphicsContext3DPrivate::GraphicsContext3DPrivate):
(WebCore::GraphicsContext3DPrivate::~GraphicsContext3DPrivate): Deleted.
(WebCore::GraphicsContext3DPrivate::proxy): Deleted.
(WebCore::GraphicsContext3DPrivate::swapBuffersIfNeeded): Deleted.
(WebCore::GraphicsContext3DPrivate::paintToTextureMapper): Deleted.

  • platform/graphics/GraphicsContext3DPrivate.h:
  • platform/graphics/cairo/GraphicsContext3DCairo.cpp:

(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::~GraphicsContext3D):
(WebCore::GraphicsContext3D::makeContextCurrent):
(WebCore::GraphicsContext3D::platformGraphicsContext3D):
(WebCore::GraphicsContext3D::platformLayer):

  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::GraphicsContext3D::createForCurrentGLContext):

  • platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp: Copied from Source/WebCore/platform/graphics/GraphicsContext3DPrivate.cpp.

(WebCore::TextureMapperGC3DPlatformLayer::TextureMapperGC3DPlatformLayer):
(WebCore::TextureMapperGC3DPlatformLayer::~TextureMapperGC3DPlatformLayer):
(WebCore::TextureMapperGC3DPlatformLayer::makeContextCurrent):
(WebCore::TextureMapperGC3DPlatformLayer::platformContext):
(WebCore::TextureMapperGC3DPlatformLayer::proxy):
(WebCore::TextureMapperGC3DPlatformLayer::swapBuffersIfNeeded):
(WebCore::TextureMapperGC3DPlatformLayer::paintToTextureMapper):

  • platform/graphics/texmap/TextureMapperGC3DPlatformLayer.h: Copied from Source/WebCore/platform/graphics/GraphicsContext3DPrivate.h.

(WebCore::TextureMapperGC3DPlatformLayer::renderStyle):

6:41 AM Changeset in webkit [211680] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Simple line layout: Bail out from Simple Line Layout on surrogate pairs.
https://bugs.webkit.org/show_bug.cgi?id=167840
<rdar://problem/30364784>

Reviewed by Myles C. Maxfield.

Source/WebCore:

Surrogate pairs require special line breaking logic.

Test: fast/text/simple-line-layout-no-surrogate-pairs.html

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForCharacter):
(WebCore::SimpleLineLayout::canUseForText): Checking against special characters is faster than
checking against glyphs. Reverse their order.
(WebCore::SimpleLineLayout::printReason):

LayoutTests:

  • fast/text/simple-line-layout-no-surrogate-pairs-expected.html: Added.
  • fast/text/simple-line-layout-no-surrogate-pairs.html: Added.

Feb 4, 2017:

11:19 PM Changeset in webkit [211679] by Wenson Hsieh
  • 14 edits in trunk/Source/WebKit2

Data interaction on an image should make it stand out when presenting the action sheet
https://bugs.webkit.org/show_bug.cgi?id=167846
<rdar://problem/30363014>

Reviewed by Tim Horton.

Adds infrastructure to improve the behavior of data interaction for images. We make two changes to accomplish
this: first, add some plumbing to WebKit so the web process can tell the UI process when it is done handling a
request to start data interaction, so that the UI process is able to clean up UI-side state in the event that
the page prevented the default behavior.

Secondly, this patch tweaks the heuristic used to present action sheets as popovers. For image elements, if
there is sufficient space around the element, we will use the element rect as the target rect; otherwise, we
fall back to presenting the popover at the touch location.

  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::didHandleStartDataInteractionRequest):

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

(-[WKActionSheet presentSheet:]):

Added a presentation style parameter, used to specify whether or not WKActionSheet should present the popover
using the element rect as the target rect, or the touch location.

(-[WKActionSheet doneWithSheet]):
(-[WKActionSheet updateSheetPosition]):
(-[WKActionSheet presentSheet]): Deleted.

  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant presentationRectForIndicatedElement]):

Returns the (inflated) bounds of the element that is currently being indicated.

(-[WKActionSheetAssistant showImageSheet]):
(-[WKActionSheetAssistant _presentationStyleForImageAtElementRect:]):
(-[WKActionSheetAssistant showLinkSheet]):
(-[WKActionSheetAssistant showDataDetectorsSheet]):

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

(WebKit::WebPageProxy::didHandleStartDataInteractionRequest):

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

Remove unnecessary function declarations and implementations.

(WebKit::PageClientImpl::didPerformDataInteractionControllerOperation): Deleted.
(WebKit::PageClientImpl::startDataInteractionWithImage): Deleted.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::requestStartDataInteraction):

Notify the UI process that the web process is done handling a data interaction request, specifying whether or
not the request was granted.

11:02 PM Changeset in webkit [211678] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Static Analyzer: Value stored to 'recordedMachineThreads' during its initialization is never read
https://bugs.webkit.org/show_bug.cgi?id=167845

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-04
Reviewed by Saam Barati.

Source/JavaScriptCore/heap/MachineStackMarker.cpp:151:14: warning: Value stored to 'recordedMachineThreads' during its initialization is never read

auto recordedMachineThreads = m_set.take(machineThreads);

~

  • heap/MachineStackMarker.cpp:

(JSC::ActiveMachineThreadsManager::remove):

10:23 PM Changeset in webkit [211677] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Static Analyzer: WebCoreNSURLExtras.mm: Potential leak of memory pointed to by 'allBytesBuffer'
https://bugs.webkit.org/show_bug.cgi?id=167849

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-04
Reviewed by Sam Weinig.

Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:883:20: warning: Potential leak of memory pointed to by 'allBytesBuffer'

return nil;


  • platform/mac/WebCoreNSURLExtras.mm:

(WebCore::dataForURLComponentType):
Free the potentially malloc'd buffer before the early return.

6:20 PM Changeset in webkit [211676] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix mistake in comment added in r211569.

  • history/PageCache.cpp:

(WebCore::PageCache::removeAllItemsForPage):

5:26 PM Changeset in webkit [211675] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

Static Analyzer: Value stored to 'prev' is never read
https://bugs.webkit.org/show_bug.cgi?id=167844

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-04
Reviewed by Saam Barati.

Source/JavaScriptCore/runtime/JSMapIterator.h:60:13: warning: Value stored to 'prev' is never read

prev = bucket;

Source/JavaScriptCore/runtime/JSSetIterator.h:60:13: warning: Value stored to 'prev' is never read

prev = bucket;

  • runtime/JSMapIterator.h:

(JSC::JSMapIterator::advanceIter):

  • runtime/JSSetIterator.h:

(JSC::JSSetIterator::advanceIter):

1:46 PM Changeset in webkit [211674] by akling@apple.com
  • 3 edits in trunk/Tools

Plug some leaks in TestController and UIScriptContext.
<https://webkit.org/b/167839>

Reviewed by Alexey Proskuryakov.

Fix a couple of the leaks seen on the leaks bot.

  • TestRunnerShared/UIScriptContext/UIScriptContext.cpp:

(UIScriptContext::runUIScript):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::handleCheckOfUserMediaPermissionForOrigin):
(WTR::TestController::decidePolicyForUserMediaPermissionRequestIfPossible):

1:40 PM Changeset in webkit [211673] by yoav@yoav.ws
  • 2 edits in trunk/Source/WebCore

Fix memory issues related to preload eviction.
https://bugs.webkit.org/show_bug.cgi?id=167838

Reviewed by Andreas Kling.

This avoids removing resources from m_preloads during the iteration
by creating a second HashSetList containing the remaining link preloads.

No new tests but this will fix crashes on the leak bots.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::clearPreloads):

11:34 AM Changeset in webkit [211672] by Michael Catanzaro
  • 2 edits in trunk/Source/WTF

[GTK] Fix huge ENABLE_RESOURCE_USAGE warning spam

Unreviewed. We shouldn't redefine ENABLE_RESOURCE_USAGE in Platform.h as
it's already defined in cmakeconfig.h.

  • wtf/Platform.h:
8:34 AM Changeset in webkit [211671] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Simple line layout: Skip 16bit specific checks on 8bit content.
https://bugs.webkit.org/show_bug.cgi?id=167831
<rdar://problem/30361948>

Reviewed by Antti Koivisto and Myles C. Maxfield.

Skip various checks on 8bit content.

Covered by existing tests.

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForCharacter):
(WebCore::SimpleLineLayout::canUseForText):
(WebCore::SimpleLineLayout::canUseForFontAndText):

5:46 AM Changeset in webkit [211670] by Yusuke Suzuki
  • 9 edits
    1 add in trunk

[JSC] Add operationToInt32SensibleSlow to optimize kraken pbkdf2 and sha256
https://bugs.webkit.org/show_bug.cgi?id=167736

Reviewed by Saam Barati.

JSTests:

  • stress/to-int32-sensible.js: Added.

(shouldBe):
(toInt32):
(test):

Source/JavaScriptCore:

Add a new function operationToInt32SensibleSlow. This function is only
called after x86 cvttss2si_rr is failed. This means that the
given double number never in range of int32 truncatable numbers.

As a result, exp in operationToInt32 always becomes >= 31. So
we can change the condition from exp < 32 to exp == 31.
This makes missingOne constant. And it leads significantly good
code generation.

The original operationToInt32 code.

170: 66 48 0f 7e c1 movq %xmm0,%rcx
175: 31 c0 xor %eax,%eax
177: 66 48 0f 7e c6 movq %xmm0,%rsi
17c: 48 c1 f9 34 sar $0x34,%rcx
180: 81 e1 ff 07 00 00 and $0x7ff,%ecx
186: 8d 91 01 fc ff ff lea -0x3ff(%rcx),%edx
18c: 83 fa 53 cmp $0x53,%edx
18f: 77 37 ja 1c8 <_ZN3JSC16operationToInt32Ed+0x58>
191: 83 fa 34 cmp $0x34,%edx
194: 7f 3a jg 1d0 <_ZN3JSC16operationToInt32Ed+0x60>
196: b9 34 00 00 00 mov $0x34,%ecx
19b: 66 48 0f 7e c7 movq %xmm0,%rdi
1a0: 29 d1 sub %edx,%ecx
1a2: 48 d3 ff sar %cl,%rdi
1a5: 83 fa 1f cmp $0x1f,%edx
1a8: 89 f8 mov %edi,%eax
1aa: 7f 12 jg 1be <_ZN3JSC16operationToInt32Ed+0x4e>
1ac: 89 d1 mov %edx,%ecx
1ae: b8 01 00 00 00 mov $0x1,%eax
1b3: d3 e0 shl %cl,%eax
1b5: 89 c2 mov %eax,%edx
1b7: 8d 40 ff lea -0x1(%rax),%eax
1ba: 21 f8 and %edi,%eax
1bc: 01 d0 add %edx,%eax
1be: 89 c2 mov %eax,%edx
1c0: f7 da neg %edx
1c2: 48 85 f6 test %rsi,%rsi
1c5: 0f 48 c2 cmovs %edx,%eax
1c8: f3 c3 repz retq
1ca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
1d0: 66 48 0f 7e c0 movq %xmm0,%rax
1d5: 81 e9 33 04 00 00 sub $0x433,%ecx
1db: 48 d3 e0 shl %cl,%rax
1de: eb de jmp 1be <_ZN3JSC16operationToInt32Ed+0x4e>

The operationToInt32SensibleSlow code.

1e0: 66 48 0f 7e c1 movq %xmm0,%rcx
1e5: 66 48 0f 7e c2 movq %xmm0,%rdx
1ea: 48 c1 f9 34 sar $0x34,%rcx
1ee: 81 e1 ff 07 00 00 and $0x7ff,%ecx
1f4: 8d b1 01 fc ff ff lea -0x3ff(%rcx),%esi
1fa: 83 fe 34 cmp $0x34,%esi
1fd: 7e 21 jle 220 <_ZN3JSC28operationToInt32SensibleSlowEd+0x40>
1ff: 66 48 0f 7e c0 movq %xmm0,%rax
204: 81 e9 33 04 00 00 sub $0x433,%ecx
20a: 48 d3 e0 shl %cl,%rax
20d: 89 c1 mov %eax,%ecx
20f: f7 d9 neg %ecx
211: 48 85 d2 test %rdx,%rdx
214: 0f 48 c1 cmovs %ecx,%eax
217: c3 retq
218: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1)
21f: 00
220: 66 48 0f 7e c0 movq %xmm0,%rax
225: b9 34 00 00 00 mov $0x34,%ecx
22a: 29 f1 sub %esi,%ecx
22c: 48 d3 f8 sar %cl,%rax
22f: 89 c1 mov %eax,%ecx
231: 81 c9 00 00 00 80 or $0x80000000,%ecx
237: 83 fe 1f cmp $0x1f,%esi
23a: 0f 44 c1 cmove %ecx,%eax
23d: 89 c1 mov %eax,%ecx
23f: f7 d9 neg %ecx
241: 48 85 d2 test %rdx,%rdx
244: 0f 48 c1 cmovs %ecx,%eax
247: c3 retq
248: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1)
24f: 00

This improves kraken pbkdf2 by 10.8% and sha256 by 7.5%.

baseline patched

stanford-crypto-pbkdf2 153.195+-2.745 138.204+-2.513 definitely 1.1085x faster
stanford-crypto-sha256-iterative 49.047+-1.038 45.610+-1.235 definitely 1.0754x faster

<arithmetic> 101.121+-1.379 91.907+-1.500 definitely 1.1003x faster

  • assembler/CPU.h:

(JSC::hasSensibleDoubleToInt):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileValueToInt32):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::doubleToInt32):
(JSC::FTL::DFG::LowerDFGToB3::sensibleDoubleToInt32):

  • ftl/FTLOutput.cpp:

(JSC::FTL::Output::hasSensibleDoubleToInt): Deleted.

  • ftl/FTLOutput.h:
  • runtime/MathCommon.cpp:

(JSC::operationToInt32SensibleSlow):

  • runtime/MathCommon.h:
12:25 AM Changeset in webkit [211669] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Unreviewed. Fix the key shortcut to enable resource usage overlay in GTK+.

The condition to check for CTRL and Shift modifiers is wrong, causing the overlay to be shown on Shit+G and
making it impossible to write a 'G'.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseKeyPressEvent):

Feb 3, 2017:

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

Simple line layout: Remove redundant codepath check.
https://bugs.webkit.org/show_bug.cgi?id=167827
<rdar://problem/30361850>

Reviewed by Myles C. Maxfield.

FontCascade::codePath() iterates through the entire text. It's rather wasteful to do twice.

No change in functionality.

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForFontAndText):
(WebCore::SimpleLineLayout::printReason):

9:53 PM Changeset in webkit [211667] by mmaxfield@apple.com
  • 3 edits
    2 adds in trunk

REGRESSION(r204858): Synthetic bold text in vertical writing mode is rotated away from original text
https://bugs.webkit.org/show_bug.cgi?id=167826
<rdar://problem/28193222>

Reviewed by Zalan Bujtas.

Source/WebCore:

When drawing vertical text, the rotation is not reset between successive paint calls. We implement
synthetic bold by drawing text twice, which means that the second draw call was getting rotated
twice. This was an oversight in r204858.

Test: fast/text/synthetic-bold-vertical-text.html

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::showGlyphsWithAdvances):

LayoutTests:

  • fast/text/synthetic-bold-vertical-text-expected.html: Added.
  • fast/text/synthetic-bold-vertical-text.html: Added.
9:18 PM Changeset in webkit [211666] by Joseph Pecoraro
  • 5 edits in trunk/Source

Unreviewed rollout of r211486, r211629.

Original change is not ideal and is causing issues.

Source/JavaScriptCore:

  • inspector/agents/InspectorHeapAgent.cpp:

(Inspector::SendGarbageCollectionEventsTask::SendGarbageCollectionEventsTask):

  • runtime/InitializeThreading.cpp:

(JSC::initializeThreading):

Source/WebKit2:

  • Shared/WebKit2Initialize.cpp:

(WebKit::InitializeWebKit2):

7:23 PM Changeset in webkit [211665] by commit-queue@webkit.org
  • 33 edits in trunk/Source

Performance Timing: Convert WTF::MonotonicTime and WTF::Seconds
https://bugs.webkit.org/show_bug.cgi?id=167768

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-03
Reviewed by Geoffrey Garen.

Source/WebCore:

The public APIs still return double (DOMHighResTimeStamp), which
is milliseconds since a time origin:
https://w3c.github.io/hr-time/#dom-domhighrestimestamp

  • loader/LoadTiming.cpp:

(WebCore::LoadTiming::secondsSinceStartTime):
(WebCore::LoadTiming::monotonicTimeToPseudoWallTime):
(WebCore::LoadTiming::markStartTime):
(WebCore::LoadTiming::addRedirect):
(WebCore::LoadTiming::monotonicTimeToZeroBasedDocumentTime): Deleted.

  • loader/LoadTiming.h:

(WebCore::LoadTiming::markUnloadEventStart):
(WebCore::LoadTiming::markUnloadEventEnd):
(WebCore::LoadTiming::markRedirectStart):
(WebCore::LoadTiming::markRedirectEnd):
(WebCore::LoadTiming::markFetchStart):
(WebCore::LoadTiming::setResponseEnd):
(WebCore::LoadTiming::markLoadEventStart):
(WebCore::LoadTiming::markLoadEventEnd):
(WebCore::LoadTiming::startTime):
(WebCore::LoadTiming::unloadEventStart):
(WebCore::LoadTiming::unloadEventEnd):
(WebCore::LoadTiming::redirectStart):
(WebCore::LoadTiming::redirectEnd):
(WebCore::LoadTiming::fetchStart):
(WebCore::LoadTiming::responseEnd):
(WebCore::LoadTiming::loadEventStart):
(WebCore::LoadTiming::loadEventEnd):
(WebCore::LoadTiming::redirectCount):
(WebCore::LoadTiming::referenceMonotonicTime):
(WebCore::LoadTiming::referenceWallTime):
Use MonotonicTime and WallTime for timestamps and references.

  • dom/Document.cpp:

(WebCore::Document::setReadyState):
(WebCore::Document::finishedParsing):
(WebCore::Document::monotonicTimestamp):

  • dom/DocumentTiming.h:

(WebCore::DocumentTiming::DocumentTiming): Deleted.

  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::serviceScriptedAnimations):

  • inspector/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::buildObjectForTiming):
(WebCore::InspectorNetworkAgent::didFinishLoading):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::finishedLoading):
(WebCore::DocumentLoader::dataReceived):

  • loader/DocumentLoader.h:
  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::didFinishLoading):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::performance):
Use new types instead of raw doubles.

  • page/Performance.cpp:

(WebCore::Performance::Performance):
(WebCore::Performance::now):
(WebCore::Performance::reduceTimeResolution):
(WebCore::Performance::addResourceTiming):

  • page/Performance.h:

Do time arithmatic with WTF::Time classes.
This clarifies that we reduce our timestamps to 100us
resolution instead of the maximum 5us allowed by the spec.

  • page/PerformanceResourceTiming.cpp:

(WebCore::monotonicTimeToDOMHighResTimeStamp):
(WebCore::PerformanceResourceTiming::PerformanceResourceTiming):
(WebCore::PerformanceResourceTiming::networkLoadTimeToDOMHighResTimeStamp):

  • page/PerformanceResourceTiming.h:
  • page/PerformanceTiming.cpp:

(WebCore::PerformanceTiming::resourceLoadTimeRelativeToFetchStart):
(WebCore::PerformanceTiming::monotonicTimeToIntegerMilliseconds):
(WebCore::toIntegerMilliseconds): Deleted.

  • page/PerformanceTiming.h:

Do time arithmatic with WTF::Time classes.

  • workers/DedicatedWorkerGlobalScope.cpp:

(WebCore::DedicatedWorkerGlobalScope::create):
(WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):

  • workers/DedicatedWorkerGlobalScope.h:
  • workers/DedicatedWorkerThread.cpp:

(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope):

  • workers/DedicatedWorkerThread.h:
  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):

  • workers/WorkerGlobalScope.h:
  • workers/WorkerGlobalScopeProxy.h:
  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):

  • workers/WorkerMessagingProxy.h:
  • workers/WorkerThread.cpp:

(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
(WebCore::WorkerThread::WorkerThread):

  • workers/WorkerThread.h:

Pass time origin as MonotonicTime.

  • workers/Worker.cpp:

(WebCore::Worker::create):
(WebCore::Worker::notifyFinished):

  • workers/Worker.h:

Rename creation timestamp member. This matches Document's m_documentCreationTime.

Source/WTF:

  • wtf/Stopwatch.h:

(WTF::Stopwatch::elapsedTimeSince):
(WTF::Stopwatch::elapsedTimeSinceMonotonicTime): Deleted.

7:16 PM Changeset in webkit [211664] by achristensen@apple.com
  • 3 edits
    1 add in trunk/Source/ThirdParty/libwebrtc

[WebRTC] Add more files to libwebrtc build
https://bugs.webkit.org/show_bug.cgi?id=167824

Reviewed by Youenn Fablet.

  • Configurations/libwebrtc.xcconfig:
  • Configurations/usrsctp.xcconfig: Added.
  • libwebrtc.xcodeproj/project.pbxproj:
7:03 PM Changeset in webkit [211663] by commit-queue@webkit.org
  • 8 edits in trunk

WK1 mouse events are missing movementX and movementY for pointerlock.
https://bugs.webkit.org/show_bug.cgi?id=167775
rdar://problem/30343810

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-02-03
Reviewed by Alexey Proskuryakov.

Source/WebCore:

pointer-lock/mouse-event-delivery.html

Improve mouse-event-delivery.html test to mouse move and check for valid movementX and movementY.

  • platform/mac/PlatformEventFactoryMac.mm:

(WebCore::PlatformMouseEventBuilder::PlatformMouseEventBuilder): WK1 plumb throuhg movementX and movementY

Tools:

Set kCGMouseEventDeltaX and kCGMouseEventDeltaY when synthesizing mouse move events.

  • DumpRenderTree/mac/EventSendingController.mm:

(-[EventSendingController mouseMoveToX:Y:]):

  • WebKitTestRunner/mac/EventSenderProxy.mm:

(WTR::EventSenderProxy::mouseMoveTo):

LayoutTests:

Enable pointer-lock/mouse-event-delivery.html for mac.

  • platform/mac/TestExpectations:
5:53 PM Changeset in webkit [211662] by Simon Fraser
  • 83 edits
    2 adds in trunk

Correctly set the "inWindow" flag for TileControllers that aren't the page tiles, and clarify "usingTiledBacking" logic
https://bugs.webkit.org/show_bug.cgi?id=167774

Reviewed by Tim Horton.
Source/WebCore:

RenderLayerBacking had some very confusing "usingTiledCacheLayer" uses.

Its member variable, m_usingTiledCacheLayer, really meant "m_isMainFrameLayerWithTiledBacking" so make it so.
It had a usingTiledBacking(), which returned the same thing, which this patch replaces with isMainFrameLayerWithTiledBacking().

The fact that usingTiledBacking() was only true for the page tiled layer tripped up
RenderLayerCompositor::setIsInWindowForLayerIncludingDescendants(), which would only ever call setIsInWindow()
on the page tiled layer. These changes fix that.

Also make a way for tests to unparent the web view via UIScriptController, and dump out the "in window"
status of TileBackings when dumping tile caches.

Test: tiled-drawing/tiled-backing-in-window.html

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

(WebCore::GraphicsLayerCA::dumpAdditionalProperties):

  • platform/graphics/ca/TileController.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::RenderLayerBacking):
(WebCore::computePageTiledBackingCoverage):
(WebCore::RenderLayerBacking::adjustTiledBackingCoverage):
(WebCore::RenderLayerBacking::setTiledBackingHasMargins):
(WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
(WebCore::RenderLayerBacking::shouldClipCompositedBounds):
(WebCore::RenderLayerBacking::updateDescendantClippingLayer):
(WebCore::RenderLayerBacking::updateRootLayerConfiguration):
(WebCore::RenderLayerBacking::paintsIntoWindow):
(WebCore::computeTileCoverage): Deleted.

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

(WebCore::RenderLayerCompositor::flushPendingLayerChanges):
(WebCore::RenderLayerCompositor::rootFixedBackgroundsChanged):
(WebCore::RenderLayerCompositor::setIsInWindowForLayerIncludingDescendants):
(WebCore::RenderLayerCompositor::supportsFixedRootBackgroundCompositing):
(WebCore::RenderLayerCompositor::documentUsesTiledBacking):

Tools:

Implement UIScriptController removeViewFromWindow() and addViewToWindow(), and hook
up for Mac WK1 and WK2, and iOS WK2. It takes a callback because view state updates to the
web process are async, so the callback fires after the web process gets the new state.

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::removeViewFromWindow):
(WTR::UIScriptController::addViewToWindow):

  • DumpRenderTree/mac/DumpRenderTree.mm:

(createWebViewAndOffscreenWindow):
(resetWebViewToConsistentStateBeforeTesting):

  • DumpRenderTree/mac/DumpRenderTreeMac.h:
  • DumpRenderTree/mac/UIScriptControllerMac.mm:

(WTR::UIScriptController::removeViewFromWindow):
(WTR::UIScriptController::addViewToWindow):

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

(WTR::UIScriptController::removeViewFromWindow):
(WTR::UIScriptController::addViewToWindow):

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • WebKitTestRunner/PlatformWebView.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetStateToConsistentValues):

  • WebKitTestRunner/ios/PlatformWebViewIOS.mm:

(WTR::PlatformWebView::removeFromWindow):
(WTR::PlatformWebView::addToWindow):

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::removeViewFromWindow):
(WTR::UIScriptController::addViewToWindow):

  • WebKitTestRunner/mac/PlatformWebViewMac.mm:

(WTR::PlatformWebView::removeFromWindow):
(WTR::PlatformWebView::addToWindow):

  • WebKitTestRunner/mac/UIScriptControllerMac.mm:

(WTR::UIScriptController::removeViewFromWindow):
(WTR::UIScriptController::addViewToWindow):

LayoutTests:

Rebase to include the "in window" output.

tiled-drawing/background-transparency-toggle.html was sensitive to the length of the output, so give the body
a fixed size.

  • compositing/tiling/offscreen-tiled-layer-expected.txt:
  • compositing/tiling/transform-origin-tiled-expected.txt:
  • platform/mac-wk1/compositing/tiling/offscreen-tiled-layer-expected.txt:
  • platform/mac-wk1/compositing/tiling/transform-origin-tiled-expected.txt:
  • platform/mac-wk2/compositing/tiling/rotated-tiled-clamped-expected.txt:
  • platform/mac-wk2/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
  • platform/mac-wk2/compositing/tiling/tile-cache-zoomed-expected.txt:
  • platform/mac-wk2/compositing/tiling/tiled-layer-resize-expected.txt:
  • platform/mac/compositing/tiling/rotated-tiled-clamped-expected.txt:
  • platform/mac/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
  • platform/mac/compositing/tiling/tiled-layer-resize-expected.txt:
  • tiled-drawing/background-transparency-toggle-expected.txt:
  • tiled-drawing/background-transparency-toggle.html:
  • tiled-drawing/scrolling/fast-scroll-div-latched-div-expected.txt:
  • tiled-drawing/scrolling/fast-scroll-div-latched-div-with-handler-expected.txt:
  • tiled-drawing/scrolling/fast-scroll-div-latched-mainframe-expected.txt:
  • tiled-drawing/scrolling/fast-scroll-div-latched-mainframe-with-handler-expected.txt:
  • tiled-drawing/scrolling/fast-scroll-iframe-latched-iframe-expected.txt:
  • tiled-drawing/scrolling/fast-scroll-iframe-latched-iframe-with-handler-expected.txt:
  • tiled-drawing/scrolling/fast-scroll-iframe-latched-mainframe-expected.txt:
  • tiled-drawing/scrolling/fast-scroll-iframe-latched-mainframe-with-handler-expected.txt:
  • tiled-drawing/scrolling/fast-scroll-select-latched-mainframe-expected.txt:
  • tiled-drawing/scrolling/fast-scroll-select-latched-mainframe-with-handler-expected.txt:
  • tiled-drawing/scrolling/fast-scroll-select-latched-select-expected.txt:
  • tiled-drawing/scrolling/fast-scroll-select-latched-select-with-handler-expected.txt:
  • tiled-drawing/scrolling/fixed-background/fixed-background-no-image-expected.txt:
  • tiled-drawing/scrolling/fixed-background/fixed-body-background-body-layer-expected.txt:
  • tiled-drawing/scrolling/fixed-background/fixed-body-background-expected.txt:
  • tiled-drawing/scrolling/fixed-background/fixed-body-background-opacity-expected.txt:
  • tiled-drawing/scrolling/fixed-background/fixed-body-background-positioned-expected.txt:
  • tiled-drawing/scrolling/fixed-background/fixed-body-background-transformed-expected.txt:
  • tiled-drawing/scrolling/fixed-background/fixed-body-background-zoomed-expected.txt:
  • tiled-drawing/scrolling/fixed-background/fixed-html-background-expected.txt:
  • tiled-drawing/scrolling/fixed-background/fixed-non-propagated-body-background-expected.txt:
  • tiled-drawing/scrolling/fixed/four-bars-zoomed-expected.txt:
  • tiled-drawing/simple-document-with-margin-tiles-expected.txt:
  • tiled-drawing/tile-coverage-after-scroll-expected.txt:
  • tiled-drawing/tile-coverage-after-scroll-speculative-expected.txt:
  • tiled-drawing/tile-coverage-scroll-to-bottom-expected.txt:
  • tiled-drawing/tile-coverage-slow-scrolling-expected.txt:
  • tiled-drawing/tile-coverage-speculative-expected.txt:
  • tiled-drawing/tile-coverage-view-exposed-rect-expected.txt:
  • tiled-drawing/tile-size-both-scrollable-expected.txt:
  • tiled-drawing/tile-size-horizontally-scrollable-expected.txt:
  • tiled-drawing/tile-size-slow-zoomed-expected.txt:
  • tiled-drawing/tile-size-unscrollable-expected.txt:
  • tiled-drawing/tile-size-vertically-scrollable-expected.txt:
  • tiled-drawing/tile-size-view-exposed-rect-expected.txt:
  • tiled-drawing/tiled-backing-in-window-expected.txt: Added.
  • tiled-drawing/tiled-backing-in-window.html: Added.
  • tiled-drawing/tiled-drawing-scroll-position-page-cache-restoration-expected.txt:
  • tiled-drawing/tiled-drawing-zoom-expected.txt:
  • tiled-drawing/tiled-drawing-zoom-scrolled-expected.txt:
  • tiled-drawing/use-tiled-drawing-expected.txt:
  • tiled-drawing/visible-rect-content-inset-expected.txt:
5:42 PM Changeset in webkit [211661] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Simple line layout: Bail out from Simple Line Layout when the primary font is insufficient.
https://bugs.webkit.org/show_bug.cgi?id=167820
Source/WebCore:

<rdar://problem/30359685>

Reviewed by Myles C. Maxfield.

Currently simple line layout requires the primary font to have all the glyps for the content.

Test: fast/text/simple-line-layout-do-not-support-unicode-range.html

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForText):
(WebCore::SimpleLineLayout::canUseForFontAndText):
(WebCore::SimpleLineLayout::printReason):

LayoutTests:

Reviewed by Myles C. Maxfield.

  • fast/text/simple-line-layout-do-not-support-unicode-range-expected.html: Added.
  • fast/text/simple-line-layout-do-not-support-unicode-range.html: Added.
5:39 PM Changeset in webkit [211660] by commit-queue@webkit.org
  • 2 edits
    17 adds in trunk/LayoutTests/imported/w3c

Import web-platform-tests/hr-time tests
https://bugs.webkit.org/show_bug.cgi?id=167819

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-03
Reviewed by Youenn Fablet.

We pass all of these tests upstream.

  • resources/ImportExpectations:
  • web-platform-tests/hr-time/OWNERS: Added.
  • web-platform-tests/hr-time/basic-expected.txt: Added.
  • web-platform-tests/hr-time/basic.html: Added.
  • web-platform-tests/hr-time/basic.worker-expected.txt: Added.
  • web-platform-tests/hr-time/basic.worker.html: Added.
  • web-platform-tests/hr-time/basic.worker.js: Added.
  • web-platform-tests/hr-time/idlharness-expected.txt: Added.
  • web-platform-tests/hr-time/idlharness.html: Added.
  • web-platform-tests/hr-time/monotonic-clock-expected.txt: Added.
  • web-platform-tests/hr-time/monotonic-clock.html: Added.
  • web-platform-tests/hr-time/resources/now_frame.html: Added.
  • web-platform-tests/hr-time/resources/w3c-import.log: Added.
  • web-platform-tests/hr-time/test_cross_frame_start-expected.txt: Added.
  • web-platform-tests/hr-time/test_cross_frame_start.html: Added.
  • web-platform-tests/hr-time/w3c-import.log: Added.
5:20 PM Changeset in webkit [211659] by jer.noble@apple.com
  • 3 edits
    2 adds in trunk

ASSERT in HTMLMediaElement::~HTMLMediaElement
https://bugs.webkit.org/show_bug.cgi?id=167818

Reviewed by Brent Fulgham.

Source/WebCore:

Test: media/audio-dealloc-crash.html

HTMLMediaElement's MediaElementSession can nominate the HTMLMediaElement itself
to become the playback controls session from inside the HTMLMediaElement destructor. Protect
against this by clearing out the session before calling updatePlaybackControlsManager().

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::~HTMLMediaElement):

LayoutTests:

  • media/audio-dealloc-crash-expected.txt: Added.
  • media/audio-dealloc-crash.html: Added.
5:17 PM Changeset in webkit [211658] by jfbastien@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

OSR entry: delay outer-loop compilation when at inner-loop
https://bugs.webkit.org/show_bug.cgi?id=167149

Reviewed by Filip Pizlo.

r211224 and r211461 were reverted because they caused massive
kraken/ai-astar regressions. This patch instead does the
minimally-disruptive change to fix the original bug as described
below, but omits extra tuning and refactoring which I had
before. I'll commit tuning and refactoring separately, if this
sticks. This patch is therefore very minimal, and layers carefully
on top of the complex spaghetti-logic. The only change it makes is
that it uses triggers to indicate to outer loops that they should
compile, which fixes the immediate bug and seems roughly perf
neutral (maybe a small gain on kraken sometimes, other times a
small regression as would be expected from slightly compiling
later). As opposed to r211461 this patch doesn't unconditionally
unset the trigger because it prevents further DFG executions from
entering. It therefore makes the trigger a tri-state enum class:
don't trigger, compilation done, start compilation. Only "start
compilation" gets reset to "don't trigger". "Compilation done"
does not (unless there's a problem compiling, then it gets set
back to "don't trigger").

As of https://bugs.webkit.org/show_bug.cgi?id=155217 OSR
compilation can be kicked off for an entry into an outer-loop,
while executing an inner-loop. This is desirable because often the
codegen from an inner-entry isn't as good as the codegen from an
outer-entry, but execution from an inner-loop is often pretty hot
and likely to kick off compilation. This approach provided nice
speedups on Kraken because we'd select to enter to the outer-loop
very reliably, which reduces variability (the inner-loop was
selected roughly 1/5 times from my unscientific measurements).

When compilation starts we take a snapshot of the JSValues at the
current execution state using OSR's recovery mechanism. These
values are passed to the compiler and are used as way to perform
type profiling, and could be used to observe cell types as well as
to perform predictions such as through constant propagation.

It's therefore desired to enter from the outer-loop when we can,
but we need to be executing from that location to capture the
right JSValues, otherwise we're confusing the compiler and giving
it inaccurate JSValues which can lead it to predict the wrong
things, leading to suboptimal code or recompilation due to
misprediction, or in super-corner-cases a crash.

DFG tier-up was added here:
https://bugs.webkit.org/show_bug.cgi?id=112838

  • dfg/DFGJITCode.h:
  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::JITCompiler):

  • dfg/DFGOperations.cpp:
  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp:

(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::ToFTLForOSREntryDeferredCompilationCallback):
(JSC::DFG::Ref<ToFTLForOSREntryDeferredCompilationCallback>ToFTLForOSREntryDeferredCompilationCallback::create):
(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::compilationDidBecomeReadyAsynchronously):
(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::compilationDidComplete):

  • dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h:
4:05 PM Changeset in webkit [211657] by ap@apple.com
  • 2 edits in trunk/Tools

Remove check for SkipSafariExecutableEntitlementChecks
https://bugs.webkit.org/show_bug.cgi?id=167762

Reviewed by Dan Bernstein.

Follow-up fix: don't break internal behavior.

  • Scripts/webkitdirs.pm:

(safariPath):
(executableHasEntitlements): Deleted.
(safariPathFromSafariBundle): Deleted.
(installedSafariPath): Deleted.

3:14 PM Changeset in webkit [211656] by dbates@webkit.org
  • 21 edits
    5 adds in trunk

[Mac][WK2] Add SPI to override the Content Security Policy of a page
https://bugs.webkit.org/show_bug.cgi?id=167810
<rdar://problem/30102568>

Reviewed by Anders Carlsson.

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::initSecurityContext): Apply the embedding client's override Content Security
Policy to the document if one exists.

  • loader/FrameLoaderClient.h: Add function overrideContentSecurityPolicy() that a FrameLoaderClient

can override to provide a custom Content Security Policy for a document (defaults: null string - no policy).
As its name implies, the policy returned by overrideContentSecurityPolicy() will define the Content
Security Policy for the document, overriding any subsequently received Content Security Policy for
the document.

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::copyStateFrom): Only copy policies from the specified ContentSecurityPolicy
object if our policy was not specified by the embedding client.
(WebCore::ContentSecurityPolicy::didReceiveHeader): Set ContentSecurityPolicy::m_hasAPIPolicy to true
when we receive an API policy from the embedding client (ContentSecurityPolicy::PolicyFrom::API). An
API policy must be defined before a policy received from a document. Do not process a received header
if we already have an API policy as the API policy overrides all other policies.

  • page/csp/ContentSecurityPolicy.h:

Source/WebKit2:

Add SPI to WKWebViewConfiguration so that an embedding client can define a custom Content Security
Policy that overrides the Content Security Policy of any page loaded in the web view.

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode): Encode instance variable overrideContentSecurityPolicy.
(WebKit::WebPageCreationParameters::decode): Decode instance variable overrideContentSecurityPolicy.

  • Shared/WebPageCreationParameters.h:
  • UIProcess/API/APIPageConfiguration.cpp:

(API::PageConfiguration::copy): Copy instance variable overrideContentSecurityPolicy.

  • UIProcess/API/APIPageConfiguration.h:

(API::PageConfiguration::overrideContentSecurityPolicy): Added.
(API::PageConfiguration::setOverrideContentSecurityPolicy): Added.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]): Copy overrideContentSecurityPolicy set on the WKWebViewConfiguration
object to the API::PageConfiguration object if non-nil.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration copyWithZone:]): Copy the instance variable overrideContentSecurityPolicy.
(-[WKWebViewConfiguration _overrideContentSecurityPolicy]): Added.
(-[WKWebViewConfiguration _setOverrideContentSecurityPolicy:]): Added.

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: Define SPI property _overrideContentSecurityPolicy.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::WebPageProxy): Initialize m_overrideContentSecurityPolicy from the passed
page configuration.
(WebKit::WebPageProxy::creationParameters): Set WebPageCreationParameters::overrideContentSecurityPolicy
so that the WebPage object (in the WebProcess) will know the overridden Content Security Policy
to apply to the document.

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

(WebKit::WebFrameLoaderClient::overrideContentSecurityPolicy): Added. Returns the custom Content
Security Policy to apply to a new document.

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

(WebKit::WebPage::overrideContentSecurityPolicy): Added.

Tools:

Add tests to ensure that we do not regress -[WKWebView _setOverrideContentSecurityPolicy:].

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/OverrideContentSecurityPolicy.mm: Added.

(TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/page-with-csp-iframe.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/page-with-csp.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/page-without-csp-iframe.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/page-without-csp.html: Added.
3:08 PM Changeset in webkit [211655] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Revert toString behavior to what we had in the last version we shipped
https://bugs.webkit.org/show_bug.cgi?id=167814
rdar://problem/30344753

Reviewed by Tim Horton.

This is a speculative fix for a crash that we've seen on recent builds. It simply reverts the toString call back to
what we have in the last version of Safari we shipped.

  • WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:

(WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant):

2:40 PM Changeset in webkit [211654] by Chris Dumez
  • 7 edits in trunk

Drop Mac App Store workaround for window.getComputedStyle()
https://bugs.webkit.org/show_bug.cgi?id=166891
<rdar://problem/28282452>

Reviewed by Sam Weinig.

Drop Mac App Store workaround for window.getComputedStyle() now that
<rdar://problem/28020681> has been fixed.

  • page/DOMWindow.cpp:
  • page/DOMWindow.h:
  • page/DOMWindow.idl:
  • platform/RuntimeApplicationChecks.h:
  • platform/RuntimeApplicationChecks.mm:

(WebCore::MacApplication::isAppStore): Deleted.

2:18 PM Changeset in webkit [211653] by Chris Dumez
  • 11 edits
    2 adds in trunk

Dismiss HTML form validation popover when pressing Escape key
https://bugs.webkit.org/show_bug.cgi?id=167716
<rdar://problem/29872943>

Reviewed by Simon Fraser.

Source/WebCore:

Dismiss any visible HTML form validation popover when pressing
the Escape key.

Test: fast/forms/validation-bubble-escape-key-dismiss.html

  • page/EventHandler.cpp:

(WebCore::EventHandler::keyEvent):

  • page/ValidationMessageClient.h:

Source/WebKit/mac:

Override ValidationMessageClient::hideAnyValidationMessage().

  • WebCoreSupport/WebValidationMessageClient.h:
  • WebCoreSupport/WebValidationMessageClient.mm:

(WebValidationMessageClient::hideAnyValidationMessage):

Source/WebKit2:

Override ValidationMessageClient::hideAnyValidationMessage().

  • WebProcess/WebCoreSupport/WebValidationMessageClient.cpp:

(WebKit::WebValidationMessageClient::hideAnyValidationMessage):

  • WebProcess/WebCoreSupport/WebValidationMessageClient.h:

LayoutTests:

Add layout test coverage.

  • fast/forms/validation-bubble-escape-key-dismiss-expected.txt: Added.
  • fast/forms/validation-bubble-escape-key-dismiss.html: Added.
  • platform/ios-simulator/TestExpectations:
2:01 PM Changeset in webkit [211652] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

Require keyboard focus for pointer lock.
https://bugs.webkit.org/show_bug.cgi?id=167750

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-02-03
Reviewed by Tim Horton.

When keyboard focus leaves the page, end pointer lock
Prevent pointer lock when the page doesn't have keyboard focus.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::dispatchActivityStateChange):
(WebKit::WebPageProxy::requestPointerLock):

1:59 PM Changeset in webkit [211651] by commit-queue@webkit.org
  • 2 edits in trunk/Source/bmalloc

Include cstdlib before using ::malloc and posix_memalign
https://bugs.webkit.org/show_bug.cgi?id=167800

Patch by Ting-Wei Lan <Ting-Wei Lan> on 2017-02-03
Reviewed by Geoffrey Garen.

  • bmalloc/DebugHeap.cpp:
1:56 PM Changeset in webkit [211650] by commit-queue@webkit.org
  • 8 edits in trunk

Pointer lock events should be delivered directly to the target element
https://bugs.webkit.org/show_bug.cgi?id=167134
rdar://problem/30268004

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-02-03
Reviewed by Dean Jackson.

Source/WebCore:

pointer-lock/mouse-event-delivery.html: Enabled for mac, added wheel event tests.

When pointer is locked on an element, route mouse events directly to the target element, instead of
doing the normal event disptach.

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMousePressEvent):
(WebCore::EventHandler::handleMouseDoubleClickEvent):
(WebCore::EventHandler::handleMouseMoveEvent):
(WebCore::EventHandler::handleMouseReleaseEvent):
(WebCore::EventHandler::handleMouseForceEvent):
(WebCore::EventHandler::handleWheelEvent):

  • page/PointerLockController.cpp:

(WebCore::PointerLockController::isLocked): Added.
(WebCore::PointerLockController::dispatchLockedWheelEvent): Added.

  • page/PointerLockController.h:

LayoutTests:

The pointer-lock/mouse-event-delivery.html test is modified to explicitly move the mouse pointer to a valid
location before sending mouse actions. Without this, the test infrastructure doesn't know that the pointer
is over the web view and doesn't deliver events.

The pointer-lock/mouse-event-delivery.html is also modified to explicitly wait for the delivery of the
wheel event before continuing with the test. This prevents flakeyness with the order the events are received.

Added code to test for wheel events.

  • platform/mac/TestExpectations: enabled test.
  • pointer-lock/mouse-event-delivery.html:
  • pointer-lock/mouse-event-delivery-expected.txt:
1:52 PM Changeset in webkit [211649] by yoav@yoav.ws
  • 13 edits
    2 adds in trunk

Avoid evicting link preload resources when parsing is done.
https://bugs.webkit.org/show_bug.cgi?id=167415

Reviewed by Ryosuke Niwa.

Source/WebCore:

Currently all preloads (speculative and link preload) are being cleared when the document has finished parsing.
When it comes to link preloads, it can result in resources being cleared before the page had a chance to use them. (e.g. resources
that are preloaded in order to be loaded through script after DOMContentLoaded)

This patch fixes that by marking link preload resources as such, so that they can be handled separately inside clearPreloads().
As this fix also exposed an issue with load cancelation with invalid hrefs (which tests were passing before due to the preloads
being cleared), said issue is also fixed by clearing previousely preloaded resources if an invalid link preload is later detected.

Test: http/tests/preload/not_evicting_preload_at_onload.html

  • dom/Document.cpp:

(WebCore::Document::finishedParsing): Only clear speculative preloads when parsing is finished.

  • loader/LinkLoader.cpp:

(WebCore::LinkLoader::preloadIfNeeded): Set request flag indicating link preload.
(WebCore::LinkLoader::loadLink): Clear previousely preloaded resource to cancel their load.

  • loader/LinkPreloadResourceClients.h:

(WebCore::LinkPreloadResourceClient::clearResource): Call cancelLoad() when the client is cleared.

  • loader/cache/CachedResource.h:

(WebCore::CachedResource::isLinkPreload):
(WebCore::CachedResource::setLinkPreload):

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::CachedResource): Initialize m_isLinkPreload with the request's value.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::~CachedResourceLoader):
(WebCore::CachedResourceLoader::requestResource): Mirror the request link preload flag to the resource if it's fetched from cache.
(WebCore::CachedResourceLoader::clearPreloads): Add a "speculative only" mode, which doesn't clear link preloads.

  • loader/cache/CachedResourceLoader.h:
  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::CachedResourceRequest):

  • loader/cache/CachedResourceRequest.h:

(WebCore::CachedResourceRequest::isLinkPreload):
(WebCore::CachedResourceRequest::setIsLinkPreload):

LayoutTests:

  • http/tests/preload/dynamic_remove_preload_href.html: Test passed before for the wrong reasons. Cache-busting in order for it to genuinely pass.
  • http/tests/preload/not_delaying_window_onload_before_discovery.html: Test passed before for the wrong reasons. Cache-busting in order for it to genuinely pass.
  • http/tests/preload/not_evicting_preload_at_onload-expected.txt: Added.
  • http/tests/preload/not_evicting_preload_at_onload.html: Added.
  • platform/mac/TestExpectations: Skipping http/tests/preload/dynamic_removing_preload.html due to https://bugs.webkit.org/show_bug.cgi?id=167792
1:48 PM Changeset in webkit [211648] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Stash away the ports - they will be nulled out before the cancel handlers are called
https://bugs.webkit.org/show_bug.cgi?id=167812

Reviewed by Geoffrey Garen.

  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::Connection::open):

1:17 PM Changeset in webkit [211647] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Simple line layout: Removing adjacent trailing whitespace runs should not crash.
https://bugs.webkit.org/show_bug.cgi?id=167803
<rdar://problem/30337368>

Reviewed by Antti Koivisto.

Source/WebCore:

In case of adjacent collapsed whitespace fragments, the length of these fragments (TextFragmentIterator::TextFragment)
do not necessarily equal the length of the final runs (SimpleLineLayout::Run).
This patch removes the dependency on the length and switches over to using the position information instead.

Test: fast/text/simple-line-layout-multiple-trailingwhitespace-crash.html

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::LineState::appendFragmentAndCreateRunIfNeeded):
(WebCore::SimpleLineLayout::LineState::removeTrailingWhitespace):

LayoutTests:

  • fast/text/simple-line-layout-multiple-trailingwhitespace-crash-expected.txt: Added.
  • fast/text/simple-line-layout-multiple-trailingwhitespace-crash.html: Added.
12:53 PM Changeset in webkit [211646] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

Correct memory leak in MediaConstraints
https://bugs.webkit.org/show_bug.cgi?id=167744
<rdar://problem/30331444>

Reviewed by Anders Carlsson.

ConstraintHolder returns a reference to an object created by operator new. When the
returned value is assigned or stored in Vector or other containers we leak memory.
Instead, this value should just be returned as a regular object so that the return
value optimization can make sure memory is properly (and efficiently) used.

Tested by existing mediastream tests.

  • platform/mediastream/MediaConstraints.h:

(WebCore::FlattenedConstraint::ConstraintHolder::create): Return by value.
(WebCore::FlattenedConstraint::ConstraintHolder::~ConstraintHolder): Don't attempt to
delete memory that was moved away.
(WebCore::FlattenedConstraint::ConstraintHolder::ConstraintHolder): Add Move constructor.

12:49 PM Changeset in webkit [211645] by Chris Dumez
  • 3 edits
    2 adds in trunk

Fix bad assertion under HTMLTreeBuilder::processStartTagForInBody()
https://bugs.webkit.org/show_bug.cgi?id=167799
<rdar://problem/30237241>

Reviewed by Brent Fulgham.

Source/WebCore:

Fix bad assertion under HTMLTreeBuilder::processStartTagForInBody() that was
expecting the root element to be an <html> element when parsing a <frameset>.
While this assertion is true in theory and as per the specification, it does
not hold in WebKit when parsing a DocumentFragment. This is because WebKit
has an optimization causing us to have a DocumentFragment as root element
when parsing a fragment. See the following constructor:
"HTMLTreeBuilder(HTMLDocumentParser&, DocumentFragment&, Element&, ParserContentPolicy, const HTMLParserOptions&)"

which has the following code:
"""
https://html.spec.whatwg.org/multipage/syntax.html#parsing-html-fragments
For efficiency, we skip step 5 ("Let root be a new html element with no attributes") and instead use the DocumentFragment as a root node.
m_tree.openElements().pushRootNode(HTMLStackItem::create(fragment));
"""

Update the assertion to expect a DocumentFragment as root element when parsing
a fragment, and keep expecting an <html> element otherwise.

Test: fast/parser/fragment-with-frameset-crash.html

  • html/parser/HTMLTreeBuilder.cpp:

(WebCore::HTMLTreeBuilder::processStartTagForInBody):

LayoutTests:

Add layout test coverage. This test passes in all major browsers but used to hit
the bad assertion in WebKit debug builds.

  • fast/parser/fragment-with-frameset-crash-expected.txt: Added.
  • fast/parser/fragment-with-frameset-crash.html: Added.
12:28 PM Changeset in webkit [211644] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Inline createReceiveSource in its two call sites
https://bugs.webkit.org/show_bug.cgi?id=167809

Reviewed by Alex Christensen.

  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::Connection::open):
(IPC::createReceiveSource): Deleted.

12:07 PM Changeset in webkit [211643] by Wenson Hsieh
  • 3 edits in trunk/Source/WebKit2

WKActionSheet should dismiss with animation when done with the sheet
https://bugs.webkit.org/show_bug.cgi?id=167804
<rdar://problem/30334861>

Reviewed by Tim Horton.

Currently, we do not dismiss the action menu when -doneWithSheet is invoked. While this is okay when the menu is
dismissed via tap (since it will be dismissed as default behavior by the popover controller) we need to manually
dismiss it if we are trying to programmatically dismiss the action sheet/menu.

  • UIProcess/ios/WKActionSheet.mm:

(-[WKActionSheet presentSheetFromRect:]):
(-[WKActionSheet doneWithSheet]):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setupInteraction]):
(-[WKContentView resignFirstResponder]):

12:00 PM Changeset in webkit [211642] by sbarati@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

When OSR entering to the baseline JIT from the LLInt for a ProgramCodeBlock we can skip compiling a lot of the program
https://bugs.webkit.org/show_bug.cgi?id=167725
<rdar://problem/30339082>

Reviewed by Michael Saboff.

We often want to baseline compile ProgramCode once we hit a loop in the LLInt.
However, some programs execute a non-trivial amount of code before the loop.
This code can never be executed again because ProgramCodeBlocks never run more
than once. We're wasting time and memory by compiling code that is unreachable
from the OSR entry destination. This patch fixes this by only compiling code
that is reachable from the OSR entry destination.

This is a speedup on Kraken/ai-astar for devices with limited CPUs (I've been
testing on devices with 2 CPUs). On ai-astar, we were spending 50-100ms compiling
a huge ProgramCodeBlock in the baseline JIT where the majority of the code
would never execute. If this compilation was kicked off on the main thread,
then we'd be stalled for a long time. If it were started on the baseline JITs
background compilation thread, we'd still waste 50-100ms in that thread, causing
all other baseline compilations to happen on the main thread.

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::executeProgram):

  • interpreter/Interpreter.h:
  • jit/JIT.cpp:

(JSC::JIT::JIT):
(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:

(JSC::JIT::compile):

  • jit/JITWorklist.cpp:

(JSC::JITWorklist::Plan::Plan):
(JSC::JITWorklist::Plan::compileNow):
(JSC::JITWorklist::compileLater):
(JSC::JITWorklist::compileNow):

  • jit/JITWorklist.h:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::jitCompileAndSetHeuristics):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/Completion.cpp:

(JSC::evaluate):

11:53 AM Changeset in webkit [211641] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

[Modern Media Controls] Skip back button is visible with a live broadcast video
https://bugs.webkit.org/show_bug.cgi?id=167793

Patch by Antoine Quint <Antoine Quint> on 2017-02-03
Reviewed by Eric Carlson.

Source/WebCore:

We shouldn't be showing the skip back button when a live broadcast video is playing.
We now listen to the "durationchange" event to determine when we have an inifinite-duration
video and disable the skip button in that case.

Test: http/tests/media/modern-media-controls/skip-back-support/skip-back-support-live-broadcast.html

  • Modules/modern-media-controls/media/skip-back-support.js:

(SkipBackSupport.prototype.get mediaEvents):
(SkipBackSupport.prototype.syncControl):
(SkipBackSupport):

LayoutTests:

Add a new test to check that a live broadcast video doesn't show the skip back button.

  • http/tests/media/modern-media-controls/skip-back-support/skip-back-support-live-broadcast-expected.txt: Added.
  • http/tests/media/modern-media-controls/skip-back-support/skip-back-support-live-broadcast.html: Added.
11:08 AM Changeset in webkit [211640] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Add stroke-linecap property values to CSS autocompletion
https://bugs.webkit.org/show_bug.cgi?id=167778

Reviewed by Joseph Pecoraro.

  • UserInterface/Models/CSSKeywordCompletions.js:

Add autocompletion values for fill-rule and stroke-linecap.

10:45 AM Changeset in webkit [211639] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

Doc generation failure in WebKitSecurityOrigin
https://bugs.webkit.org/show_bug.cgi?id=167796

Patch by Olivier Blin <Olivier Blin> on 2017-02-03
Reviewed by Michael Catanzaro.

  • UIProcess/API/gtk/WebKitSecurityOrigin.cpp:

warning: Free-form return value description in webkit_security_origin_get_protocol. Use `Returns:' to avoid ambiguities.

9:44 AM Changeset in webkit [211638] by achristensen@apple.com
  • 7 edits in trunk

URLParser: implement forbidden host code points for non-special URLs
https://bugs.webkit.org/show_bug.cgi?id=167779

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/url-constructor-expected.txt:
  • web-platform-tests/url/url-setters-expected.txt:

Source/WebCore:

Covered by newly passing web platform tests.

  • platform/URLParser.cpp:

(WebCore::isC0Control):
(WebCore::isForbiddenHostCodePoint):
(WebCore::URLParser::parseHostAndPort):
In non-special URL hosts such as customprotocol://strange%host
don't accept characters that are part of the URL grammar and would be forbidden
in a special URL host, like https://not[allowed
This was recently added to the spec in https://github.com/whatwg/url/issues/214

9:39 AM Changeset in webkit [211637] by pvollan@apple.com
  • 3 edits
    2 adds in trunk

The CSS property -webkit-text-stroke is not applied on captions.
https://bugs.webkit.org/show_bug.cgi?id=167687

Reviewed by Brent Fulgham.

Source/WebCore:

Add style to list of valid properties for cue.

Test: media/track/track-css-stroke-cues.html

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::isValidCueStyleProperty):

LayoutTests:

  • media/track/track-css-stroke-cues-expected.txt: Added.
  • media/track/track-css-stroke-cues.html: Added.
9:30 AM WebKitGTK/2.14.x edited by Michael Catanzaro
Remove last proposal, not ready for this yet (diff)
9:28 AM WebKitGTK/2.14.x edited by Michael Catanzaro
(diff)
9:21 AM Changeset in webkit [211636] by achristensen@apple.com
  • 6 edits in trunk

Align URL setters with spec for URLs that cannot be a base URL
https://bugs.webkit.org/show_bug.cgi?id=167783

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/url/url-setters-expected.txt:

Source/WebCore:

Setting things like credentials on mailto URLs doesn't make sense.
It's forbidden by the spec.

Covered by newly passing web platform tests.

  • html/URLUtils.h:

(WebCore::URLUtils<T>::setUsername):
(WebCore::URLUtils<T>::setPassword):
(WebCore::URLUtils<T>::setHost):
(WebCore::URLUtils<T>::setHostname):
(WebCore::URLUtils<T>::setPort):
(WebCore::URLUtils<T>::setPathname):

  • platform/URL.cpp:

(WebCore::URL::serialize):

  • platform/URL.h:

(WebCore::URL::cannotBeABaseURL):

9:21 AM Changeset in webkit [211635] by Konstantin Tokarev
  • 2 edits in trunk

[CMake] RelWithDebInfo builds are super broken at runtime
https://bugs.webkit.org/show_bug.cgi?id=163897

Reviewed by Michael Catanzaro.

  • Source/cmake/OptionsCommon.cmake: Apply -fno-strict-aliasing,

-fno-exceptions, and -fno-rtti flags to all configurations,
instead of only "Release".

9:11 AM Changeset in webkit [211634] by eric.carlson@apple.com
  • 2 edits
    4 adds in trunk/Source/WebCore

[Mac] Add classes to manage audio samples
https://bugs.webkit.org/show_bug.cgi?id=167739

Reviewed by Jer Noble.

No new tests, this code isn't used yet.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/audio/mac/AudioSampleBufferList.cpp: Added.

(WebCore::AudioSampleBufferList::create):
(WebCore::AudioSampleBufferList::AudioSampleBufferList):
(WebCore::AudioSampleBufferList::~AudioSampleBufferList):
(WebCore::AudioSampleBufferList::setSampleCount):
(WebCore::AudioSampleBufferList::applyGain):
(WebCore::AudioSampleBufferList::mixFrom):
(WebCore::AudioSampleBufferList::copyFrom):
(WebCore::AudioSampleBufferList::copyTo):
(WebCore::AudioSampleBufferList::reset):
(WebCore::AudioSampleBufferList::zero):
(WebCore::AudioSampleBufferList::zeroABL):
(WebCore::AudioSampleBufferList::convertInput):
(WebCore::AudioSampleBufferList::audioConverterCallback):
(WebCore::AudioSampleBufferList::configureBufferListForStream):

  • platform/audio/mac/AudioSampleBufferList.h: Added.

(WebCore::AudioSampleBufferList::streamDescription):
(WebCore::AudioSampleBufferList::bufferList):
(WebCore::AudioSampleBufferList::sampleCapacity):
(WebCore::AudioSampleBufferList::sampleCount):
(WebCore::AudioSampleBufferList::timestamp):
(WebCore::AudioSampleBufferList::hostTime):
(WebCore::AudioSampleBufferList::setTimes):
(WebCore::AudioSampleBufferList::audioBufferListSizeForStream):

  • platform/audio/mac/AudioSampleDataSource.cpp: Added.

(WebCore::AudioSampleDataSource::create):
(WebCore::AudioSampleDataSource::AudioSampleDataSource):
(WebCore::AudioSampleDataSource::~AudioSampleDataSource):
(WebCore::AudioSampleDataSource::setPaused):
(WebCore::AudioSampleDataSource::setupConverter):
(WebCore::AudioSampleDataSource::setInputFormat):
(WebCore::AudioSampleDataSource::setOutputFormat):
(WebCore::AudioSampleDataSource::hostTime):
(WebCore::AudioSampleDataSource::pushSamplesInternal):
(WebCore::AudioSampleDataSource::pushSamples):
(WebCore::AudioSampleDataSource::pullSamplesInternal):
(WebCore::AudioSampleDataSource::pullSamples):

  • platform/audio/mac/AudioSampleDataSource.h: Added.

(WebCore::AudioSampleDataSource::setVolume):
(WebCore::AudioSampleDataSource::volume):
(WebCore::AudioSampleDataSource::setMuted):
(WebCore::AudioSampleDataSource::muted):

6:21 AM Changeset in webkit [211633] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

Unreviewed. Fix the buidl after r211631.

I added the OS(LINUX) ifdef to the wrong file by mistake.

  • page/ResourceUsageThread.h:
  • page/linux/ResourceUsageThreadLinux.cpp:
5:04 AM Changeset in webkit [211632] by Csaba Osztrogonác
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed typo fix after r211630.

  • CMakeLists.txt:
5:03 AM Changeset in webkit [211631] by Carlos Garcia Campos
  • 16 edits
    3 adds in trunk

[GTK] Add initial implementation of resource usage overlay
https://bugs.webkit.org/show_bug.cgi?id=167731

Reviewed by Michael Catanzaro.

.:

Enable RESOURCE_USAGE.

  • Source/cmake/OptionsGTK.cmake:

Source/JavaScriptCore:

Also expose nextFireTime() for GTK+ port.

  • heap/GCActivityCallback.cpp:

(JSC::GCActivityCallback::scheduleTimer):
(JSC::GCActivityCallback::cancelTimer):

  • heap/GCActivityCallback.h:

Source/WebCore:

Add an implementation of ResourceUsageOverlay and ResourceUsageThread for Linux systems.

  • PlatformGTK.cmake: Add new new files to compilation.
  • page/Page.cpp:

(WebCore::Page::setResourceUsageOverlayVisible): Do not create the page overlay if accelerated compositing is
not enabled.

  • page/ResourceUsageOverlay.h:
  • page/linux/ResourceUsageOverlayLinux.cpp: Added.

(WebCore::cpuUsageString):
(WebCore::formatByteNumber):
(WebCore::gcTimerString):
(WebCore::ResourceUsageOverlay::platformInitialize):
(WebCore::ResourceUsageOverlay::platformDestroy):

  • page/linux/ResourceUsageThreadLinux.cpp: Added.

(WebCore::cpuPeriod):
(WebCore::cpuUsage):
(WebCore::ResourceUsageThread::platformThreadBody):

Source/WebKit2:

Toggle the resource usage overlay visibility by pressing CTRL + Shift + G. Only available when building with
developer mode enabled.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseKeyPressEvent):

Source/WTF:

Enable RESOURCE_USAGE for GTK+ port too.

  • wtf/Platform.h:

LayoutTests:

Unskip inpector tests depending on RESOURCE_USAGE.

  • platform/gtk/TestExpectations:
4:56 AM Changeset in webkit [211630] by Csaba Osztrogonác
  • 2 edits in trunk/Source/JavaScriptCore

[cmake] Unreviewed AArch64 buildfix after r211603.
https://bugs.webkit.org/show_bug.cgi?id=167714

  • CMakeLists.txt:
4:40 AM Changeset in webkit [211629] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

REGRESSION(r211486) [GTK] The MiniBrowser doesn't work anymore.
https://bugs.webkit.org/show_bug.cgi?id=167776

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2017-02-03
Reviewed by Yusuke Suzuki.

Since r211486 JSC::initializeThreading() also initializes the main run loop. It would be possible that RunLoop
need to know if it's the main one or not in its constructor, like the GLib impementation does, so we need to
ensure that WTF threading and MainThread are initialized before creating the main RunLoop. This is a quick fix
because the regression made impossible to load anything in a WebView, but I think we should review all the
initialize methods, what they do and how they are called in all the code.

  • Shared/WebKit2Initialize.cpp:

(WebKit::InitializeWebKit2): Call WTF::initializeThreading() and WTF::initializeMainThread() before
JSC::initializeThreading() and do not call RunLoop::initializeMainRunLoop() because it's already called by JSC.

4:21 AM WebKitGTK/2.14.x edited by Michael Catanzaro
(diff)
4:21 AM Changeset in webkit [211628] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

[Mac][cmake] One more unreviewed speculative buildfix after r211403.
https://bugs.webkit.org/show_bug.cgi?id=165478

  • UIProcess/API/Cocoa/WKWebView.mm: WebSQLiteDatabaseTrackerClient.h is an iOS specific

header in platform/ios directory which shouldn't and can't be included on non iOS build.

4:03 AM Changeset in webkit [211627] by eocanha@igalia.com
  • 3 edits in trunk/Source/WebCore

[GStreamer] Store preloaded media in webkit's cache
https://bugs.webkit.org/show_bug.cgi?id=119477

Reviewed by Xabier Rodriguez-Calvar.

Files cached on disk by MediaPlayerPrivateGStreamer are deleted only when the player is closed. If the
WebProcess crashed, they're just left there in the cache directory. This patch changes the location
of those temporary files to a proper temporary directory (/var/tmp, as those files aren't actually
reusable, so they don't belong to a cache directory, and /tmp is a bad place because it's RAM-based on
some distros), unlinks (deletes) them right after creation and also deletes any other stalled temporary
file on the old legacy cache directory.

There's no API in GstPlaybin to control the temporary file location, so we do it manually by locating
the GstDownloadBuffer element in the pipeline as soon as it's created, reconfiguring it with the right
temporary file path and deleting the file as soon as it's created.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer): Stop listening to element-added.
(WebCore::MediaPlayerPrivateGStreamer::uriDecodeBinElementAddedCallback): Look for GstDownloadBuffer.
(WebCore::MediaPlayerPrivateGStreamer::downloadBufferFileCreatedCallback): Remove the file after creation.
(WebCore::MediaPlayerPrivateGStreamer::purgeOldDownloadFiles): Delete legacy files.
(WebCore::MediaPlayerPrivateGStreamer::sourceChanged): Listen to element-added signals on GstUriDecodeBin.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: New reference to GstDownloadBuffer.
3:53 AM Changeset in webkit [211626] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

[Mac][cmake] Unreviewed speculative buildfix after r211403.
https://bugs.webkit.org/show_bug.cgi?id=165478

  • UIProcess/API/Cocoa/WKWebView.mm: WebBackgroundTaskController.h is an iOS specific

header in platform/ios directory which shouldn't and can't be included on non iOS build.

3:12 AM Changeset in webkit [211625] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

WebContent crash when pasting into input fields at com.apple.WebCore: WebCore::ResourceRequestBase::url const + 9
https://bugs.webkit.org/show_bug.cgi?id=167787
rdar://problem/29168795

Reviewed by Andreas Kling.

No test, don't know how to get here.

  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::crossfadeBlend): Null check.

2:23 AM Changeset in webkit [211624] by berto@igalia.com
  • 2 edits in trunk/Source/WebCore

JSDOMWindowBase.cpp doesn't build if the JIT is disabled
https://bugs.webkit.org/show_bug.cgi?id=167785

Reviewed by Carlos Garcia Campos.

r211403 moved GetCallerGlobalObjectFunctor from JSDOMBinding.cpp
to JSDOMWindowBase.cpp, but forgot to include bytecode/CodeBlock.h
in the latter file.

This breaks the build if the JIT is disabled because the headers
that would include ClodeBlock.h indirectly are guarded by
ENABLE(JIT).

  • bindings/js/JSDOMWindowBase.cpp:
1:05 AM Changeset in webkit [211623] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

LayoutTest media/modern-media-controls/tracks-panel/tracks-panel-hide-click-outside.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=165290

Unreviewed test gardening.

Patch by Antoine Quint <Antoine Quint> on 2017-02-03

  • platform/mac/TestExpectations:
Note: See TracTimeline for information about the timeline view.