Timeline



Apr 14, 2018:

6:42 PM Changeset in webkit [230660] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

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

Landed prematurely (Requested by ap on #webkit).

Reverted changeset:

"Deactivate the WindowServer connection for the WebContent
process."
https://bugs.webkit.org/show_bug.cgi?id=184451
https://trac.webkit.org/changeset/230659

10:57 AM Changeset in webkit [230659] by pvollan@apple.com
  • 2 edits in trunk/Source/WTF

Deactivate the WindowServer connection for the WebContent process.
https://bugs.webkit.org/show_bug.cgi?id=184451
<rdar://problem/38313938>

Reviewed by Brent Fulgham.

Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
process startup. After calling this function, every attempt to establish a connection to the
WindowServer from the WebContent process will fail, except for CA render server connections.

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

[GStreamer] Expose a method to retrieve the GstStream from a TrackPrivateBaseGStreamer
https://bugs.webkit.org/show_bug.cgi?id=184620

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

This is a minor change, a dedicated test doesn't really make sense here.

  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h:

(WebCore::TrackPrivateBaseGStreamer::stream):

12:00 AM Changeset in webkit [230657] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] Build is broken after r230640
https://bugs.webkit.org/show_bug.cgi?id=184623

Patch by Carlos Eduardo Ramalho <cadubentzen@gmail.com> on 2018-04-14
Reviewed by Žan Doberšek.

UIProcess/SuspendedPageProxy.cpp was not included to CMake build in r230640.

  • CMakeLists.txt: Added UIProcess/SuspendedPageProxy.cpp to WebKit_SOURCES.

Apr 13, 2018:

9:48 PM Changeset in webkit [230656] by Alan Bujtas
  • 19 edits
    1 delete in trunk/Tools

[LayoutReloaded] Update class documentation
https://bugs.webkit.org/show_bug.cgi?id=184625

Reviewed by Antti Koivisto.

  • LayoutReloaded/DisplayTree/Box.js:
  • LayoutReloaded/FormattingContext/BlockFormatting/BlockFormattingContext.js:
  • LayoutReloaded/FormattingContext/BlockFormatting/BlockMarginCollapse.js:
  • LayoutReloaded/FormattingContext/FloatingContext.js:
  • LayoutReloaded/FormattingContext/FormattingContext.js:
  • LayoutReloaded/FormattingContext/InlineFormatting/InlineFormattingContext.js:
  • LayoutReloaded/FormattingContext/InlineFormatting/Line.js:
  • LayoutReloaded/FormattingState/BlockFormattingState.js:
  • LayoutReloaded/FormattingState/FloatingState.js:
  • LayoutReloaded/FormattingState/FormattingState.js:
  • LayoutReloaded/FormattingState/InlineFormattingState.js:
  • LayoutReloaded/LayoutState.js:
  • LayoutReloaded/LayoutTree/BlockContainer.js:
  • LayoutReloaded/LayoutTree/Box.js:
  • LayoutReloaded/LayoutTree/Container.js:
  • LayoutReloaded/LayoutTree/InlineBox.js:
  • LayoutReloaded/LayoutTree/InlineContainer.js:
  • LayoutReloaded/LayoutTree/Text.js:
  • LayoutReloaded/misc/headers/BlockContainer.h: Removed.
  • LayoutReloaded/misc/headers/BlockFormattingContext.h: Removed.
  • LayoutReloaded/misc/headers/BlockMarginCollapse.h: Removed.
  • LayoutReloaded/misc/headers/Box.h: Removed.
  • LayoutReloaded/misc/headers/Container.h: Removed.
  • LayoutReloaded/misc/headers/FloatingContext.h: Removed.
  • LayoutReloaded/misc/headers/FormattingContext.h: Removed.
  • LayoutReloaded/misc/headers/InitialBlockContainer.h: Removed.
  • LayoutReloaded/misc/headers/InlineBox.h: Removed.
  • LayoutReloaded/misc/headers/LayoutContext.h: Removed.
  • LayoutReloaded/misc/headers/Line.h: Removed.
  • LayoutReloaded/misc/headers/Text.h: Removed.
8:21 PM Changeset in webkit [230655] by Alan Bujtas
  • 7 edits in trunk/Tools

[LayoutReloaded] Add simple implementation for FormattingState::markNeedsLayout()
https://bugs.webkit.org/show_bug.cgi?id=184621

Reviewed by Antti Koivisto.

This is just a simple, mark ancestors dirty implementation.

  • LayoutReloaded/FormattingState/FormattingState.js:

(FormattingState.prototype.markNeedsLayout):

  • LayoutReloaded/LayoutState.js:

(LayoutState.prototype.markNeedsLayout):
(LayoutState.prototype.setNeedsLayoutById): Deleted.
(LayoutState.prototype.setNeedsLayout): Deleted.

  • LayoutReloaded/TreeBuilder.js:

(TreeBuilder.prototype._createAndAttachBox):
(TreeBuilder.prototype._findBox): Deleted.

  • LayoutReloaded/Utils.js:

(Utils.layoutBoxById):

  • LayoutReloaded/test/index.html:
  • LayoutReloaded/test/simple-incremental-layout-with-static-content.html:
8:14 PM Changeset in webkit [230654] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK][Wayland] Unflag test-case fast/canvas/canvas-createPattern-video-modify.html
https://bugs.webkit.org/show_bug.cgi?id=182432

Patch by Carlos Ramalho <cadubentzen@gmail.com> on 2018-04-13
Reviewed by Michael Catanzaro.

  • platform/gtk-wayland/TestExpectations: Unmarked fast/canvas/canvas-createPattern-video-modify.html
7:14 PM Changeset in webkit [230653] by clopez@igalia.com
  • 2 edits in trunk/Tools

[WPE] [webkitpy] The driver requirements should be checked before starting the tests
https://bugs.webkit.org/show_bug.cgi?id=184595

Reviewed by Michael Catanzaro.

Ensure Driver.check_driver() is checked at check_sys_deps() time.

  • Scripts/webkitpy/port/wpe.py:

(WPEPort.check_sys_deps):

6:07 PM Changeset in webkit [230652] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit

Unreviewed, rolling out r230447.

Caused flaky selection test failures on iOS

Reverted changeset:

"Switch to UIWKTextInteractionAssistant for non-editable text"
https://bugs.webkit.org/show_bug.cgi?id=182834
https://trac.webkit.org/changeset/230447

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

Mark http/wpt/service-workers/header-filtering.https.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=184469

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
5:39 PM Changeset in webkit [230650] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark http/tests/cache-storage/cache-records-persistency.https.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=177380

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
5:39 PM Changeset in webkit [230649] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark media/audio-concurrent-supported.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=184612

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:39 PM Changeset in webkit [230648] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark media/video-volume-slider-drag.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=184610

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:30 PM Changeset in webkit [230647] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Skip animations/added-while-suspended.html and transitions/created-while-suspended.html.
https://bugs.webkit.org/show_bug.cgi?id=184608

Unreviewed test gardening.

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
3:50 PM Changeset in webkit [230646] by Kocsen Chung
  • 1 copy in tags/Safari-605.1.33.1.4

Tag Safari-605.1.33.1.4.

3:48 PM Changeset in webkit [230645] by Kocsen Chung
  • 1 copy in tags/Safari-605.1.33.0.3

Tag Safari-605.1.33.0.3.

3:42 PM Changeset in webkit [230644] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

WebKit crashes when libwebrtc.dylib is missing
https://bugs.webkit.org/show_bug.cgi?id=184607

Rubber-stamped by Jer Noble.

Don't call LibWebRTC related code when libwebrtc is not available.

  • dom/Document.cpp:

(WebCore::Document::prepareForDestruction):
(WebCore::Document::suspend):

2:23 PM Changeset in webkit [230643] by Chris Dumez
  • 24 edits
    2 adds in trunk/Source

Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame
https://bugs.webkit.org/show_bug.cgi?id=184591

Reviewed by Sam Weinig.

Source/WebCore:

Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame.
RemoteFrames do not need a ScriptController but do need to maintain WindowProxies.
This is work towards fixing Bug 184515.

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

(WebCore::DOMWrapperWorld::~DOMWrapperWorld):
(WebCore::DOMWrapperWorld::clearWrappers):

  • bindings/js/DOMWrapperWorld.h:

(WebCore::DOMWrapperWorld::didCreateWindowProxy):
(WebCore::DOMWrapperWorld::didDestroyWindowProxy):

  • bindings/js/JSBindingsAllInOne.cpp:
  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::toJSDOMWindow):

  • bindings/js/JSDOMWindowProxy.cpp:

(WebCore::toJS):
(WebCore::toJSDOMWindowProxy):

  • bindings/js/ScriptCachedFrameData.cpp:

(WebCore::ScriptCachedFrameData::ScriptCachedFrameData):
(WebCore::ScriptCachedFrameData::restore):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::~ScriptController):
(WebCore::ScriptController::evaluateInWorld):
(WebCore::ScriptController::loadModuleScriptInWorld):
(WebCore::ScriptController::linkAndEvaluateModuleScriptInWorld):
(WebCore::ScriptController::evaluateModule):
(WebCore::ScriptController::clearWindowProxiesNotMatchingDOMWindow):
(WebCore::ScriptController::setDOMWindowForWindowProxy):
(WebCore::ScriptController::initScriptForWindowProxy):
(WebCore::ScriptController::setupModuleScriptHandlers):
(WebCore::ScriptController::windowProxyController):
(WebCore::ScriptController::enableEval):
(WebCore::ScriptController::enableWebAssembly):
(WebCore::ScriptController::disableEval):
(WebCore::ScriptController::disableWebAssembly):
(WebCore::ScriptController::attachDebugger):
(WebCore::ScriptController::updateDocument):
(WebCore::ScriptController::collectIsolatedContexts):
(WebCore::ScriptController::windowScriptNPObject):
(WebCore::ScriptController::executeIfJavaScriptURL):

  • bindings/js/ScriptController.h:

(WebCore::ScriptController::globalObject):

  • bindings/js/ScriptControllerMac.mm:

(WebCore::ScriptController::windowScriptObject):

  • bindings/js/ScriptState.cpp:

(WebCore::mainWorldExecState):

  • bindings/js/WindowProxyController.cpp: Added.

(WebCore::WindowProxyController::WindowProxyController):
(WebCore::WindowProxyController::destroyWindowProxy):
(WebCore::WindowProxyController::createWindowProxy):
(WebCore::WindowProxyController::windowProxies):
(WebCore::WindowProxyController::createWindowProxyWithInitializedScript):

  • bindings/js/WindowProxyController.h: Added.

(WebCore::WindowProxyController::releaseWindowProxies):
(WebCore::WindowProxyController::setWindowProxies):
(WebCore::WindowProxyController::windowProxy):
(WebCore::WindowProxyController::existingWindowProxy const):
(WebCore::WindowProxyController::globalObject):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::dispatchDidClearWindowObjectInWorld):

  • page/AbstractFrame.cpp:

(WebCore::AbstractFrame::AbstractFrame):

  • page/AbstractFrame.h:

(WebCore::AbstractFrame::windowProxyController):
(WebCore::AbstractFrame::windowProxyController const):

Source/WebKit:

Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame.
RemoteFrames do not need a ScriptController but do need to maintain WindowProxies.
This is work towards fixing Bug 184515.

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::windowScriptNPObject):

Source/WebKitLegacy/mac:

Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame.
RemoteFrames do not need a ScriptController but do need to maintain WindowProxies.
This is work towards fixing Bug 184515.

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::NetscapePluginInstanceProxy::getWindowNPObject):

  • WebView/WebFrame.mm:

(-[WebFrame _attachScriptDebugger]):

Source/WTF:

Add isEmpty() convenience method to SizedIteratorRange.

  • wtf/IteratorRange.h:

(WTF::SizedIteratorRange::isEmpty const):

11:40 AM Changeset in webkit [230642] by Alan Bujtas
  • 2 edits in trunk/Tools

Rebaseline LayoutReloaded patch file (collectRenderersWithNeedsLayout).

  • LayoutReloaded/misc/LayoutReloadedWebKit.patch:
11:11 AM Changeset in webkit [230641] by Jonathan Bedard
  • 2 edits in trunk/Tools

Boot fewer simulators in CI/EWS machines
https://bugs.webkit.org/show_bug.cgi?id=184594
<rdar://problem/39188082>

Reviewed by Alexey Proskuryakov.

This is a temporary workaround fro <rdar://problem/39393590>.

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDeviceManager): Treat simulators as taking 6 gigs instead of 2.

11:04 AM Changeset in webkit [230640] by beidson@apple.com
  • 22 edits
    1 copy
    1 add in trunk

Introduce SuspendedPageProxy to keep old web processes around after their WebPageProxy has been swapped to a new one.
https://bugs.webkit.org/show_bug.cgi?id=184559

Reviewed by Alex Christensen.

Source/WebCore:

Covered by new API test.

WebCore changes rework the meaning of a "ForSuspension" policy to simply navigate the page to about:blank.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::redirectReceived):
(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::startLoadingMainResource):

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

(WebCore::FrameLoader::init):
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):

Source/WebKit:

Before this patch, when a WebPageProxy navigates and is swapped to a new process, the old process almost always goes away.

This is not desirable for a few reasons:
1 - We can't keep the PageCache working for back/forward scenarios
2 - We throw away a "foo.com" web process, meaning the next time we need to host a "foo.com" web page we have to launch

and initialize a new web process.

This patch adds a SuspendedPageProxy object to keep around the old web process and to manage communication with it.

For now, a WebPageProxy keeps exactly one "suspended page" representing the most recently visited page and its process.
Additionally, that process is never reused.

So no benefit is achieved with this patch, but it enables future benefits.

  • Platform/Logging.h:
  • Shared/WebBackForwardListItem.cpp:

(WebKit::WebBackForwardListItem::setSuspendedPage):

  • Shared/WebBackForwardListItem.h:

New object to represent the state of a WebPageProxy in an old web process that is not currently hosting the view.

  • UIProcess/SuspendedPageProxy.cpp: Added.

(WebKit::SuspendedPageProxy::SuspendedPageProxy):
(WebKit::SuspendedPageProxy::~SuspendedPageProxy):
(WebKit::SuspendedPageProxy::webProcessDidClose):
(WebKit::SuspendedPageProxy::didFinishLoad):
(WebKit::SuspendedPageProxy::didReceiveMessage):
(WebKit::SuspendedPageProxy::loggingString const):

  • UIProcess/SuspendedPageProxy.h: Copied from Source/WebKit/Platform/Logging.h.

(WebKit::SuspendedPageProxy::create):
(WebKit::SuspendedPageProxy::page const):
(WebKit::SuspendedPageProxy::process const):
(WebKit::SuspendedPageProxy::item const):
(WebKit::SuspendedPageProxy::finishedSuspending const):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::attachToProcessForNavigation):
(WebKit::WebPageProxy::maybeCreateSuspendedPage):
(WebKit::WebPageProxy::suspendedPageProcessClosed):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::didFinishLoadForFrame):

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

(WebKit::WebProcessProxy::suspendWebPageProxy):
(WebKit::WebProcessProxy::suspendedPageWasDestroyed):
(WebKit::WebProcessProxy::removeWebPage):
(WebKit::WebProcessProxy::didReceiveMessage): Optionally pass WebPageProxy messages along to SuspendedPageProxy objects.
(WebKit::WebProcessProxy::didClose):
(WebKit::WebProcessProxy::maybeShutDown):
(WebKit::WebProcessProxy::canTerminateChildProcess): Don't terminate child processes if they still have suspended pages.

  • UIProcess/WebProcessProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setIsSuspended):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::isSuspended const): For now, used only by WebProcess::updateActivePages. Will have more uses soon.

  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::updateActivePages): Allow the UIProcess to request an update of the web processes user visible name.

Source/WTF:

  • wtf/DebugUtilities.h:

(WTF::debugString): Add a debug utility to easily construct a "const char*" that is released after a spin of the run loop.

This greatly eases uses our String classes and functions inside of "%s" style environments like printf and LOG.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
10:37 AM Changeset in webkit [230639] by Chris Dumez
  • 4 edits in trunk

input.webkitEntries does not work as expected when folder contains accented chars
https://bugs.webkit.org/show_bug.cgi?id=184517
<rdar://problem/39265537>

Reviewed by Alex Christensen.

Source/WebCore:

Use String::fromUTF8() to construct a WTF String from the char* returned by
dirname() in FileSystem::directoryName(). Previously, we were just calling
the String constructor, which would treat the input as latin 1 instead of
UTF-8.

Change is covered by an API test rather than a layout test due to file versioning
limitations.

  • platform/posix/FileSystemPOSIX.cpp:

(WebCore::FileSystem::directoryName):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebCore/FileSystem.cpp:

(TestWebKitAPI::TEST_F):

10:31 AM Changeset in webkit [230638] by Philippe Normand
  • 2 edits in trunk/Tools

Update my emails ordering in contributors.json
https://bugs.webkit.org/show_bug.cgi?id=184587

Patch by Thibault Saunier <tsaunier@igalia.com> on 2018-04-13
Rubber-stamped by Philippe Normand.

Bugzilla seems to pick up tsaunier@igalia.com which is not the one I use there.

  • Scripts/webkitpy/common/config/contributors.json:
10:01 AM Changeset in webkit [230637] by Yusuke Suzuki
  • 15 edits in trunk/Source/WebCore

[WebCore] Use @getByIdDirectPrivate / @putByIdDirectPrivate in WebCore JS
https://bugs.webkit.org/show_bug.cgi?id=184401

Rubber stamped by Saam Barati.

Apply bug 183970 changes to WebCore JS too. This offers solid type checking
with @getByIdDirectPrivate().

  • Modules/mediastream/RTCPeerConnection.js:

(initializeRTCPeerConnection):
(getLocalStreams):
(getStreamById):
(addStream):

  • Modules/mediastream/RTCPeerConnectionInternals.js:

(isRTCPeerConnection):

  • Modules/streams/ReadableByteStreamController.js:

(enqueue):
(error):
(close):
(getter.byobRequest):

  • Modules/streams/ReadableByteStreamInternals.js:

(privateInitializeReadableStreamBYOBReader):
(privateInitializeReadableByteStreamController):
(privateInitializeReadableStreamBYOBRequest):
(isReadableByteStreamController):
(isReadableStreamBYOBRequest):
(isReadableStreamBYOBReader):
(readableByteStreamControllerCancel):
(readableByteStreamControllerError):
(readableByteStreamControllerClose):
(readableByteStreamControllerClearPendingPullIntos):
(readableByteStreamControllerGetDesiredSize):
(readableStreamHasBYOBReader):
(readableStreamHasDefaultReader):
(readableByteStreamControllerHandleQueueDrain):
(readableByteStreamControllerPull):
(readableByteStreamControllerShouldCallPull):
(readableByteStreamControllerCallPullIfNeeded):
(readableByteStreamControllerEnqueue):
(readableByteStreamControllerEnqueueChunk):
(readableByteStreamControllerRespondWithNewView):
(readableByteStreamControllerRespond):
(readableByteStreamControllerRespondInternal):
(readableByteStreamControllerRespondInReadableState):
(readableByteStreamControllerRespondInClosedState):
(readableByteStreamControllerProcessPullDescriptors):
(readableByteStreamControllerFillDescriptorFromQueue):
(readableByteStreamControllerShiftPendingDescriptor):
(readableByteStreamControllerInvalidateBYOBRequest):
(readableByteStreamControllerCommitDescriptor):
(readableStreamFulfillReadIntoRequest):
(readableByteStreamControllerPullInto):
(readableStreamAddReadIntoRequest):

  • Modules/streams/ReadableStream.js:

(initializeReadableStream):
(pipeThrough):

  • Modules/streams/ReadableStreamBYOBReader.js:

(cancel):
(read):
(releaseLock):
(getter.closed):

  • Modules/streams/ReadableStreamBYOBRequest.js:

(respond):
(respondWithNewView):
(getter.view):

  • Modules/streams/ReadableStreamDefaultController.js:

(error):

  • Modules/streams/ReadableStreamDefaultReader.js:

(cancel):
(read):
(releaseLock):
(getter.closed):

  • Modules/streams/ReadableStreamInternals.js:

(privateInitializeReadableStreamDefaultReader):
(readableStreamReaderGenericInitialize):
(readableStreamDefaultControllerError):
(readableStreamPipeTo):
(readableStreamTee):
(isReadableStream):
(isReadableStreamDefaultReader):
(isReadableStreamDefaultController):
(readableStreamError):
(readableStreamDefaultControllerCallPullIfNeeded):
(readableStreamDefaultControllerGetDesiredSize):
(readableStreamReaderGenericCancel):
(readableStreamCancel):
(readableStreamDefaultControllerCancel):
(readableStreamDefaultControllerPull):
(readableStreamDefaultControllerClose):
(readableStreamClose):
(readableStreamFulfillReadRequest):
(readableStreamDefaultReaderRead):
(readableStreamAddReadRequest):
(isReadableStreamDisturbed):
(readableStreamReaderGenericRelease):
(readableStreamDefaultControllerCanCloseOrEnqueue):
(privateInitializeReadableStreamDefaultController): Deleted.

  • Modules/streams/StreamInternals.js:

(validateAndNormalizeQueuingStrategy):

  • Modules/streams/WritableStream.js:

(initializeWritableStream):
(abort):
(close):
(write):
(getter.closed):
(getter.ready):
(getter.state):

  • Modules/streams/WritableStreamInternals.js:

(isWritableStream):
(syncWritableStreamStateWithQueue):
(errorWritableStream):
(callOrScheduleWritableStreamAdvanceQueue):

  • bindings/js/JSDOMBindingInternals.js:

(mapLikeForEach):

9:54 AM Changeset in webkit [230636] by dbates@webkit.org
  • 3 edits in trunk/Source/WebKit

Inline NetworkLoad::sharedWillSendRedirectedRequest() into NetworkLoad::willPerformHTTPRedirection()
https://bugs.webkit.org/show_bug.cgi?id=184593

Reviewed by Alex Christensen.

Following the removal of the pre-Network Session code in r227364, NetworkLoad::sharedWillSendRedirectedRequest()
is only referenced from NetworkLoad::willPerformHTTPRedirection(). We should inline its
implementation into the NetworkLoad::willPerformHTTPRedirection(), remove a function call,
and the cognitive load to follow such a function call when reading the code.

No functionality changed. So, no new tests.

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::willPerformHTTPRedirection): Moved the implementation of NetworkLoad::sharedWillSendRedirectedRequest()
into this function.
(WebKit::NetworkLoad::sharedWillSendRedirectedRequest): Deleted. Moved its implementation
into NetworkLoad::willPerformHTTPRedirection().

  • NetworkProcess/NetworkLoad.h:
9:48 AM Changeset in webkit [230635] by dbates@webkit.org
  • 3 edits in trunk/Source/WebKit

Inline NetworkLoad::sharedWillSendRedirectedRequest() into NetworkLoad::willPerformHTTPRedirection()
https://bugs.webkit.org/show_bug.cgi?id=184593

Reviewed by Alex Christensen.

Following the removal of the pre-Network Session code in r227364, NetworkLoad::sharedWillSendRedirectedRequest()
is only referenced from NetworkLoad::willPerformHTTPRedirection(). We should inline its
implementation into the NetworkLoad::willPerformHTTPRedirection(), remove a function call,
and the cognitive load to follow such a function call when reading the code.

No functionality changed. So, no new tests.

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::willPerformHTTPRedirection): Moved the implementation of NetworkLoad::sharedWillSendRedirectedRequest()
into this function.
(WebKit::NetworkLoad::sharedWillSendRedirectedRequest): Deleted. Moved its implementation
into NetworkLoad::willPerformHTTPRedirection().

  • NetworkProcess/NetworkLoad.h:
9:29 AM Changeset in webkit [230634] by Michael Catanzaro
  • 3 edits in trunk/Tools

[WPE] xkbcommon: ERROR: failed to add default include path /home/mcatanzaro/Projects/WebKit/WebKitBuild/DependenciesWPE/Root/share/X11/xkb
https://bugs.webkit.org/show_bug.cgi?id=184388

Reviewed by Carlos Alberto Lopez Perez.

Remove libxkbcommon from the JHBuild environment. We could alternatively add
xkeyboard-config, but there doesn't seem to be any need to build libxkbcommon because I do
not believe it depends on anything else in the JHBuild environment.

  • wpe/install-dependencies:
  • wpe/jhbuild.modules:
9:17 AM Changeset in webkit [230633] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

REGRESSION(r230468): Improper assertion firing under STP
<rdar://problem/39411676>

Unreviewed, rolling out an improper assertion.

I added an assertion in Bug 184322 that should not have been added. I did not notice that this
call stack was always used in builds where NSApp is still active. Builds where we stop relying
on AppKit runloops uses a different code path to shut down.

  • Shared/mac/ChildProcessMac.mm:

(WebKit::ChildProcess::stopNSAppRunLoop):

9:02 AM Changeset in webkit [230632] by graouts@webkit.org
  • 37 edits
    8 deletes in trunk

[Web Animations] Turn CSS Animations and CSS Transitions as Web Animations on by default
https://bugs.webkit.org/show_bug.cgi?id=184569
<rdar://problem/38671301>

Reviewed by Jon Lee.

LayoutTests/imported/w3c:

This test now fails at a later assertion, so updating the expectation for it.

  • web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt:

Source/WebCore:

We now set the CSS Animations and CSS Transitions as Web Animations flag on by default. To ensure that some remaining
tests pass with this flag on, we expose a way to get to a PseudoElement via a new internals.pseudoElement() method. This
allows tests that used internals.pauseAnimationAtTimeOnPseudoElement() and internals.pauseTransitionAtTimeOnPseudoElement()
to now work with the Web Animations API.

  • page/RuntimeEnabledFeatures.h:
  • testing/Internals.cpp:

(WebCore::Internals::pseudoElement):

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

Source/WebKit:

  • Shared/WebPreferences.yaml:

Source/WebKitLegacy/mac:

  • WebView/WebPreferences.mm:

Source/WebKitLegacy/win:

Make sure Web Animations and CSS Animations and CSS Transitions are enabled by default on Windows.

  • WebPreferences.cpp:

Tools:

We set the default value for the CSS Animations and CSS Transitions as Web Animations flag to true
but override it to be false always in the LayoutTests/legacy-animation-engine directory.

  • DumpRenderTree/TestOptions.h:
  • DumpRenderTree/mac/DumpRenderTree.mm:

(shouldOverrideAndDisableCSSAnimationsAndCSSTransitionsBackedByWebAnimationsPreference):
(runTest):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

  • WebKitTestRunner/TestOptions.cpp:

(WTR::isLegacyAnimationEngineTestPath):
(WTR::TestOptions::TestOptions):

  • WebKitTestRunner/TestOptions.h:

LayoutTests:

  • TestExpectations: A small number of tests regressed with the flag on, so we list them and have raised

bugs to fix them ASAP.

  • animations/animation-direction-alternate-reverse-expected.txt:
  • animations/animation-direction-alternate-reverse.html: This test was incorrect since it assumes that at the

end active boundary time we are using the end value whereas we are using the start value. Indeed, since the
fill-mode is "none", at the end of the active time, the progress is null per the Web Animations spec.

  • animations/animation-hit-test-transform.html: Stop using the internals method.
  • animations/animation-internals-api-expected.txt: Removed.
  • animations/animation-internals-api-multiple-keyframes-expected.txt: Removed.
  • animations/animation-internals-api-multiple-keyframes.html: Removed. This test only tests an internals method

that is no longer relevant for the new animation engine, but preserved for compatibility with legacy tests.

  • animations/animation-internals-api.html: Removed. This test only tests an internals method that is no longer

relevant for the new animation engine, but preserved for compatibility with legacy tests.

  • animations/big-rotation-expected.txt:
  • animations/big-rotation.html: Here again we are correcting a test which made the wrong assumption about the

value generated at the end active boundary time.

  • animations/duplicated-keyframes-name.html: We make the animation fill forwards to check that we are using

the correct end value for an animation with multiple 100% keyframe.

  • animations/fill-forwards-end-state.html: Same as previous test.
  • animations/fill-mode-forwards-zero-duration-expected.txt:
  • animations/fill-mode-forwards-zero-duration.html: This test should seek after its delay + duration, so we test

at 3s instead of 1s. This is due to a behavior difference between internals.pauseAnimationAtTimeOnElement() and
its replacement.

  • fast/css-generated-content/pseudo-animation.html: Use internals.pseudoElement() and the Web Animations API rather

than internals.pauseAnimationAtTimeOnPseudoElement().

  • fast/css-generated-content/pseudo-transition.html: Use internals.pseudoElement() and the Web Animations API rather

than internals.pauseTransitionAtTimeOnPseudoElement().

  • platform/ios/TestExpectations:
  • platform/win/TestExpectations: Remove references to tests that we are removing.
  • transitions/remove-transition-style.html: Use document.getAnimations() to figure out how many animations are running.
  • transitions/transition-drt-api-delay-expected.txt: Removed.
  • transitions/transition-drt-api-delay.html: Removed. This test only tests an internals method that is no longer

relevant for the new animation engine, but preserved for compatibility with legacy tests.

  • transitions/transition-drt-api-expected.txt: Removed.
  • transitions/transition-drt-api.html: Removed. This test only tests an internals method that is no longer

relevant for the new animation engine, but preserved for compatibility with legacy tests.

  • transitions/transition-hit-test-transform.html: Stop using internals.pauseTransitionAtTimeOnElement().
  • transitions/zero-duration-with-non-zero-delay-end.html: Use the Web Animations API instead of internals.numberOfActiveAnimations().
9:01 AM WebKitGTK/2.20.x edited by Michael Catanzaro
(diff)
8:57 AM WebKitGTK/2.20.x edited by Michael Catanzaro
(diff)
8:46 AM Changeset in webkit [230631] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark some legacy-animation-engine tests as failures on Windows.
https://bugs.webkit.org/show_bug.cgi?id=184482

Unreviewed test gardening.

  • platform/win/TestExpectations:
8:19 AM Changeset in webkit [230630] by svillar@igalia.com
  • 5 edits in trunk/Source/WebCore

[WebVR][OpenVR] Implement requestPresent()/exitPresent() and getLayers()
https://bugs.webkit.org/show_bug.cgi?id=184530

Reviewed by Žan Doberšek.

WebVR apps should invoke requestPresent() to start presenting contents of a VRLayerInit
(right now a HTML canvas with a WebGL context) on the VRDisplay. This request might fail for
a variety of reasons and can be eventually cancelled with exitPresent(). Once we are
presenting we could access the presenting layers (right now just one) with getLayers().

Note that we are not presenting anything to the HMD yet, that will be done later in a follow
up patch.

I took the chance to correct a mistak in the VRDisplayCapabilities object which has a method
that should be called maxLayers instead of maxLayer.

  • Modules/webvr/VRDisplay.cpp:

(WebCore::VRDisplay::requestPresent):
(WebCore::VRDisplay::stopPresenting):
(WebCore::VRDisplay::exitPresent):
(WebCore::VRDisplay::getLayers const):
(WebCore::VRDisplay::isPresenting const): Deleted. Implemented in the header file.

  • Modules/webvr/VRDisplay.h:

(WebCore::VRDisplay::isPresenting const):

  • Modules/webvr/VRDisplayCapabilities.h:

(WebCore::VRDisplayCapabilities::maxLayers const): Renamed from maxLayer().
(WebCore::VRDisplayCapabilities::maxLayer const): Deleted.

  • Modules/webvr/VRDisplayCapabilities.idl:
6:18 AM Changeset in webkit [230629] by magomez@igalia.com
  • 3 edits in trunk/Source/WebCore

REGRESSION(r230627): [GTK][WPE] Possible deadlock when destroying the player in non AC mode
https://bugs.webkit.org/show_bug.cgi?id=184583

Reviewed by Carlos Garcia Campos.

In non AC mode, ensure that a deadlock can't happen when destroying MediaPlayerPrivateGStreamerBase.

Covered by existent tests.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamerBase::cancelRepaint):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
3:27 AM Changeset in webkit [230628] by Claudio Saavedra
  • 2 edits in trunk/LayoutTests

[GTK][GStreamer] Mark a few crashing tests since playbin3 was made available

Unreviewed gardening

  • platform/gtk/TestExpectations:
3:09 AM Changeset in webkit [230627] by magomez@igalia.com
  • 3 edits in trunk/Source/WebCore

[GTK] [gstreamer] video won't unpause when built with -DUSE_GSTREAMER_GL=OFF
https://bugs.webkit.org/show_bug.cgi?id=183362

Reviewed by Carlos Garcia Campos.

Remove the drawCancelled flag and use a new one to indicate that the player is being destroyed.
That new flag is only enabled on destruction and it's not modified by cancelRepaint(), which
can be used to handle the pause event without avoiding future renderings. Also cancelRepaint()
has only effect when not in AC mode.

Covered by existent tests.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamerBase::cancelRepaint):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
2:05 AM Changeset in webkit [230626] by Yusuke Suzuki
  • 6 edits in trunk/Source/JavaScriptCore

[DFG] Remove duplicate 32bit ProfileType implementation
https://bugs.webkit.org/show_bug.cgi?id=184536

Reviewed by Saam Barati.

This patch removes duplicate 32bit ProfileType implementation by unifying 32/64 implementations.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileProfileType):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::branchIfUndefined):
(JSC::AssemblyHelpers::branchIfNull):

1:50 AM Changeset in webkit [230625] by calvaris@igalia.com
  • 40 edits
    2 moves in trunk/Source

[GStreamer] Convert GStreamerUtilities in GStreamerCommon and include the GStreamer smart pointer traits
https://bugs.webkit.org/show_bug.cgi?id=184533

Reviewed by Philippe Normand.

Renamed GStreamerUtilities* files into GStreamerCommon* and
modified files including them accordingly. Include
GRefPtrGStreamer.h and GUniquePtrGStreamer.h in GStreamerCommon.h
to avoid problems destroying objects when those files are
forgotten to be included.

Source/WebCore:

  • Modules/webaudio/AudioContext.cpp:
  • platform/GStreamer.cmake:
  • platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
  • platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h:
  • platform/graphics/gstreamer/GStreamerCommon.cpp: Renamed from Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp.
  • platform/graphics/gstreamer/GStreamerCommon.h: Renamed from Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.h.
  • platform/graphics/gstreamer/ImageGStreamer.h:
  • platform/graphics/gstreamer/ImageGStreamerCairo.cpp:
  • platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp:
  • platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
  • platform/graphics/gstreamer/MediaSampleGStreamer.cpp:
  • platform/graphics/gstreamer/MediaSampleGStreamer.h:
  • platform/graphics/gstreamer/TextCombinerGStreamer.cpp:
  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:
  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h:
  • platform/graphics/gstreamer/VideoSinkGStreamer.cpp:
  • platform/graphics/gstreamer/VideoTrackPrivateGStreamer.h:
  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
  • platform/graphics/gstreamer/eme/GStreamerEMEUtilities.cpp:
  • platform/graphics/gstreamer/eme/GStreamerEMEUtilities.h:
  • platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:
  • platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:
  • platform/graphics/gstreamer/mse/AppendPipeline.h:
  • platform/graphics/gstreamer/mse/GStreamerMediaDescription.cpp:
  • platform/graphics/gstreamer/mse/GStreamerMediaDescription.h:
  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:
  • platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.h:
  • platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:
  • platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:
  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.h:

Source/WebKit:

  • UIProcess/gtk/WebProcessPoolGtk.cpp:
  • UIProcess/wpe/WebProcessPoolWPE.cpp:
  • WebProcess/soup/WebProcessSoup.cpp:
12:26 AM Changeset in webkit [230624] by Carlos Garcia Campos
  • 3 edits in trunk/Tools

[GLIB] Tests WTF_RefPtr.ReleaseInNonMainThread and WTF_RefPtr.ReleaseInNonMainThreadDestroyInMainThread are crashing since they were added
https://bugs.webkit.org/show_bug.cgi?id=184531

Reviewed by Michael Catanzaro.

It's not a bug in WebKit, but in the tests. The problem is that those tests are using RunLoop::main() but main
run loop hasn't been initialized. ReleaseInNonMainThread doesn't really need to initialize the main run loop if
we change Util::run() to always use RunLop::current() instead of RunLoop::main(). But
ReleaseInNonMainThreadDestroyInMainThread ends up scheduling a task to the main thread, and the generic
implementation fo that uses RunLoop::main(), so we need to initialize the main loop in this case.

  • TestWebKitAPI/Tests/WTF/RefPtr.cpp:

(TestWebKitAPI::TEST): Call RunLoop::initializeMainRunLoop().

  • TestWebKitAPI/glib/UtilitiesGLib.cpp:

(TestWebKitAPI::Util::run): Use RunLop::current() to stop the current run loop.
(TestWebKitAPI::Util::sleep): Ditto.

Apr 12, 2018:

11:52 PM Changeset in webkit [230623] by sbarati@apple.com
  • 2 edits in trunk/Source/bmalloc

Lessen partial scavenge interval on x86-64
https://bugs.webkit.org/show_bug.cgi?id=184577

Rubber-stamped by Filip Pizlo.

I initially made the scavenge interval longer because I had thought the
shorter interval caused a JetStream regression. I was mistaken though.
I was looking at the wrong commit range when analyzing perf data.

This patch shortens the interval, but still keeps x86-64 50% longer than
other architectures. We know that scavenging frequently on Mac is less
important to overall system performance than it is on iOS.

  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::threadRunLoop):

10:27 PM Changeset in webkit [230622] by Alan Bujtas
  • 6 edits
    1 add in trunk/Tools

[LayoutReloaded] Add support for incremental layout
https://bugs.webkit.org/show_bug.cgi?id=184578

Reviewed by Antti Koivisto.

  • LayoutReloaded/Layout.js:

(layout):

  • LayoutReloaded/LayoutState.js:

(LayoutState.prototype.rootContainer):
(LayoutState.prototype.setNeedsLayoutById):

  • LayoutReloaded/Utils.js:

(Utils.layoutTreeDump):

  • LayoutReloaded/test/TestHarness.js:

(verifyLayout):
(runLayout):
(verifyLayoutTreeDump): Deleted.

  • LayoutReloaded/test/index.html:
  • LayoutReloaded/test/simple-incremental-layout-with-static-content.html: Added.
8:09 PM Changeset in webkit [230621] by Alan Bujtas
  • 7 edits in trunk/Tools

[LayoutReloaded] Move root container ownership to layout state
https://bugs.webkit.org/show_bug.cgi?id=184575

Reviewed by Antti Koivisto.

Now the root container is on the associated layout state (ICB only at this point though).

  • LayoutReloaded/FormattingContext/BlockFormatting/BlockFormattingContext.js:

(BlockFormattingContext.prototype.layout):

  • LayoutReloaded/FormattingContext/FormattingContext.js:

(FormattingContext.prototype._layoutOutOfFlowDescendants):

  • LayoutReloaded/FormattingContext/InlineFormatting/InlineFormattingContext.js:

(InlineFormattingContext.prototype._handleInlineBlockContainer):
(InlineFormattingContext.prototype._handleFloatingBox):

  • LayoutReloaded/Layout.js:

(layout):

  • LayoutReloaded/LayoutState.js:

(LayoutState):
(LayoutState.prototype.formattingContext):
(LayoutState.prototype.establishedFormattingState):
(LayoutState.prototype.formattingStateForBox):
(LayoutState.prototype.needsLayout):
(LayoutState.prototype.displayBox):
(LayoutState.prototype._formattingContext):
(LayoutState.prototype.layout): Deleted.
(LayoutState.prototype.formattingStates): Deleted.
(LayoutState.prototype.initialDisplayBox): Deleted.

  • LayoutReloaded/Utils.js:

(Utils._dumpBox):
(Utils._findDisplayBox): Deleted.

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

[Curl] Fix clang build error in CurlContext.cpp
https://bugs.webkit.org/show_bug.cgi?id=184561

Patch by Christopher Reid <chris.reid@sony.com> on 2018-04-12
Reviewed by Darin Adler.

MSVC allows explicit template specialization in classes but gcc/clang do not.

  • platform/network/curl/CurlContext.cpp:
6:27 PM Changeset in webkit [230619] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[Curl] Cookie Database on memory path should be :memory:
https://bugs.webkit.org/show_bug.cgi?id=184572

Patch by Christopher Reid <chris.reid@sony.com> on 2018-04-12
Reviewed by Alex Christensen.

CookieJarDB::isOnMemory is comparing the database path with :onmemory: but it should be using :memory:
For reference, see: https://www.sqlite.org/inmemorydb.html

  • platform/network/curl/CookieJarDB.h:
6:09 PM Changeset in webkit [230618] by Nikita Vasilyev
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Refactoring: move popover styles from JS to CSS
https://bugs.webkit.org/show_bug.cgi?id=184558

Reviewed by Brian Burg.

Introduce several CSS variables to customize popover appearance in CSS
and not JavaScript.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
(WI.NetworkTableContentView.prototype._handleMousedownWaterfall):

  • UserInterface/Views/Popover.css:

(.popover):

  • UserInterface/Views/Popover.js:

(WI.Popover):
(WI.Popover.prototype._drawBackground):
Replace var with let.

(WI.Popover.prototype.get backgroundStyle): Deleted.
(WI.Popover.prototype.set backgroundStyle): Deleted.

  • UserInterface/Views/ResourceTimingBreakdownView.css:

(.popover.waterfall-popover):
(.waterfall-popover-content .resource-timing-breakdown):
(.waterfall-popover .resource-timing-breakdown): Deleted.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
(WI.NetworkTableContentView.prototype._handleMousedownWaterfall):

  • UserInterface/Views/Popover.css:

(.popover):

  • UserInterface/Views/Popover.js:

(WI.Popover):
(WI.Popover.prototype._drawBackground):

  • UserInterface/Views/ResourceTimingBreakdownView.css:

(.popover.waterfall-popover):
(.waterfall-popover-content .resource-timing-breakdown):

5:33 PM Changeset in webkit [230617] by Kocsen Chung
  • 4 edits in tags/Safari-606.1.13/Source

Revert r230521. rdar://problem/39399564

5:11 PM Changeset in webkit [230616] by dbates@webkit.org
  • 2 edits in trunk/Source/WebCore

Attmept to fix the Windows build following <https://trac.webkit.org/changeset/230602/>
(https://bugs.webkit.org/show_bug.cgi?id=184386)

Visual Studio cannot prove that all cases in the switch are covered :(
So, add an ASSERT_NOT_REACHED() and a return a value outside of the switch block.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::destinationForType):

5:02 PM Changeset in webkit [230615] by Kocsen Chung
  • 2 edits in tags/Safari-606.1.13/Source/WebKit

Cherry-pick r230609. rdar://problem/39398181

Fix the MOBILE_WIFI build
https://bugs.webkit.org/show_bug.cgi?id=184571
-and corresponding-
<rdar://problem/39398181>

Reviewed by Jer Noble.

  • config.h:

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

5:02 PM Changeset in webkit [230614] by Kocsen Chung
  • 2 edits in tags/Safari-606.1.13/Source/WebKit

Cherry-pick r230606. rdar://problem/39386359

Use -iframework to ensure that frameworks from user paths and system paths are
ordered appropriately
https://bugs.webkit.org/show_bug.cgi?id=184557
-and corresponding-
rdar://problem/39386359

Reviewed by Dean Jackson.

  • Configurations/WebKit.xcconfig:

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

4:55 PM Changeset in webkit [230613] by Chris Dumez
  • 8 edits
    10 adds in trunk/Source/WebCore

Introduce remote variants of Frame / DOMWindow classes
https://bugs.webkit.org/show_bug.cgi?id=184467
<rdar://problem/39011267>

Reviewed by Ryosuke Niwa.

Introduce remote variants of Frame / DOMWindow classes, for when these frames / windows
are hosted on another WebProcess. Those will be used in a follow-up patch.

The hierarchy is as follows (class naming will be improved in a follow-up patch to minimise
patch size):

  • AbstractFrame: A frame that can be either local or remote (hosted on another WebProcess)
    • Frame: A local frame
    • RemoteFrame: A frame hosted on another WebProcess. A RemoteFrame's window is also remote.
  • AbstractDOMWindow: A window that be either local or remote (hosted on another WebProcess)
    • DOMWindow: A local DOMWindow
    • RemoteDOMWindow: A window hosted on another WebProcess. A RemoteDOMWindow's frame is also remote. A RemoteDOMWindow is always cross-origin.

This patch introduces global identifiers (unique across all WebProcesses) for both Frames and
Windows. This is useful as we need to know which Frame / DOMWindow a particular RemoteFrame /
RemoteDOMWindow is pointing to.

Follow-up patch will add support for converting a local DOMWindow / Frame into a remote ones,
when a newly opened window (via window.open) is navigated cross-origin (Bug 184515).

Other things we'll need to implement in follow-ups:

  • RemoteDOMWindow will need to know about its opener in order to support the window.opener API. Internally, the opener will be stored as a RemoteFrame so that window.opener always returns the current window in the opener frame (which changes upon navigation).
  • Nullify a RemoteDOMWindow's frame whenever the window it is pointing to becomes frameless. A frameless window behaves very differently (e.g. very little API is exposed to the Web). This happens when either the newly opened window is either closed or navigated.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • loader/ContentFilter.cpp:

(WebCore::ContentFilter::didDecide):

  • page/AbstractDOMWindow.cpp: Added.

(WebCore::AbstractDOMWindow::AbstractDOMWindow):
(WebCore::AbstractDOMWindow::~AbstractDOMWindow):

  • page/AbstractDOMWindow.h: Added.

(WebCore::AbstractDOMWindow::identifier const):

  • page/AbstractFrame.cpp: Added.

(WebCore::AbstractFrame::AbstractFrame):
(WebCore::AbstractFrame::~AbstractFrame):

  • page/AbstractFrame.h: Added.

(WebCore::AbstractFrame::window const):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::DOMWindow):

  • page/DOMWindow.h:

(isType):

  • page/Frame.cpp:

(WebCore::Frame::window const):
(WebCore::Frame::virtualWindow const):

  • page/Frame.h:

(isType):

  • page/GlobalFrameIdentifier.h: Added.

(WebCore::GlobalFrameIdentifier::encode const):
(WebCore::GlobalFrameIdentifier::decode):

  • page/GlobalWindowIdentifier.h: Added.

(WebCore::operator==):
(WebCore::GlobalWindowIdentifier::hash const):
(WebCore::GlobalWindowIdentifier::encode const):
(WebCore::GlobalWindowIdentifier::decode):
(WTF::GlobalWindowIdentifierHash::hash):
(WTF::GlobalWindowIdentifierHash::equal):
(WTF::HashTraits<WebCore::GlobalWindowIdentifier>::emptyValue):
(WTF::HashTraits<WebCore::GlobalWindowIdentifier>::constructDeletedValue):
(WTF::HashTraits<WebCore::GlobalWindowIdentifier>::isDeletedValue):

  • page/RemoteDOMWindow.cpp: Added.

(WebCore::RemoteDOMWindow::RemoteDOMWindow):
(WebCore::RemoteDOMWindow::~RemoteDOMWindow):
(WebCore::RemoteDOMWindow::self const):
(WebCore::RemoteDOMWindow::location const):
(WebCore::RemoteDOMWindow::close):
(WebCore::RemoteDOMWindow::closed const):
(WebCore::RemoteDOMWindow::focus):
(WebCore::RemoteDOMWindow::blur):
(WebCore::RemoteDOMWindow::length const):
(WebCore::RemoteDOMWindow::top const):
(WebCore::RemoteDOMWindow::opener const):
(WebCore::RemoteDOMWindow::parent const):
(WebCore::RemoteDOMWindow::postMessage):
The DOM API exposed on RemoteDOMWindow is only the subset of the DOMWindow API that is exposed cross origin,
since remote DOMWindow are always from a different origin. The short-term plan is to implement these in a
follow-up by relying on IPC (synchronous when necessary) to fetch the information from the real window in
the WebProcess where it lives. Longer term, we should probably keep RemoteDOMWindow members in sync with the
DOMWindow they're pointing to, so we do not have to rely on synchronous IPC.

  • page/RemoteDOMWindow.h: Added.

(isType):

  • page/RemoteFrame.cpp: Added.

(WebCore::RemoteFrame::RemoteFrame):
(WebCore::RemoteFrame::~RemoteFrame):
(WebCore::RemoteFrame::virtualWindow const):

  • page/RemoteFrame.h: Added.

(isType):

4:41 PM Changeset in webkit [230612] by Keith Rollin
  • 2 edits in trunk/LayoutTests

[mac-wk2] LayoutTest http/tests/security/anchor-download-allow-data.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=161745
<rdar://problem/39391176>

Unreviewed test gardening. Re-enable this test now that it is
consistently passing.

  • platform/mac-wk2/TestExpectations:
4:40 PM Changeset in webkit [230611] by Keith Rollin
  • 2 edits in trunk/LayoutTests

REGRESSION: [mac-wk2 release] LayoutTest http/tests/security/cross-origin-plugin-allowed.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=161539
<rdar://problem/39389781>

Unreviewed test gardening. Re-enabled this test. It passes in local
testing and the flakiness dashboard doesn't show any problems with it.

  • platform/mac-wk2/TestExpectations:
4:38 PM Changeset in webkit [230610] by Keith Rollin
  • 2 edits in trunk/LayoutTests

Address possible "CFNetwork SSLHandshake failed (-9847)" test failure.
https://bugs.webkit.org/show_bug.cgi?id=184487

Unreviewed test gardening. Mark
upgrade-redirect-https-to-http-script-in-iframe.html as no longer
flaky.

  • platform/mac/TestExpectations:
4:33 PM Changeset in webkit [230609] by Beth Dakin
  • 2 edits in trunk/Source/WebKit

Fix the MOBILE_WIFI build
https://bugs.webkit.org/show_bug.cgi?id=184571
-and corresponding-
<rdar://problem/39398181>

Reviewed by Jer Noble.

  • config.h:
4:27 PM Changeset in webkit [230608] by Kocsen Chung
  • 5 edits
    1 add in branches/safari-605.1.33.1-branch

Cherry-pick r230101. rdar://problem/39371537

Out-of-bounds accesses due to a missing check for MAX_STORAGE_VECTOR_LENGTH in unshiftCountForAnyIndexingType
https://bugs.webkit.org/show_bug.cgi?id=183657
JSTests:

Reviewed by Keith Miller.

  • stress/large-unshift-splice.js: Added. (make_contig_arr):

Source/JavaScriptCore:

<rdar://problem/38464399>

Reviewed by Keith Miller.

There was just a missing check in unshiftCountForIndexingType.
I've also replaced 'return false' by 'return true' in the case of an 'out-of-memory' exception, because 'return false' means 'please continue to the slow path',
and the slow path has an assert that there is no unhandled exception (line 360 of ArrayPrototype.cpp).
Finally, I made the assert in ensureLength a release assert as it would have caught this bug and prevented it from being a security risk.

  • runtime/ArrayPrototype.cpp: (JSC::unshift):
  • runtime/JSArray.cpp: (JSC::JSArray::unshiftCountWithAnyIndexingType):
  • runtime/JSObject.h: (JSC::JSObject::ensureLength):

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

4:27 PM Changeset in webkit [230607] by Kocsen Chung
  • 3 edits
    2 adds in branches/safari-605.1.33.1-branch

Cherry-pick r229505. rdar://problem/39371567

Turn off offset*/scroll* optimization for input elements with shadow content
https://bugs.webkit.org/show_bug.cgi?id=182383
<rdar://problem/37114190>

Reviewed by Antti Koivisto.

Source/WebCore:

We normally ensure clean tree before calling offsetHeight/Width, scrollHeight/Width.
In certain cases (see updateLayoutIfDimensionsOutOfDate() for details), it's okay to return
the previously computed values even when some part of the tree is dirty.
In case of shadow content, updateLayoutIfDimensionsOutOfDate() might return false (no need to layout)
for the root, while true (needs layout) for the shadow content.
This could confuse the caller (Element::scrollWidth/Height etc) and lead to incorrect result.

Test: fast/forms/scrollheight-with-mutation-crash.html

  • dom/Document.cpp: (WebCore::Document::updateLayoutIfDimensionsOutOfDate):

LayoutTests:

  • fast/forms/scrollheight-with-mutation-crash-expected.txt: Added.
  • fast/forms/scrollheight-with-mutation-crash.html: Added.

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

4:24 PM Changeset in webkit [230606] by Beth Dakin
  • 2 edits in trunk/Source/WebKit

Use -iframework to ensure that frameworks from user paths and system paths are
ordered appropriately
https://bugs.webkit.org/show_bug.cgi?id=184557
-and corresponding-
rdar://problem/39386359

Reviewed by Dean Jackson.

  • Configurations/WebKit.xcconfig:
4:21 PM Changeset in webkit [230605] by Kocsen Chung
  • 5 edits
    1 add in branches/safari-605.1.33.0-branch

Cherry-pick r230101. rdar://problem/39355291

Out-of-bounds accesses due to a missing check for MAX_STORAGE_VECTOR_LENGTH in unshiftCountForAnyIndexingType
https://bugs.webkit.org/show_bug.cgi?id=183657
JSTests:

Reviewed by Keith Miller.

  • stress/large-unshift-splice.js: Added. (make_contig_arr):

Source/JavaScriptCore:

<rdar://problem/38464399>

Reviewed by Keith Miller.

There was just a missing check in unshiftCountForIndexingType.
I've also replaced 'return false' by 'return true' in the case of an 'out-of-memory' exception, because 'return false' means 'please continue to the slow path',
and the slow path has an assert that there is no unhandled exception (line 360 of ArrayPrototype.cpp).
Finally, I made the assert in ensureLength a release assert as it would have caught this bug and prevented it from being a security risk.

  • runtime/ArrayPrototype.cpp: (JSC::unshift):
  • runtime/JSArray.cpp: (JSC::JSArray::unshiftCountWithAnyIndexingType):
  • runtime/JSObject.h: (JSC::JSObject::ensureLength):

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

4:21 PM Changeset in webkit [230604] by Kocsen Chung
  • 3 edits
    2 adds in branches/safari-605.1.33.0-branch

Cherry-pick r229505. rdar://problem/39355225

Turn off offset*/scroll* optimization for input elements with shadow content
https://bugs.webkit.org/show_bug.cgi?id=182383
<rdar://problem/37114190>

Reviewed by Antti Koivisto.

Source/WebCore:

We normally ensure clean tree before calling offsetHeight/Width, scrollHeight/Width.
In certain cases (see updateLayoutIfDimensionsOutOfDate() for details), it's okay to return
the previously computed values even when some part of the tree is dirty.
In case of shadow content, updateLayoutIfDimensionsOutOfDate() might return false (no need to layout)
for the root, while true (needs layout) for the shadow content.
This could confuse the caller (Element::scrollWidth/Height etc) and lead to incorrect result.

Test: fast/forms/scrollheight-with-mutation-crash.html

  • dom/Document.cpp: (WebCore::Document::updateLayoutIfDimensionsOutOfDate):

LayoutTests:

  • fast/forms/scrollheight-with-mutation-crash-expected.txt: Added.
  • fast/forms/scrollheight-with-mutation-crash.html: Added.

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

4:19 PM Changeset in webkit [230603] by Kocsen Chung
  • 2 edits in tags/Safari-606.1.13/Source/WebKit

Revert r230359. rdar://problem/39396724

3:32 PM Changeset in webkit [230602] by dbates@webkit.org
  • 23 edits
    8 adds in trunk

Content-Type not enforced for <script> allows for XSS
https://bugs.webkit.org/show_bug.cgi?id=184386
<rdar://problem/39112268>

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

Update expected result now that we pass all sub tests.

  • web-platform-tests/fetch/api/basic/block-mime-as-script-expected.txt:

Source/WebCore:

As per the Fetch standard, <https://fetch.spec.whatwg.org/#should-response-to-request-be-blocked-due-to-mime-type?> (16 March 2018),
we should block JavaScript scripts that are served with MIME type text/csv, or a MIME type
that begins with "audio/", "image/" or "video/".

As a side benefit of this change we now set the destination property [1] on preload requests.

[1] <https://fetch.spec.whatwg.org/#concept-request-destination>

Tests: http/tests/security/script-with-banned-mimetype.html

http/tests/workers/worker-importScripts-banned-mimetype.html

  • Sources.txt: Add file FetchIdioms.cpp.
  • WebCore.xcodeproj/project.pbxproj: Add files FetchIdioms.{cpp, h}.
  • dom/LoadableClassicScript.cpp:

(WebCore::LoadableClassicScript::notifyFinished): Check the MIME type of the response and
block the script if applicable.

  • dom/LoadableScript.h: Add error type MIMEType.
  • loader/FetchIdioms.cpp: Added.

(WebCore::shouldBlockResponseDueToMIMEType): Implements the "Should response to request be blocked
due to its MIME type?" algorithm from the Fetch standard.

  • loader/FetchIdioms.h: Added.
  • loader/FetchOptions.h:

(WebCore::isScriptLikeDestination): Implements the definition of "script like" as per <https://fetch.spec.whatwg.org/#request-destination-script-like>.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestImage): Removed logic to set the destination property as
CachedResourceLoader::requestResource() is now responsible for doing this.
(WebCore::CachedResourceLoader::requestFont): Ditto.
(WebCore::CachedResourceLoader::requestTextTrack): Ditto.
(WebCore::CachedResourceLoader::requestCSSStyleSheet): Ditto.
(WebCore::CachedResourceLoader::requestScript): Ditto.
(WebCore::CachedResourceLoader::requestXSLStyleSheet): Ditto.
(WebCore::CachedResourceLoader::requestMedia): Update comment to express that we should assert
that the destination property is either video or audio.
(WebCore::CachedResourceLoader::requestIcon): Remove logic to set the destination property as
CachedResourceLoader::requestResource() is now responsible for doing this.
(WebCore::CachedResourceLoader::requestRawResource): Removed assertion as this function is used to
load many kinds of requests that have different destination properties. The caller is responsible
for setting the appropriate destintion property.
(WebCore::CachedResourceLoader::requestMainResource): Remove logic to set the destination property
as CachedResourceLoader::requestResource() is now responsible for doing this.
(WebCore::destinationForType): Helper function that maps CachedResource::Type to FetchOptions::Destination.
(WebCore::CachedResourceLoader::requestResource): Set the destination property on the request if not
already set.

  • loader/cache/CachedResourceLoader.h: Segregate requestRawResource() from the other request functions

and add a comment to explain what it is used for.

  • workers/Worker.cpp:

(WebCore::Worker::create):

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadSynchronously): Set the destination property to FetchOptions::Destination::Script
and store it in an instance variable as we will need to reference it once we receive the HTTP response.
Note that this function is only used to support the Web API importScripts().
(WebCore::WorkerScriptLoader::loadAsynchronously): Store the passed destination property in an
instance as we will need to reference it once we receive the HTTP response.
(WebCore::WorkerScriptLoader::didReceiveResponse): Check the MIME type of the response and
block the script if applicable.

  • workers/WorkerScriptLoader.h:
  • workers/service/ServiceWorkerJob.cpp:

(WebCore::ServiceWorkerJob::fetchScriptWithContext): Set the destination property to FetchOptions::Destination::Serviceworker.

LayoutTests:

Add tests to ensure that we block JavaScript scripts with a banned MIME type and update expected results.

Update tests http/tests/security/{cross-origin-cached-scripts, cross-origin-cached-scripts-parallel}.html
to load JavaScript scripts with MIME type text/javascript. These tests load JavaScript scripts indirectly
via the helper script LayoutTests/http/tests/security/resources/allow-if-origin.php. The script
allow-if-origin.php returns a response with MIME type image/png in absence of query string argument
contentType. We need to update these tests to pass contentType=text/javascript to allow-if-origin.php.

  • TestExpectations: Mark test web-platform-tests/fetch/api/basic/block-mime-as-script.html DumpJSConsoleLogInStdErr

to ignore console message output when comparing the actual and expected result because the order the
sub tests are run is non-deterministic and the blocked MIME error message is specific to the blocked
response.

  • http/tests/security/contentTypeOptions/invalid-content-type-options-allowed-expected.txt:
  • http/tests/security/contentTypeOptions/invalid-content-type-options-allowed.html:
  • http/tests/security/contentTypeOptions/resources/script-with-header.pl: Modified to only

set the HTTP header X-Content-Type-Options if the query argument no-content-type-options it
not present or evaluates to false in a boolean context. This lets us make use of this script
to test banned JavaScript MIME types.

  • http/tests/security/cross-origin-cached-scripts-expected.txt:
  • http/tests/security/cross-origin-cached-scripts-parallel-expected.txt:
  • http/tests/security/cross-origin-cached-scripts-parallel.html:
  • http/tests/security/cross-origin-cached-scripts.html:
  • http/tests/security/resources/abe-that-increments-scriptsSuccessfullyLoaded.jpg: Added.

This file is both a valid JPEG image and a valid JavaScript script. When interpreted as a JavaScript
script it will increment the global variable self.scriptsSuccessfullyLoaded (defining it if
not already defined).

  • http/tests/security/script-with-banned-mimetype-expected.txt: Added.
  • http/tests/security/script-with-banned-mimetype.html: Added.
  • http/tests/workers/resources/worker-importScripts-banned-mimetype.php: Added.
  • http/tests/workers/worker-importScripts-banned-mimetype-expected.txt: Added.
  • http/tests/workers/worker-importScripts-banned-mimetype.html: Added.
3:03 PM Changeset in webkit [230601] by Jonathan Bedard
  • 3 edits in trunk/Tools

Fix --build-directory flag for run-webkit-tests
https://bugs.webkit.org/show_bug.cgi?id=184545
<rdar://problem/39385080>

Rubber-stamped by Aakash Jain.

The --build-directory path does not work with iOS-Simulator.

  • Scripts/webkitpy/port/base.py:

(Port._build_path): Use the port configuration to calculate the root directory.

  • Scripts/webkitpy/port/base_unittest.py:

(PortTest.test_build_path): Test build directories for embedded configurations.

2:58 PM Changeset in webkit [230600] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[Extra zoom mode] Suppress UI for inputs of type file in extra zoom mode
https://bugs.webkit.org/show_bug.cgi?id=184556
<rdar://problem/39062239>

Reviewed by Andy Estes.

When running in this mode, we don't have the facilities to present document picker UI. For now, just make this
feature fail gracefully.

  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(-[WKFileUploadPanel presentWithParameters:resultListener:]):
(-[WKFileUploadPanel platformSupportsPickerViewController]):

2:39 PM Changeset in webkit [230599] by Kocsen Chung
  • 1 copy in tags/Safari-605.2.4

Tag Safari-605.2.4.

2:37 PM Changeset in webkit [230598] by Kocsen Chung
  • 1 edit in tags/Safari-606.1.13/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h

Cherry-pick r230575. rdar://problem/39025726

Try again to fix the build after r230560.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:

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

2:37 PM Changeset in webkit [230597] by Kocsen Chung
  • 1 edit in tags/Safari-606.1.13/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm

Cherry-pick r230571. rdar://problem/39025726

Fix the build after r230560.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):

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

2:37 PM Changeset in webkit [230596] by Kocsen Chung
  • 8 edits
    3 copies in tags/Safari-606.1.13/Source/WebKit

Cherry-pick r230560. rdar://problem/39025726

[iOS] Add a mechanism for holding Wi-Fi assertions
https://bugs.webkit.org/show_bug.cgi?id=184520
<rdar://problem/39025726>

Reviewed by Sam Weinig.

Add plumbing for holding a Wi-Fi assertion on iOS as long as there are active
network data tasks. This functionality is turned off by default right now.

  • Configurations/Network-iOS.entitlements:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
  • NetworkProcess/cocoa/WiFiAssertionHolder.cpp: Added. (WebKit::ensureWiFiManagerClient): Create a global WiFiManagerClient when needed. (WebKit::WiFiAssertionHolder::WiFiAssertionHolder): If this is the first active Wi-Fi assertion holder, set the client's type to kWiFiClientTypeBackground. (WebKit::WiFiAssertionHolder::~WiFiAssertionHolder): If the last active Wi-Fi assertion holder is being destroyed, set the client's type back to kWiFiClientTypeNormal.
  • NetworkProcess/cocoa/WiFiAssertionHolder.h: Added.
  • Platform/Logging.h: Added a logging channel for Wi-Fi assertions.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
  • WebKit.xcodeproj/project.pbxproj:

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

2:25 PM Changeset in webkit [230595] by graouts@webkit.org
  • 32 edits in trunk

[Web Animations] Fix a host of small CSS Animations and CSS Transitions issues
https://bugs.webkit.org/show_bug.cgi?id=184555

Reviewed by Dean Jackson.

Source/WebCore:

A series of small and intertwined issues were preventing a number of CSS Animations and CSS Trantions
tests to fail when expressed as Web Animations.

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::updateCSSAnimationsForElement): Pass the old and new RenderStyles to CSSAnimation::create()
since we're refactoring DeclarativeAnimation to create blending keyframes in initialize(), no longer requiring each subclass
to create them.
(WebCore::AnimationTimeline::cssAnimationForElementAndProperty): Return the animation, if any, for a property animated by
a CSS animation, so that we can determine if a property is already being animated when running a CSS Transition.
(WebCore::AnimationTimeline::updateCSSTransitionsForElement): Since a property can be specified twice in a "transition" property,
once via "all" and once explicitly, ensure we look at all currently running transitions for the currently-processed property to
see if we need to cancel this transition. Previously, we used to only see if it had been transitioned in the old style. We also
start transitions even if the duration is 0 provided the delay is a positive, non-zero value. Then, if there is a CSS Animation
for this property already running, use that animation's original unanimated style as the from value.

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

(WebCore::CSSAnimation::create): The animation name is now set in the CSSAnimation constructor.
(WebCore::CSSAnimation::CSSAnimation): Set the animation name and keep a copy of the unanimated style such that we can
get it when a CSS Transition is created and takes precedence over this CSS Animation.
(WebCore::CSSAnimation::initialize): Deleted.

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

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

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

(WebCore::DeclarativeAnimation::initialize): Call the new computeDeclarativeAnimationBlendingKeyframes() on the KeyframeEffect
directly in this method so that subclasses don't need to create it manually, but most important so that keyframes are created
before timing properties are set based on the backing animation.

  • animation/DeclarativeAnimation.h:
  • animation/KeyframeEffectReadOnly.cpp:

(WebCore::KeyframeEffectReadOnly::getKeyframes): Ensure we have a CSSValue before trying to serialize it.
(WebCore::KeyframeEffectReadOnly::computeDeclarativeAnimationBlendingKeyframes):
(WebCore::KeyframeEffectReadOnly::computeCSSAnimationBlendingKeyframes): Use the animation's unanimated style to compute keyframes,
instead of a default RenderStyle which would not use the right values for implicit keyframes.
(WebCore::KeyframeEffectReadOnly::stylesWouldYieldNewCSSTransitionsBlendingKeyframes const): Look at the property used to create
the transition rather than that specified on the backing Animation object since it can be CSSPropertyInvalid in the case of
"transition: all".
(WebCore::KeyframeEffectReadOnly::setAnimatedPropertiesInStyle): If we're dealing with a CSS animation, we consider the first and
last keyframes to always have the property listed since the underlying style was provided and should be captured.

  • animation/KeyframeEffectReadOnly.h:
  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::createAnimatedElementUpdate): Apply CSS Animations after CSS Trasitions since they take precedence.

LayoutTests:

Mark more tests as passing when the CSS Animations and CSS Transitions as Web Animations flag is on.

  • animations/animation-border-overflow.html:
  • animations/lineheight-animation.html:
  • animations/missing-from-to-transforms.html:
  • animations/missing-values-first-keyframe.html:
  • animations/missing-values-last-keyframe.html:
  • animations/transition-and-animation-1.html:
  • animations/transition-and-animation-2.html:
  • animations/transition-and-animation-3.html:
  • animations/width-using-ems.html:
  • compositing/layer-creation/mismatched-rotated-transform-animation-overlap.html:
  • compositing/layer-creation/multiple-keyframes-animation-overlap.html:
  • compositing/layer-creation/scale-rotation-animation-overlap.html:
  • compositing/layer-creation/translate-scale-animation-overlap.html:
  • css3/filters/filter-animation-from-none-hw.html:
  • css3/filters/filter-animation-from-none-multi-hw.html:
  • css3/filters/filter-animation-from-none-multi.html:
  • css3/filters/filter-animation-from-none.html:
  • imported/blink/transitions/unprefixed-transform.html:
  • transitions/interrupted-all-transition.html:
2:23 PM Changeset in webkit [230594] by graouts@webkit.org
  • 10 edits in trunk

[Web Animations] Only cancel declarative animations upon element removal
https://bugs.webkit.org/show_bug.cgi?id=184553

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Make some WPT tests opt into the CSS Animations and CSS Transtions as Web Animations flag.

  • web-platform-tests/web-animations/interfaces/Animation/ready.html:
  • web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html:
  • web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html:

Source/WebCore:

Ensure we only call cancel() on CSSAnimation and CSSTransition objects as we might otherwise reject
the ready promise and produce spurious logging from WPT tests.

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::cancelDeclarativeAnimationsForElement):
(WebCore::AnimationTimeline::cancelAnimationsForElement): Deleted.

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

(WebCore::Element::removedFromAncestor):

  • dom/PseudoElement.cpp:

(WebCore::PseudoElement::clearHostElement):

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::tearDownRenderers):

1:48 PM Changeset in webkit [230593] by Ross Kirsling
  • 3 edits in trunk/Tools

pemfile.py should not assume POSIX line endings
https://bugs.webkit.org/show_bug.cgi?id=184507

Reviewed by Daniel Bates.

  • Scripts/webkitpy/common/system/pemfile.py:

(_parse_pem_format):

  • Scripts/webkitpy/common/system/pemfile_unittest.py:

(PemFileTest.test_parse_crlf):
(PemFileTest.test_parse_cr):

1:14 PM Changeset in webkit [230592] by mark.lam@apple.com
  • 51 edits in trunk/Source/JavaScriptCore

Consolidate some PtrTags.
https://bugs.webkit.org/show_bug.cgi?id=184552
<rdar://problem/39389404>

Reviewed by Filip Pizlo.

Consolidate CodeEntryPtrTag and CodeEntryWithArityCheckPtrTag into CodePtrTag.
Consolidate NearCallPtrTag and NearJumpPtrTag into NearCodePtrTag.

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::repatchNearCall):

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::readCallTarget):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::readCallTarget):

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::readCallTarget):

  • assembler/MacroAssemblerX86.h:

(JSC::MacroAssemblerX86::readCallTarget):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::readCallTarget):

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateImpl):

  • bytecode/InlineAccess.cpp:

(JSC::InlineAccess::rewireStubAsJump):

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::regenerate):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::linkOSRExits):
(JSC::DFG::JITCompiler::link):
(JSC::DFG::JITCompiler::compileFunction):

  • dfg/DFGJITFinalizer.cpp:

(JSC::DFG::JITFinalizer::finalize):
(JSC::DFG::JITFinalizer::finalizeFunction):

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareOSREntry):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::executeOSRExit):
(JSC::DFG::adjustAndJumpToTarget):
(JSC::DFG::OSRExit::compileOSRExit):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::adjustAndJumpToTarget):

  • dfg/DFGOperations.cpp:
  • ftl/FTLJITCode.cpp:

(JSC::FTL::JITCode::executableAddressAtOffset):

  • ftl/FTLJITFinalizer.cpp:

(JSC::FTL::JITFinalizer::finalizeCommon):

  • ftl/FTLLazySlowPath.cpp:

(JSC::FTL::LazySlowPath::generate):

  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileDirectCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileTailCall):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToB3::lazySlowPath):

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileFTLOSRExit):

  • ftl/FTLOSRExitHandle.cpp:

(JSC::FTL::OSRExitHandle::emitExitThunk):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitDumbVirtualCall):

  • jit/JIT.cpp:

(JSC::JIT::compileWithoutLinking):
(JSC::JIT::link):

  • jit/JITCall.cpp:

(JSC::JIT::compileOpCallSlowCase):

  • jit/JITCode.cpp:

(JSC::JITCodeWithCodeRef::executableAddressAtOffset):
(JSC::NativeJITCode::addressForCall):

  • jit/JITInlines.h:

(JSC::JIT::emitNakedCall):
(JSC::JIT::emitNakedTailCall):

  • jit/JITMathIC.h:

(JSC::isProfileEmpty):

  • jit/JITOpcodes.cpp:

(JSC::JIT::privateCompileHasIndexedProperty):

  • jit/JITOperations.cpp:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::stringGetByValStubGenerator):
(JSC::JIT::privateCompileGetByVal):
(JSC::JIT::privateCompileGetByValWithCachedId):
(JSC::JIT::privateCompilePutByVal):
(JSC::JIT::privateCompilePutByValWithCachedId):

  • jit/JITThunks.cpp:

(JSC::JITThunks::hostFunctionStub):

  • jit/Repatch.cpp:

(JSC::linkSlowFor):
(JSC::linkFor):
(JSC::linkPolymorphicCall):

  • jit/SpecializedThunkJIT.h:

(JSC::SpecializedThunkJIT::finalize):

  • jit/ThunkGenerators.cpp:

(JSC::virtualThunkFor):
(JSC::nativeForGenerator):
(JSC::boundThisNoArgsFunctionCallGenerator):

  • llint/LLIntData.cpp:

(JSC::LLInt::initialize):

  • llint/LLIntEntrypoint.cpp:

(JSC::LLInt::setEvalEntrypoint):
(JSC::LLInt::setProgramEntrypoint):
(JSC::LLInt::setModuleProgramEntrypoint):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::setUpCall):

  • llint/LLIntThunks.cpp:

(JSC::LLInt::generateThunkWithJumpTo):
(JSC::LLInt::functionForCallEntryThunkGenerator):
(JSC::LLInt::functionForConstructEntryThunkGenerator):
(JSC::LLInt::functionForCallArityCheckThunkGenerator):
(JSC::LLInt::functionForConstructArityCheckThunkGenerator):
(JSC::LLInt::evalEntryThunkGenerator):
(JSC::LLInt::programEntryThunkGenerator):
(JSC::LLInt::moduleProgramEntryThunkGenerator):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/NativeExecutable.cpp:

(JSC::NativeExecutable::finishCreation):

  • runtime/NativeFunction.h:

(JSC::TaggedNativeFunction::TaggedNativeFunction):
(JSC::TaggedNativeFunction::operator NativeFunction):

  • runtime/PtrTag.h:
  • wasm/WasmBBQPlan.cpp:

(JSC::Wasm::BBQPlan::complete):

  • wasm/WasmOMGPlan.cpp:

(JSC::Wasm::OMGPlan::work):

  • wasm/WasmThunks.cpp:

(JSC::Wasm::throwExceptionFromWasmThunkGenerator):
(JSC::Wasm::throwStackOverflowFromWasmThunkGenerator):
(JSC::Wasm::triggerOMGTierUpThunkGenerator):

  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::wasmToJS):

  • wasm/js/WebAssemblyFunction.h:
  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::compile):

12:57 PM Changeset in webkit [230591] by Megan Gardner
  • 13 edits in trunk/Source/WebKit

Remove block selection code
https://bugs.webkit.org/show_bug.cgi?id=184470

Reviewed by Timothy Hatcher.

Remove block selection code that isn't run and is currently not even used.
Had to put this back in for a bug in the mid-year release, but we're past that
so it's time for this to go away.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::stopAssistingNode):
(WebKit::PageClientImpl::didUpdateBlockSelectionWithTouch): Deleted.

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

(toSelectionHandlePosition): Deleted.
(-[WKContentView _didUpdateBlockSelectionWithTouch:withFlags:growThreshold:shrinkThreshold:]): Deleted.
(-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:]): Deleted.
(-[WKContentView changeBlockSelectionWithTouchAt:withSelectionTouch:forHandle:]): Deleted.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::saveImageToLibrary):
(WebKit::WebPageProxy::updateBlockSelectionWithTouch): Deleted.
(WebKit::WebPageProxy::didUpdateBlockSelectionWithTouch): Deleted.

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

(WebKit::rangeAtWordBoundaryForPosition):
(WebKit::distanceBetweenRectsForPosition): Deleted.
(WebKit::rectsEssentiallyTheSame): Deleted.
(WebKit::unionDOMRanges): Deleted.
(WebKit::computeEdgeCenter): Deleted.
(WebKit::WebPage::expandedRangeFromHandle): Deleted.
(WebKit::WebPage::contractedRangeFromHandle): Deleted.
(WebKit::WebPage::computeExpandAndShrinkThresholdsForHandle): Deleted.
(WebKit::WebPage::rangeForBlockAtPoint): Deleted.
(WebKit::shouldExpand): Deleted.
(WebKit::WebPage::changeBlockSelection): Deleted.
(WebKit::WebPage::updateBlockSelectionWithTouch): Deleted.

12:18 PM Changeset in webkit [230590] by Keith Rollin
  • 5 edits in trunk/LayoutTests

Fix flakiness in insecure-iframe-in-main-frame.html
https://bugs.webkit.org/show_bug.cgi?id=184432

Reviewed by Daniel Bates.

Mark insecure-iframe-in-main-frame.html as no longer flaky. Tweak it
so that the frame-load events of the test window do no interleave with
the frame-load events of the window opened by the test so that any
non-deterministic behavior doesn't affect the order of the expect
sequence of messages.

  • TestExpectations:
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-iframe-in-main-frame-expected.txt:
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-iframe-in-main-frame.html:
  • platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-iframe-in-main-frame-expected.txt:
11:56 AM Changeset in webkit [230589] by Michael Catanzaro
  • 3 edits in trunk/Source/WTF

Remove unused crash hook functionality
https://bugs.webkit.org/show_bug.cgi?id=183369

Reviewed by Alexey Proskuryakov.

WTFSetCrashHook and WTFInstallReportBacktraceOnCrashHook are not used on any platforms and
can be removed.

  • wtf/Assertions.cpp:
  • wtf/Assertions.h:
11:50 AM Changeset in webkit [230588] by Megan Gardner
  • 2 edits in trunk/Source/WebKit

Don't have selections get stuck in editable elements
https://bugs.webkit.org/show_bug.cgi?id=184483

Reviewed by Timothy Hatcher.

When selecting in editable elements, if the keyboard does not come up, which is not required,
then the selections are stuck in that element. If you try and select something in web content,
it will only select in the editable element. By clearing the assisted node when clearing a selection,
it no longer sticks. Also, textSelectionAssistant should not be used as if we are currently editing.
Change it to the function we created for that purpose in a pervious patch.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView clearSelection]):
(-[WKContentView _isInteractingWithAssistedNode]):

11:35 AM Changeset in webkit [230587] by sbarati@apple.com
  • 2 edits in trunk/Source/bmalloc

Raise the partial scavenge interval even more on x86-64
https://bugs.webkit.org/show_bug.cgi?id=184551

Rubber-stamped by Filip Pizlo.

The JetStream regression didn't recover from my previous patch.
This is another attempt to get it to recover perf.

  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::threadRunLoop):

11:32 AM Changeset in webkit [230586] by Ryan Haddad
  • 4 edits
    3 deletes in trunk

Unreviewed, rolling out r230554.

The non-ASCII character in the filename causes issues with SVN

Reverted changeset:

"input.webkitEntries does not work as expected when folder
contains accented chars"
https://bugs.webkit.org/show_bug.cgi?id=184517
https://trac.webkit.org/changeset/230554

11:19 AM Changeset in webkit [230585] by Michael Catanzaro
  • 5 edits in trunk/Source

[WPE] Move libWPEWebInspectorResources.so to pkglibdir
https://bugs.webkit.org/show_bug.cgi?id=184379

Reviewed by Žan Doberšek.

Source/JavaScriptCore:

Load the module from the new location.

  • PlatformWPE.cmake:
  • inspector/remote/glib/RemoteInspectorUtils.cpp:

(Inspector::backendCommands):

Source/WebKit:

This is important to allow parallel installation.

  • PlatformWPE.cmake:
11:01 AM Changeset in webkit [230584] by aboya@igalia.com
  • 2 edits in trunk/Source/WebCore

[MSE] Add isValid() assertions on PlatformTimeRanges::add() range ends
https://bugs.webkit.org/show_bug.cgi?id=180253

Right now it's checked that start <= end but it's not checked that
neither of them is undefined.

When this happens, the bug can be hard to track down.

The assertion is not enabled for Mac because there is currently a test
that is hitting it.

Reviewed by Jer Noble.

  • platform/graphics/PlatformTimeRanges.cpp:

(WebCore::PlatformTimeRanges::add):

10:51 AM Changeset in webkit [230583] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Process::setIdentifier() / Process::identifier() do not need a lock
https://bugs.webkit.org/show_bug.cgi?id=184544

Reviewed by Brady Eidson.

Process::setIdentifier() / Process::identifier() do not need a lock.
Process::setIdentifier() gets called in ChildProcess::initialize(),
before we start any background threads. It is then safe to query
this process identifier later on from background threads without
locks.

  • platform/Process.cpp:

(WebCore::Process::setIdentifier):
(WebCore::Process::identifier):

10:41 AM Changeset in webkit [230582] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix the Windows build.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::computeExtentOfAnimation const):

10:37 AM Changeset in webkit [230581] by graouts@webkit.org
  • 18 edits in trunk

[Web Animations] Suspend animations when required
https://bugs.webkit.org/show_bug.cgi?id=184541

Reviewed by Jon Lee.

Source/WebCore:

Animations managed by CSSAnimationController get suspended under a number of scenarios, we now add the possibility
to suspend animations on a DocumentTimeline as well such that Web Animations and CSS Animations and CSS Transitions
implemented as Web Animations get suspended under the same conditions as well. We also update the implementation for
Internals::numberOfActiveAnimations() such that tests checking that animations get suspended pass.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::suspendAnimations): When asked to be suspended, the DocumentTimeline cancels pending
invalidation tasks and updates all of the animations it manages, including those running on the compositor.
(WebCore::DocumentTimeline::resumeAnimations): When asked to be resumed, the DocumentTimeline resumes animations
it manages and rewinds its invalidation timer.
(WebCore::DocumentTimeline::animationsAreSuspended):
(WebCore::DocumentTimeline::numberOfActiveAnimationsForTesting const): Called by Internals::numberOfActiveAnimations(),
this returns the number of animations managed by this timeline that are not suspended.
(WebCore::DocumentTimeline::currentTime):
(WebCore::DocumentTimeline::timingModelDidChange): Ensure the invalidation timer is not rewound if the timeline
is suspended.

  • animation/DocumentTimeline.h:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setTimeline): When moving to a new timeline, ensure we match the new timeline's animation state.
(WebCore::WebAnimation::setSuspended): Toggle the accelerated running state of any backing hardware animations when
the suspension state of an animation changes.

  • animation/WebAnimation.h:

(WebCore::WebAnimation::isSuspended const):

  • dom/Document.cpp:

(WebCore::Document::didBecomeCurrentDocumentInFrame):
(WebCore::Document::resume):

  • dom/Document.h:
  • history/CachedFrame.cpp:

(WebCore::CachedFrameBase::restore):

  • page/Frame.cpp:

(WebCore::Frame::clearTimers):

  • page/Page.cpp:

(WebCore::Page::setIsVisibleInternal):
(WebCore::Page::hiddenPageCSSAnimationSuspensionStateChanged):

  • testing/Internals.cpp:

(WebCore::Internals::numberOfActiveAnimations const):
(WebCore::Internals::animationsAreSuspended const):
(WebCore::Internals::suspendAnimations const):
(WebCore::Internals::resumeAnimations const):

LayoutTests:

Mark more tests as passing when the CSS Animations and CSS Transitions as Web Animations flag is on.

  • animations/animation-controller-drt-api.html:
  • animations/animation-followed-by-transition.html:
  • fast/animation/css-animation-resuming-when-visible-with-style-change.html:
  • fast/animation/css-animation-resuming-when-visible.html:
10:26 AM Changeset in webkit [230580] by Alan Bujtas
  • 7 edits in trunk/Tools

[LayoutReloaded] Minor cleanup in LayoutSate
https://bugs.webkit.org/show_bug.cgi?id=184546

Reviewed by Antti Koivisto.

  • LayoutReloaded/FormattingContext/FormattingContext.js:

(FormattingContext.isInFormattingContext):

  • LayoutReloaded/FormattingState/FormattingState.js:

(FormattingState.prototype.displayBoxes):
(FormattingState.prototype.displayBox):
(FormattingState.prototype._markSubTreeNeedsLayout):
(FormattingState):
(FormattingState.prototype.displayBoxMap): Deleted.

  • LayoutReloaded/LayoutState.js:

(LayoutState.prototype.formattingStateForBox):
(LayoutState.prototype.needsLayout):
(LayoutState.prototype.displayBox):
(LayoutState.prototype._createFormattingState):
(LayoutState):

  • LayoutReloaded/LayoutTree/Box.js:

(Layout.Box.prototype.isFormattingContextDescendant): Deleted.

  • LayoutReloaded/LayoutTree/Container.js:

(Layout.Container.prototype.isContainingBlockDescendant): Deleted.

  • LayoutReloaded/Utils.js:

(Utils._findDisplayBox):

9:35 AM Changeset in webkit [230579] by graouts@webkit.org
  • 7 edits in trunk

[Web Animations] Throttle animations when lowPowerMode is on
https://bugs.webkit.org/show_bug.cgi?id=184540

Reviewed by Jon Lee.

Source/WebCore:

Ensure animations are sampled at a lower frequency when lowPowerMode is on.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::updateThrottlingState):
(WebCore::DocumentTimeline::animationInterval const):
(WebCore::DocumentTimeline::updateAnimationSchedule):
(WebCore::DocumentTimeline::scheduleAnimationResolution):

  • animation/DocumentTimeline.h:
  • page/Page.cpp:

(WebCore::Page::handleLowModePowerChange):

  • testing/Internals.cpp:

(WebCore::Internals::animationsInterval const):

LayoutTests:

Mark one more test as passing when the CSS Animations and CSS Transitions as Web Animations flag is on.

  • fast/animation/css-animation-throttling-lowPowerMode.html:
9:34 AM Changeset in webkit [230578] by graouts@webkit.org
  • 17 edits in trunk

[Web Animations] Ensure elements overlapping with elements animating also get composited
https://bugs.webkit.org/show_bug.cgi?id=184539

Reviewed by Jon Lee.

Source/WebCore:

A number of compositing tests failed because we didn't call into the Web Animations engine while various calls
on RenderLayer and RenderLayerBacking were made. We bring the functionality over from CSSAnimationController to
DocumentTimeline and KeyframeAnimation to KeyframeEffectReadOnly.

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::animationsForElement const): Update this method's signature to be const since it
should be callable by other const method.
(WebCore::AnimationTimeline::animationsForElement): Deleted.

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

(WebCore::DocumentTimeline::computeExtentOfAnimation const): Adapt this method from CSSAnimationController.
(WebCore::DocumentTimeline::isRunningAnimationOnRenderer const): Adapt this method from CSSAnimationController.
(WebCore::DocumentTimeline::isRunningAcceleratedAnimationOnRenderer const): Adapt this method from CSSAnimationController.

  • animation/DocumentTimeline.h:
  • animation/KeyframeEffectReadOnly.cpp:

(WebCore::KeyframeEffectReadOnly::computeExtentOfTransformAnimation const): Bring this method over from KeyframeAnimation.
(WebCore::containsRotation): Bring this method over from KeyframeAnimation.
(WebCore::KeyframeEffectReadOnly::computeTransformedExtentViaTransformList const): Bring this method over from KeyframeAnimation.
(WebCore::KeyframeEffectReadOnly::computeTransformedExtentViaMatrix const): Bring this method over from KeyframeAnimation.

  • animation/KeyframeEffectReadOnly.h:

(WebCore::KeyframeEffectReadOnly::animatedProperties const): DocumentTimeline::computeExtentOfAnimation() needs to get a list
of all animated properties to see if a transform is animated, so we now expose such a list.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::currentTransform const): Update this method to call into DocumentTimeline if the CSS Animations
and CSS Transitions as Web Animations flag is on.
(WebCore::RenderLayer::calculateClipRects const): Update this method to call into DocumentTimeline if the CSS Animations
and CSS Transitions as Web Animations flag is on.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateGeometry): Update this method to call into DocumentTimeline if the CSS Animations
and CSS Transitions as Web Animations flag is on.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::isRunningTransformAnimation const): Update this method to call into DocumentTimeline
if the CSS Animations and CSS Transitions as Web Animations flag is on.

  • rendering/RenderObject.h:

(WebCore::RenderObject::documentTimeline const):

LayoutTests:

Opt more tests in the CSS Animations and CSS Transitions as Web Animations runtime flag since they now pass.

  • compositing/backing/backface-visibility-flip.html:
  • compositing/layer-creation/overlap-animation-clipping.html:
  • compositing/layer-creation/overlap-animation-container.html:
  • compositing/layer-creation/overlap-animation.html:
  • compositing/layer-creation/translate-animation-overlap.html:
9:11 AM Changeset in webkit [230577] by Yusuke Suzuki
  • 4 edits in trunk/Source/JavaScriptCore

[DFG] Remove compileBigIntEquality in DFG 32bit
https://bugs.webkit.org/show_bug.cgi?id=184535

Reviewed by Saam Barati.

We can have the unified implementation for compileBigIntEquality.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileBigIntEquality):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compileBigIntEquality): Deleted.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compileBigIntEquality): Deleted.

8:51 AM Changeset in webkit [230576] by Michael Catanzaro
  • 5 edits in trunk/Source

[WPE] Improve include hierarchy
https://bugs.webkit.org/show_bug.cgi?id=184376

Reviewed by Žan Doberšek.

Source/JavaScriptCore:

Install JSC headers under /usr/include/wpe-webkit-0.1/jsc instead of
/usr/include/wpe-0.1/WPE/jsc.

  • PlatformWPE.cmake:

Source/WebKit:

Install our headers under /usr/include/wpe-webkit-0.1/wpe instead of
/usr/include/wpe-0.1/WPE/wpe. Too much WPE, not enough WebKit!

  • PlatformWPE.cmake:
  • wpe/wpe-webkit.pc.in:
8:34 AM Changeset in webkit [230575] by aestes@apple.com
  • 1 edit in trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h

Try again to fix the build after r230560.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
8:14 AM Changeset in webkit [230574] by graouts@webkit.org
  • 33 edits in trunk

[Web Animations] Enable seeking for hardware animations
https://bugs.webkit.org/show_bug.cgi?id=184518

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Track a small regression in the Web Animations WPT tests.

  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:

Source/WebCore:

Hardware animations had lagged behind software animations in support and this patch bring their respective level
of support closer to one another. Importantly, we add the ability to seek an animation added to a GraphicsLayerCA
since many tests pause and seek animations to test their state. Animations may also have their playback state changed
along with their current time in the same run loop, so we now maintain a list of pending processing actions for
hardware animations.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::updateAnimationSchedule): If we have animations queued up for updates to their accelerated
state we can schedule animation resolution immediately since we've already established we'll have work to do.
(WebCore::DocumentTimeline::updateAnimations): Factor the updates of pending accelerated animations out in a dedicated
method.
(WebCore::DocumentTimeline::applyPendingAcceleratedAnimations): Go through all pending accelerated animations and update
their state.

  • animation/KeyframeEffectReadOnly.cpp:

(WebCore::KeyframeEffectReadOnly::setBlendingKeyframes): Update the m_shouldRunAccelerated flag when setting blending keyframes.
(WebCore::KeyframeEffectReadOnly::apply): Ensure we finish accelerated animations if the progress is 1 or null (no longer active).
start accelerated animations if the animation is starting and always resolve styles in software as well to ensure that
hit testing will work as expected.
(WebCore::KeyframeEffectReadOnly::computeShouldRunAccelerated):
(WebCore::KeyframeEffectReadOnly::animationPlayStateDidChange): Called by WebAnimation when play() or pause() is called
with the appropriate flag.
(WebCore::KeyframeEffectReadOnly::animationDidSeek): Called by WebAnimation when the currentTime property is set.
(WebCore::KeyframeEffectReadOnly::addPendingAcceleratedAction): Add the provided action to the list of pending accelerated
actions and notify the animation that the accelerated state needs changing.
(WebCore::KeyframeEffectReadOnly::applyPendingAcceleratedActions): Called by DocumentTimeline, through WebAnimation, to apply
all pending accelerated actions.
(WebCore::KeyframeEffectReadOnly::backingAnimationForCompositedRenderer const): If we're dealing with a declarative animation,
we already have a backing Animation object, so use it directly. Otherwise, create one and ensure it reflects all timing properties
for the animation.
(WebCore::KeyframeEffectReadOnly::shouldRunAccelerated): Deleted.
(WebCore::KeyframeEffectReadOnly::startOrStopAccelerated): Deleted.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setCurrentTime): Call animationDidSeek() on the effect to ensure its accelerated animation gets seeked.
(WebCore::WebAnimation::play): Call animationPlayStateDidChange() on the effect to ensure its accelerated animation is started or resumed.
(WebCore::WebAnimation::pause): Call animationPlayStateDidChange() on the effect to ensure its accelerated animation gets paused.
(WebCore::WebAnimation::acceleratedStateDidChange):
(WebCore::WebAnimation::applyPendingAcceleratedActions):
(WebCore::WebAnimation::acceleratedRunningStateDidChange): Deleted.
(WebCore::WebAnimation::startOrStopAccelerated): Deleted.

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::seekAnimation):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::addProcessingActionForAnimation): Add an AnimationProcessingAction to the list of such actions for a
given animation name. In case we already have a Remove action, we ignore the action since the hardware animation will have been
removed by the time we try to apply this processing action.
(WebCore::GraphicsLayerCA::pauseAnimation): Add a Pause processing action.
(WebCore::GraphicsLayerCA::seekAnimation): Add a Seek processing action.
(WebCore::GraphicsLayerCA::removeAnimation): Add a Remove processing action.
(WebCore::GraphicsLayerCA::updateAnimations): First ensure that all animations pending commit are committed and then update
all animations based on the actions added through addProcessingActionForAnimation().
(WebCore::GraphicsLayerCA::seekCAAnimationOnLayer): Generate a new animation based on the new seek time provided.

  • platform/graphics/ca/GraphicsLayerCA.h:

(WebCore::GraphicsLayerCA::AnimationProcessingAction::AnimationProcessingAction):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::animationSeeked):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::animationSeeked):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresCompositingForAnimation const): Fix an issue where we would run the CSSAnimationController
logic even when the legacy animation engine was disabled.

LayoutTests:

Update current test expectations, some tests have regressed because they weren't probably running their hardware
animations. Followup patches will make them opt into CSS Animations and CSS Transitions as Web Animations again.

  • animations/3d/transform-origin-vs-functions.html:
  • animations/change-completed-animation-transform.html:
  • animations/missing-values-first-keyframe.html:
  • animations/missing-values-last-keyframe.html:
  • animations/play-state-start-paused.html:
  • compositing/contents-scale/animating.html:
  • compositing/layer-creation/animation-overlap-with-children.html:
  • compositing/overflow/overflow-positioning.html:
  • compositing/visible-rect/animated.html:
  • css3/filters/filter-animation-from-none-hw.html:
  • css3/filters/filter-animation-from-none-multi-hw.html:
  • css3/filters/filter-animation-from-none-multi.html:
  • css3/filters/filter-animation-from-none.html:
  • platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
7:51 AM Changeset in webkit [230573] by Alan Bujtas
  • 4 edits in trunk/Tools

[LayoutReloaded] Introduce needsLayout to InlineFormattingContext
https://bugs.webkit.org/show_bug.cgi?id=184538

Reviewed by Antti Koivisto.

  • LayoutReloaded/FormattingContext/BlockFormatting/BlockFormattingContext.js:

(BlockFormattingContext.prototype._adjustBottomWithFIXME):
(BlockFormattingContext):
(BlockFormattingContext.prototype._firstInFlowChildWithNeedsLayout): Deleted.
(BlockFormattingContext.prototype._nextInFlowSiblingWithNeedsLayout): Deleted.

  • LayoutReloaded/FormattingContext/FormattingContext.js:

(FormattingContext.prototype._firstInFlowChildWithNeedsLayout):
(FormattingContext.prototype._nextInFlowSiblingWithNeedsLayout):
(FormattingContext):

  • LayoutReloaded/FormattingContext/InlineFormatting/InlineFormattingContext.js:

(InlineFormattingContext.prototype.layout):
(InlineFormattingContext.prototype._handleInlineContainer):
(InlineFormattingContext.prototype._handleInlineBlockContainer):
(InlineFormattingContext.prototype._handleInlineContent):
(InlineFormattingContext.prototype._clearAndMoveToNext):
(InlineFormattingContext):

7:12 AM Changeset in webkit [230572] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Skip the test fast/forms/file/entries-api/webkitEntries-nonascii-folder-name.html on Windows.
https://bugs.webkit.org/show_bug.cgi?id=184537

Unreviewed test gardening.

  • platform/win/TestExpectations:
6:47 AM Changeset in webkit [230571] by aestes@apple.com
  • 1 edit in trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm

Fix the build after r230560.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):

6:41 AM Changeset in webkit [230570] by Kocsen Chung
  • 3 edits
    2 adds in branches/safari-605-branch

Cherry-pick r230513. rdar://problem/39337459

FrameSelection::appearanceUpdateTimerFired should be robust against layout passes underneath it
https://bugs.webkit.org/show_bug.cgi?id=183395
<rdar://problem/38055732>

Reviewed by Zalan Bujtas.

Source/WebCore:

In the case where a FrameSelection updates its appearance when m_appearanceUpdateTimer is fired, the
FrameSelection's Frame is unprotected, and can be removed by arbitrary script. This patch applies a simple
mitigation by wrapping the Frame in a Ref when firing the appearance update timer.

Test: editing/selection/iframe-update-selection-appearance.html

  • editing/FrameSelection.cpp: (WebCore::FrameSelection::appearanceUpdateTimerFired):

LayoutTests:

Add a new layout test that passes if we didn't crash.

  • editing/selection/iframe-update-selection-appearance-expected.txt: Added.
  • editing/selection/iframe-update-selection-appearance.html: Added.

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

6:41 AM Changeset in webkit [230569] by Kocsen Chung
  • 2 edits in branches/safari-605-branch/Source/JavaScriptCore

Cherry-pick r230494. rdar://problem/39337455

Unreviewed, fix cloop build.

  • dfg/DFGAbstractInterpreterClobberState.cpp:

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

6:41 AM Changeset in webkit [230568] by Kocsen Chung
  • 13 edits
    7 adds in branches/safari-605-branch

Cherry-pick r230488. rdar://problem/39337455

DFG AI and clobberize should agree with each other
https://bugs.webkit.org/show_bug.cgi?id=184440

Reviewed by Saam Barati.

JSTests:

Add tests for all of the bugs I fixed.

  • stress/direct-arguments-out-of-bounds-change-structure.js: Added. (foo):
  • stress/new-typed-array-cse-effects.js: Added. (foo):
  • stress/scoped-arguments-out-of-bounds-change-structure.js: Added. (foo.theO): (foo):
  • stress/string-from-char-code-change-structure-not-dead.js: Added. (foo): (i.valueOf): (weirdValue.valueOf):
  • stress/string-from-char-code-change-structure.js: Added. (foo): (i.valueOf): (weirdValue.valueOf):

Source/JavaScriptCore:

One way to fix bugs involving underapproximation in AI or clobberize is to assert that they
agree with each other. That's what this patch does: it adds an assertion that AI's structure
state tracking must be equivalent to JSCell_structureID being clobbered.

One subtlety is that AI sometimes folds away structure clobbering using information that
clobberize doesn't have. So, we track this wuth special kinds of AI states (FoldedClobber and
ObservedTransitions).

This fixes a bunch of cases of AI missing clobberStructures/clobberWorld and one case of
clobberize missing a write(Heap).

This also makes some cases more precise in order to appease the assertion. Making things more
precise might make things faster, but I didn't measure it because that wasn't the goal.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • dfg/DFGAbstractInterpreter.h:
  • dfg/DFGAbstractInterpreterClobberState.cpp: Added. (WTF::printInternal):
  • dfg/DFGAbstractInterpreterClobberState.h: Added. (JSC::DFG::mergeClobberStates):
  • dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::startExecuting): (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): (JSC::DFG::AbstractInterpreter<AbstractStateType>::didFoldClobberWorld): (JSC::DFG::AbstractInterpreter<AbstractStateType>::clobberStructures): (JSC::DFG::AbstractInterpreter<AbstractStateType>::didFoldClobberStructures): (JSC::DFG::AbstractInterpreter<AbstractStateType>::observeTransition): (JSC::DFG::AbstractInterpreter<AbstractStateType>::observeTransitions): (JSC::DFG::AbstractInterpreter<AbstractStateType>::setDidClobber): Deleted.
  • dfg/DFGAtTailAbstractState.h: (JSC::DFG::AtTailAbstractState::setClobberState): (JSC::DFG::AtTailAbstractState::mergeClobberState): (JSC::DFG::AtTailAbstractState::setDidClobber): Deleted.
  • dfg/DFGCFAPhase.cpp: (JSC::DFG::CFAPhase::performBlockCFA):
  • dfg/DFGClobberSet.cpp: (JSC::DFG::writeSet):
  • dfg/DFGClobberSet.h:
  • dfg/DFGClobberize.h: (JSC::DFG::clobberize):
  • dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants):
  • dfg/DFGInPlaceAbstractState.h: (JSC::DFG::InPlaceAbstractState::clobberState const): (JSC::DFG::InPlaceAbstractState::didClobberOrFolded const): (JSC::DFG::InPlaceAbstractState::didClobber const): (JSC::DFG::InPlaceAbstractState::setClobberState): (JSC::DFG::InPlaceAbstractState::mergeClobberState): (JSC::DFG::InPlaceAbstractState::setDidClobber): Deleted.

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

6:41 AM Changeset in webkit [230567] by Kocsen Chung
  • 2 edits in branches/safari-605-branch/Source/WebKit

Cherry-pick r229872. rdar://problem/39349363

Use the same SWServer for all ephemeral sessions
https://bugs.webkit.org/show_bug.cgi?id=183921
<rdar://problem/36873075>

Reviewed by Youenn Fablet.

Use the same SWServer for all ephemeral sessions. SWServers never go away and we create
one per sessionID. When browsing doing private browsing in Safari (and other fetching
favorite icons), the sessionID is ephemeral and keeps changing. This means that we kept
constructing new SWServers that would never go away. Each SWServer has a thread so we
would eventually hit the thread limit for the storage process.

  • StorageProcess/StorageProcess.cpp: (WebKit::StorageProcess::swServerForSession):

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

6:40 AM Changeset in webkit [230566] by Kocsen Chung
  • 4 edits in branches/safari-605-branch/Source/JavaScriptCore

Cherry-pick r227692. rdar://problem/39337417

We should only append ParserArenaDeletable pointers to ParserArena::m_deletableObjects.
https://bugs.webkit.org/show_bug.cgi?id=182180
<rdar://problem/36460697>

Reviewed by Michael Saboff.

Some parser Node subclasses extend ParserArenaDeletable via multiple inheritance,
but not as the Node's first base class. ParserArena::m_deletableObjects is
expecting pointers to objects of the shape of ParserArenaDeletable. We ensure
this by allocating the Node subclass, and casting it to ParserArenaDeletable to
get the correct pointer to append to ParserArena::m_deletableObjects.

To simplify things, we introduce a JSC_MAKE_PARSER_ARENA_DELETABLE_ALLOCATED
(analogous to WTF_MAKE_FAST_ALLOCATED) for use in Node subclasses that extends
ParserArenaDeletable.

  • parser/NodeConstructors.h: (JSC::ParserArenaDeletable::operator new):
  • parser/Nodes.h:
  • parser/ParserArena.h: (JSC::ParserArena::allocateDeletable):

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

3:19 AM Changeset in webkit [230565] by calvaris@igalia.com
  • 2 edits in trunk/Tools

[GStreamer] Speed up GStreamer dependency build by removing examples compilation
https://bugs.webkit.org/show_bug.cgi?id=184528

Reviewed by Philippe Normand.

  • gstreamer/jhbuild.modules: Added --disable-examples for GStreamer package.
2:22 AM Changeset in webkit [230564] by tpopela@redhat.com
  • 3 edits in trunk/JSTests

Unreviewed, skip JIT tests if it isn't enabled

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

  • stress/big-int-spec-to-primitive.js:
  • stress/big-int-spec-to-this.js:
2:21 AM Changeset in webkit [230563] by calvaris@igalia.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix GStreamer builds

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::handleMessage): We were
passing a String to a GST_WARNING call.

1:19 AM Changeset in webkit [230562] by zandobersek@gmail.com
  • 13 edits
    1 add
    1 delete in trunk

[WPE] Switch testing process to using WPEBackend-fdo
https://bugs.webkit.org/show_bug.cgi?id=184357

Reviewed by Carlos Alberto Lopez Perez.

.:

  • Source/cmake/FindWPEBackend-fdo.cmake: Renamed from Source/cmake/FindWPEBackend-mesa.cmake.

Tools:

Switch WPE testing to using the WPEBackend-fdo implementation that
depends on the WL_bind_wayland_display EGL extension, as defined under
the freedesktop.org project.
https://cgit.freedesktop.org/mesa/mesa/tree/docs/specs/WL_bind_wayland_display.spec

HeadlessViewBackend is refactored to use the WPEBackend-fdo API, but
otherwise is not changed in functionality.

Unit tests now have to unconditionally use HeadlessViewBackend as a
wpe_view_backend provider, since WPEBackend-fdo does not provide a
default wpe_view_backend implementation. Unit tests covering that are
adjusted to instead use a mock wpe_view_backend interface.

  • Scripts/webkitdirs.pm:

(builtDylibPathForName): Fix the libWPEWebKit.so name to also include
the API version that was added in r230449.

  • Scripts/webkitpy/port/waylanddriver.py:

(WaylandDriver._setup_environ_for_test): Export EGL_PLATFORM=wayland.

  • Scripts/webkitpy/port/wpe.py:

(WPEPort._driver_class): Use WaylandDriver by default.

  • TestWebKitAPI/PlatformWebView.h:

(): Deleted.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:

(testWebViewWebBackend):

  • TestWebKitAPI/glib/WebKitGLib/TestMain.h:

(Test::createWebViewBackend):

  • TestWebKitAPI/wpe/PlatformWebViewWPE.cpp:

(TestWebKitAPI::PlatformWebView::~PlatformWebView):
(TestWebKitAPI::PlatformWebView::initialize):

  • wpe/HeadlessViewBackend/CMakeLists.txt:
  • wpe/HeadlessViewBackend/HeadlessViewBackend.cpp:

(getEGLDisplay):
(HeadlessViewBackend::HeadlessViewBackend):
(HeadlessViewBackend::~HeadlessViewBackend):
(HeadlessViewBackend::backend const):
(HeadlessViewBackend::createSnapshot):
(HeadlessViewBackend::performUpdate):
(HeadlessViewBackend::makeCurrent): Deleted.

  • wpe/HeadlessViewBackend/HeadlessViewBackend.h:
  • wpe/jhbuild.modules: Module name cleanup. Dyz version is bumped.
1:01 AM Changeset in webkit [230561] by zandobersek@gmail.com
  • 7 edits
    22 adds in trunk/LayoutTests

Unreviewed WPE gardening. Adding or updating more baselines affected by
web-platform-test syncs in r230330, r230353 and r230445.

  • platform/wpe/imported/w3c/web-platform-tests/FileAPI: Added.
  • platform/wpe/imported/w3c/web-platform-tests/FileAPI/url: Added.
  • platform/wpe/imported/w3c/web-platform-tests/FileAPI/url/url-with-fetch.any-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/FileAPI/url/url-with-fetch.any.worker-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-location-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-location-worker-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method-worker-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/request: Added.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/request/request-keepalive-quota-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element: Added.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/text-level-semantics: Added.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element: Added.
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/streams: Added.
  • platform/wpe/imported/w3c/web-platform-tests/streams/readable-byte-streams: Added.
  • platform/wpe/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/touch-events: Added.
  • platform/wpe/imported/w3c/web-platform-tests/touch-events/historical-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/webaudio: Added.
  • platform/wpe/imported/w3c/web-platform-tests/webaudio/the-audio-api: Added.
  • platform/wpe/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface: Added.
  • platform/wpe/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest-expected.txt: Added.
12:55 AM Changeset in webkit [230560] by aestes@apple.com
  • 8 edits
    3 copies in trunk/Source/WebKit

[iOS] Add a mechanism for holding Wi-Fi assertions
https://bugs.webkit.org/show_bug.cgi?id=184520
<rdar://problem/39025726>

Reviewed by Sam Weinig.

Add plumbing for holding a Wi-Fi assertion on iOS as long as there are active
network data tasks. This functionality is turned off by default right now.

  • Configurations/Network-iOS.entitlements:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):

  • NetworkProcess/cocoa/WiFiAssertionHolder.cpp: Added.

(WebKit::ensureWiFiManagerClient): Create a global WiFiManagerClient when needed.
(WebKit::WiFiAssertionHolder::WiFiAssertionHolder): If this is the first active
Wi-Fi assertion holder, set the client's type to kWiFiClientTypeBackground.
(WebKit::WiFiAssertionHolder::~WiFiAssertionHolder): If the last active Wi-Fi
assertion holder is being destroyed, set the client's type back to
kWiFiClientTypeNormal.

  • NetworkProcess/cocoa/WiFiAssertionHolder.h: Added.
  • Platform/Logging.h: Added a logging channel for Wi-Fi assertions.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
  • WebKit.xcodeproj/project.pbxproj:
12:01 AM Changeset in webkit [230559] by Carlos Garcia Campos
  • 4 edits in trunk

[GTK] Switch to use always complex text code path
https://bugs.webkit.org/show_bug.cgi?id=183285

Reviewed by Michael Catanzaro.

Source/WebKit:

Now that we have branched for 2.20, it's a good time to try using complex text path always. We can simply force
it for GTK+ port and see how it works for the whole release cycle and if we don't notice any issues or
performance regressions we release 2.22 with complex text path forced. A debug env variable is added to switch
back to auto without having to recompile. After 2.22 is released we can make a final decision and remove the env
variable.

  • UIProcess/gtk/WebProcessPoolGtk.cpp:

(WebKit::WebProcessPool::platformInitializeWebProcess): Force complex text code path unless
WEBKIT_FORCE_COMPLEX_TEXT is present and set to 0.

Tools:

Keep the auto mode for the layout tests to avoid having to rebaseline a lot of tests.

  • WebKitTestRunner/gtk/main.cpp:

(main): Set WEBKIT_FORCE_COMPLEX_TEXT to 0 unless it's already present in the environment.

Apr 11, 2018:

11:59 PM Changeset in webkit [230558] by Carlos Garcia Campos
  • 16 edits
    1 add in trunk

[GLIB] Handle strings containing null characters
https://bugs.webkit.org/show_bug.cgi?id=184450

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

We should be able to evaluate scripts containing null characters and to handle strings that contains them
too. In JavaScript strings are not null-terminated, they can contain null characters. This patch adds a length
parameter to jsc_context_valuate() to pass the script length (or -1 if it's null terminated), and new functions
jsc_value_new_string_from_bytes() and jsc_value_to_string_as_bytes() using GBytes to store strings that might
contain null characters.

  • API/OpaqueJSString.cpp:

(OpaqueJSString::create): Add a create constructor that takes the String.

  • API/OpaqueJSString.h:

(OpaqueJSString::OpaqueJSString): Add a constructor that takes the String.

  • API/glib/JSCContext.cpp:

(jsc_context_evaluate): Add length parameter.
(jsc_context_evaluate_with_source_uri): Ditto.

  • API/glib/JSCContext.h:
  • API/glib/JSCValue.cpp:

(jsc_value_new_string_from_bytes):
(jsc_value_to_string):
(jsc_value_to_string_as_bytes):
(jsc_value_object_is_instance_of): Pass length to evaluate.

  • API/glib/JSCValue.h:
  • API/glib/docs/jsc-glib-4.0-sections.txt:

Tools:

Add test case for strings with null characters and update all calls to evaluate to pass the script length.

  • TestWebKitAPI/PlatformGTK.cmake:
  • TestWebKitAPI/PlatformWPE.cmake:
  • TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp:

(testJSCBasic):
(testJSCFunction):
(testJSCObject):
(testJSCClass):
(testJSCPrototypes):
(testJSCExceptions):
(testJSCPromises):
(testJSCGarbageCollector):
(testJSCWeakValue):
(testsJSCVirtualMachine):
(testsJSCAutocleanups):

  • TestWebKitAPI/Tests/JavaScriptCore/glib/script.js: Added.
  • TestWebKitAPI/Tests/WebKitGLib/DOMElementTest.cpp:

(DOMElementTest::testAutoFill):

  • TestWebKitAPI/Tests/WebKitGLib/EditorTest.cpp:

(WebKitWebEditorTest::testSelectionChanged):

  • TestWebKitAPI/Tests/WebKitGLib/FrameTest.cpp:

(WebKitFrameTest::testJavaScriptValues):

  • TestWebKitAPI/Tests/WebKitGLib/WebExtensionTest.cpp:

(consoleMessageSentCallback):
(methodCallCallback):

10:53 PM Changeset in webkit [230557] by zandobersek@gmail.com
  • 8 edits in trunk

[WPE] Make WebKitWebViewBackend object mandatory for webkit_web_view_new*() constructors
https://bugs.webkit.org/show_bug.cgi?id=184513

Reviewed by Michael Catanzaro.

Source/WebKit:

webkit_web_view_new*() constructors should always expect a non-null
WebKitWebViewBackend object, forcing the user to specify how the
wpe_view_backend object is managed for the WebKitWebView that's being
created.

webkitWebViewBackendCreateDefault() and the default
_WebKitWebViewBackend() constructor are removed. WPE-specific
webkit_web_view_new*() entrypoints are updated to bail if the passed-in
WebKitWebViewBackend object is null. Documentation is updated
accordingly.

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkitWebViewConstructed):

  • UIProcess/API/wpe/WebKitWebViewBackend.cpp:

(webkitWebViewBackendCreateDefault): Deleted.

  • UIProcess/API/wpe/WebKitWebViewBackendPrivate.h:
  • UIProcess/API/wpe/WebKitWebViewWPE.cpp:

(webkit_web_view_new):
(webkit_web_view_new_with_context):
(webkit_web_view_new_with_related_view):
(webkit_web_view_new_with_settings):
(webkit_web_view_new_with_user_content_manager):

Tools:

Update the WPE-specific testWebViewWebBackend() test case, removing the
test that passes a null WebKitWebViewBackend object to the
webkit_web_view_new() call.

Helper createWebViewBackend() that's called via Test::createWebView()
variations is updated to, in case of not using the headless backend,
return a WebKitWebViewBackend instance that wraps around a
default wpe_view_backend object.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:

(testWebViewWebBackend):

  • TestWebKitAPI/glib/WebKitGLib/TestMain.h:

(Test::createWebViewBackend):

9:27 PM Changeset in webkit [230556] by Yusuke Suzuki
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] Add CCallHelpers::CellValue to wrap JSCell GPR to convert it to EncodedJSValue
https://bugs.webkit.org/show_bug.cgi?id=184500

Reviewed by Mark Lam.

Instead of passing JSValue::JSCellTag to callOperation meta-program to convert
JSCell GPR to EncodedJSValue in 32bit code, we add CallHelpers::CellValue.
It is a wrapper for GPRReg, like TrustedImmPtr for pointer value. When poking
CellValue, 32bit code emits JSValue::CellTag automatically. In 64bit, we just
poke held GPR. The benefit from this CellValue is that we can use the same code
for 32bit and 64bit. This patch removes several ifdefs.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateImpl):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCallDOMGetter):
(JSC::DFG::SpeculativeJIT::compileGetDirectPname):
(JSC::DFG::SpeculativeJIT::cachedPutById):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis):

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::CellValue::CellValue):
(JSC::CCallHelpers::CellValue::gpr const):
(JSC::CCallHelpers::setupArgumentsImpl):

9:19 PM Changeset in webkit [230555] by Alan Bujtas
  • 7 edits in trunk/Tools

[LayoutReloaded] Introduce needsLayout flag
https://bugs.webkit.org/show_bug.cgi?id=184527

Reviewed by Antti Koivisto.

Use the formatting state to mark boxes dirty.

  • LayoutReloaded/FormattingContext/BlockFormatting/BlockFormattingContext.js:

(BlockFormattingContext.prototype.layout):
(BlockFormattingContext.prototype._firstInFlowChildWithNeedsLayout):
(BlockFormattingContext.prototype._nextInFlowSiblingWithNeedsLayout):
(BlockFormattingContext):

  • LayoutReloaded/FormattingContext/FormattingContext.js:

(FormattingContext.prototype._layoutOutOfFlowDescendants):

  • LayoutReloaded/FormattingState/FormattingState.js:

(FormattingState):
(FormattingState.prototype.markNeedsLayout):
(FormattingState.prototype.clearNeedsLayout):
(FormattingState.prototype.needsLayout):
(FormattingState.prototype.layoutNeeded):
(FormattingState.prototype._markSubTreeNeedsLayout):

  • LayoutReloaded/LayoutState.js:

(LayoutState.prototype.formattingStateForBox):
(LayoutState.prototype.setNeedsLayout):
(LayoutState.prototype.needsLayout):

  • LayoutReloaded/LayoutTree/Box.js:

(Layout.Box.prototype.isFormattingContextDescendant):

  • LayoutReloaded/LayoutTree/Container.js:

(Layout.Container.prototype.isContainingBlockDescendant):

8:55 PM Changeset in webkit [230554] by Chris Dumez
  • 3 edits
    4 adds in trunk

input.webkitEntries does not work as expected when folder contains accented chars
https://bugs.webkit.org/show_bug.cgi?id=184517
<rdar://problem/39265537>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Use String::fromUTF8() to construct a WTF String from the char* returned by
dirname() in FileSystem::directoryName(). Previously, we were just calling
the String constructor, which would treat the input as latin 1 instead of
UTF-8.

Test: fast/forms/file/entries-api/webkitEntries-nonascii-folder-name.html

  • platform/posix/FileSystemPOSIX.cpp:

(WebCore::FileSystem::directoryName):

LayoutTests:

Add layout test coverage.

  • fast/forms/file/entries-api/webkitEntries-nonascii-folder-name-expected.txt: Added.
  • fast/forms/file/entries-api/webkitEntries-nonascii-folder-name.html: Added.
7:44 PM Changeset in webkit [230553] by sbarati@apple.com
  • 2 edits in trunk/Source/bmalloc

raise partial scavenge interval on x86-64
https://bugs.webkit.org/show_bug.cgi?id=184521

Rubber-stamped by Filip Pizlo.

This patch is an attempt to recover the 1-3% JetStream regression
my initial partial scavenging patch introduced on some Macs.

  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::threadRunLoop):

6:09 PM Changeset in webkit [230552] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WTF

Unreviewed, rolling out r230523.

Introduced MotionMark regression

Reverted changeset:

"Deactivate the WindowServer connection for the WebContent
process."
https://bugs.webkit.org/show_bug.cgi?id=184451
https://trac.webkit.org/changeset/230523

5:53 PM Changeset in webkit [230551] by Fujii Hironori
  • 3 edits
    2 adds in trunk/Source/WebKit

[curl][WebKit] Implement NetworkDataTaskCurl
https://bugs.webkit.org/show_bug.cgi?id=184488

Reviewed by Alex Christensen.

  • NetworkProcess/NetworkDataTask.cpp:

(WebKit::NetworkDataTask::create):

  • NetworkProcess/curl/NetworkDataTaskCurl.cpp: Added.

(WebKit::NetworkDataTaskCurl::NetworkDataTaskCurl):
(WebKit::NetworkDataTaskCurl::~NetworkDataTaskCurl):
(WebKit::NetworkDataTaskCurl::resume):
(WebKit::NetworkDataTaskCurl::suspend):
(WebKit::NetworkDataTaskCurl::cancel):
(WebKit::NetworkDataTaskCurl::invalidateAndCancel):
(WebKit::NetworkDataTaskCurl::state const):
(WebKit::NetworkDataTaskCurl::createCurlRequest):
(WebKit::NetworkDataTaskCurl::curlDidSendData):
(WebKit::NetworkDataTaskCurl::curlDidReceiveResponse):
(WebKit::NetworkDataTaskCurl::curlDidReceiveBuffer):
(WebKit::NetworkDataTaskCurl::curlDidComplete):
(WebKit::NetworkDataTaskCurl::curlDidFailWithError):
(WebKit::NetworkDataTaskCurl::shouldRedirectAsGET):
(WebKit::NetworkDataTaskCurl::willPerformHTTPRedirection):
(WebKit::NetworkDataTaskCurl::tryHttpAuthentication):
(WebKit::NetworkDataTaskCurl::restartWithCredential):
(WebKit::NetworkDataTaskCurl::appendCookieHeader):
(WebKit::NetworkDataTaskCurl::handleCookieHeaders):

  • NetworkProcess/curl/NetworkDataTaskCurl.h: Added.
  • PlatformWin.cmake:
3:46 PM Changeset in webkit [230550] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[Build fix] Replace CompactJITCodeMap with JITCodeMap.
https://bugs.webkit.org/show_bug.cgi?id=184512
<rdar://problem/35391728>

Not reviewed.

  • bytecode/CodeBlock.h:
  • jit/JITCodeMap.h:
3:09 PM Changeset in webkit [230549] by mark.lam@apple.com
  • 10 edits
    1 add
    1 delete in trunk/Source/JavaScriptCore

Replace CompactJITCodeMap with JITCodeMap.
https://bugs.webkit.org/show_bug.cgi?id=184512
<rdar://problem/35391728>

Reviewed by Filip Pizlo.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/CodeBlock.h:

(JSC::CodeBlock::setJITCodeMap):
(JSC::CodeBlock::jitCodeMap const):
(JSC::CodeBlock::jitCodeMap): Deleted.

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::executeOSRExit):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::adjustAndJumpToTarget):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::decodedCodeMapFor): Deleted.

  • jit/AssemblyHelpers.h:
  • jit/CompactJITCodeMap.h: Removed.
  • jit/JIT.cpp:

(JSC::JIT::link):

  • jit/JITCodeMap.h: Added.

(JSC::JITCodeMap::Entry::Entry):
(JSC::JITCodeMap::Entry::bytecodeIndex const):
(JSC::JITCodeMap::Entry::codeLocation):
(JSC::JITCodeMap::append):
(JSC::JITCodeMap::finish):
(JSC::JITCodeMap::find const):
(JSC::JITCodeMap::operator bool const):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

2:49 PM Changeset in webkit [230548] by youenn@apple.com
  • 9 edits
    2 adds in trunk

Preventively expect UTF8 strings from libwebrtc SDP and error messages
https://bugs.webkit.org/show_bug.cgi?id=184509

Reviewed by Eric Carlson.

Source/WebCore:

Make WebCore code expect any libwebrtc string to contain UTF-8.
Currently SDPs do not contain any UTF-8 specific character
but https://tools.ietf.org/html/rfc4566 allows it.

Add Internals API to set track id so that we can inject UTF-8 inside some WebRTC tests.
Test: webrtc/utf8-sdp.html

  • Modules/mediastream/MediaStreamTrack.h:

(WebCore::MediaStreamTrack::setIdForTesting):

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::fromStdString):
(WebCore::fromSessionDescription):
(WebCore::LibWebRTCMediaEndpoint::doSetLocalDescription):
(WebCore::LibWebRTCMediaEndpoint::doSetRemoteDescription):
(WebCore::LibWebRTCMediaEndpoint::mediaStreamFromRTCStream):
(WebCore::LibWebRTCMediaEndpoint::addRemoteTrack):
(WebCore::LibWebRTCMediaEndpoint::addDataChannel):
(WebCore::LibWebRTCMediaEndpoint::OnIceCandidate):
(WebCore::LibWebRTCMediaEndpoint::createSessionDescriptionSucceeded):
(WebCore::LibWebRTCMediaEndpoint::createSessionDescriptionFailed):
(WebCore::LibWebRTCMediaEndpoint::setLocalSessionDescriptionFailed):
(WebCore::LibWebRTCMediaEndpoint::setRemoteSessionDescriptionFailed):
(WebCore::trackId): Deleted.

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::fromStdString):
(WebCore::LibWebRTCPeerConnectionBackend::doAddIceCandidate):
(WebCore::createReceiverForSource):

  • platform/mediastream/MediaStreamTrackPrivate.h:

(WebCore::MediaStreamTrackPrivate::setIdForTesting):

  • testing/Internals.cpp:

(WebCore::Internals::setMediaStreamTrackIdentifier):

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

LayoutTests:

  • webrtc/utf8-sdp-expected.txt: Added.
  • webrtc/utf8-sdp.html: Added.
2:06 PM Changeset in webkit [230547] by Wenson Hsieh
  • 4 edits
    2 deletes in trunk/Source/WebKit

[Extra zoom mode] Support pushing input view controllers onto the navigation stack
https://bugs.webkit.org/show_bug.cgi?id=184397
<rdar://problem/39265294>

Reviewed by Timothy Hatcher.

Currently, all input view controllers in extra zoom mode are presented modally. However, the latest iteration of
the HI specification depicts most of these view controllers (with the exception of time pickers) being presented
and dismissed via navigation stack. Since WebKit's iOS API surface doesn't force clients to embed WKWebViews
within a view controller with a corresponding UINavigationController, we cannot always guarantee that UI
presented when focusing form controls in a web view will be pushed onto the navigation stack; as such, the
approach taken in this patch will automatically allow WKWebView clients that already embed WKWebViews within a
UINavigationController to hook into this behavior, with modal presentation as a fallback.

At a high level, this patch makes the following tweaks to implement this behavior:

  1. Store the currently presented view controller using a single member variable (_presentedFullScreenInputViewController) instead of having one for each type. This makes bookkeepping around which view controller to present or dismiss much more straightforward.
  1. Replace WKFocusedFormControlViewController with just WKFocusedFormControlView. This addresses problems with pushing an input view controller onto the navigation stack after presenting the focused form control view controller modally. Now, we'll only need to present or push one view controller on the navigation stack.
  1. Remove -handleWheelEvent: forwarding to date and time pickers. Pushing date picker view controllers onto the navigation stack rather than presenting them modally means that we end up in a state where neither the WKContentView nor WKTimePickerViewController are first responder, which renders time pickers unusable. Instead, have the WKTimePickerViewController actually become first responder when presenting.
  1. Lastly, and most importantly: change -presentViewControllerForCurrentAssistedNode and -dismissAllInputViewControllers to try and push onto a navigation stack if possible, and fall back to modal presentation.
  • UIProcess/ios/WKContentViewInteraction.h:

Remove the separate member variables for each type of input view controller, and instead have one to keep track
of the current (and only) presented input view controller.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _willStartScrollingOrZooming]):
(-[WKContentView _didEndScrollingOrZooming]):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
(-[WKContentView _stopAssistingNode]):

Boilerplate renaming of _focusedFormControlViewController => _focusedFormControlView.

(-[WKContentView reloadContextViewForPresentedListViewController]):

Adjust for consolidation of the different input view controller member variables to a single member (see changes
in WKContentViewInteraction.h).

(-[WKContentView addFocusedFormControlOverlay]):
(-[WKContentView removeFocusedFormControlOverlay]):
(-[WKContentView presentViewControllerForCurrentAssistedNode]):
(-[WKContentView dismissAllInputViewControllers:]):

Add an animated argument. In the case where a different view controller was presented after presenting the
input view controller, this allows us to dismiss the other view controller with animation, and directly reveal
the web view or focus overlay underneath.

(-[WKContentView focusedFormControlViewDidSubmit:]):
(-[WKContentView focusedFormControlViewDidCancel:]):
(-[WKContentView focusedFormControlViewDidBeginEditing:]):
(-[WKContentView rectForFocusedFormControlView:]):
(-[WKContentView nextRectForFocusedFormControlView:]):
(-[WKContentView previousRectForFocusedFormControlView:]):
(-[WKContentView scrollViewForFocusedFormControlView:]):
(-[WKContentView actionNameForFocusedFormControlView:]):
(-[WKContentView focusedFormControlViewDidRequestNextNode:]):
(-[WKContentView focusedFormControlViewDidRequestPreviousNode:]):
(-[WKContentView hasNextNodeForFocusedFormControlView:]):
(-[WKContentView hasPreviousNodeForFocusedFormControlView:]):
(-[WKContentView focusedFormControllerDidUpdateSuggestions:]):

Boilerplate renaming of focus overlay delegate methods.

(-[WKContentView _wheelChangedWithEvent:]):

Remove event forwarding hacks for date and time inputs, now that they directly become first responder.

(-[WKContentView presentFocusedFormControlViewController:]): Deleted.
(-[WKContentView dismissFocusedFormControlViewController:]): Deleted.

Renamed to -addFocusedFormControlOverlay and -removeFocusedFormControlOverlay.

(-[WKContentView dismissAllInputViewControllers]): Deleted.
(-[WKContentView focusedFormControlControllerDidSubmit:]): Deleted.
(-[WKContentView focusedFormControlControllerDidCancel:]): Deleted.
(-[WKContentView focusedFormControlControllerDidBeginEditing:]): Deleted.
(-[WKContentView rectForFocusedFormControlController:inCoordinateSpace:]): Deleted.
(-[WKContentView nextRectForFocusedFormControlController:inCoordinateSpace:]): Deleted.
(-[WKContentView previousRectForFocusedFormControlController:inCoordinateSpace:]): Deleted.
(-[WKContentView scrollViewForFocusedFormControlController:]): Deleted.
(-[WKContentView actionNameForFocusedFormControlController:]): Deleted.
(-[WKContentView focusedFormControlControllerDidRequestNextNode:]): Deleted.
(-[WKContentView focusedFormControlControllerDidRequestPreviousNode:]): Deleted.
(-[WKContentView hasNextNodeForFocusedFormControlController:]): Deleted.
(-[WKContentView hasPreviousNodeForFocusedFormControlController:]): Deleted.

  • UIProcess/ios/forms/WKFocusedFormControlViewController.h: Removed.
  • UIProcess/ios/forms/WKFocusedFormControlViewController.mm: Removed.

Completely remove WKFocusedFormControlViewController; instead, just directly place the focused form overlay in
the WKWebView's hierarchy. In the case where we have a navigation stack to push to, we can no longer modally
present the focused form overlay as a separate view controller using the UINavigationController, and then
immediately push the input view controller on top of the navigation stack, since the navigation stack isn't
updated until after the animation of the focused form overlay presentation is complete. Rather than hack around
this limitation by dispatch_after-ing after presenting the overlay's view controller, we should just make the
overlay a view. This also fixes the case where a client embedding a WKWebView that is smaller than the bounds of
the screen will no longer see the entire screen dim when focusing an input, but instead, just the web content.

  • WebKit.xcodeproj/project.pbxproj:
1:58 PM Changeset in webkit [230546] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.13

Tag Safari-606.1.13.

1:38 PM Changeset in webkit [230545] by Jonathan Bedard
  • 2 edits in trunk/Tools

Fix TestInvocation class for newer versions of clang.
https://bugs.webkit.org/show_bug.cgi?id=184508
<rdar://problem/39328648>

Reviewed by Alexey Proskuryakov.

Declare TestInvocation to be final so it does not require a virtual destructor.

  • WebKitTestRunner/TestInvocation.h:
1:29 PM Changeset in webkit [230544] by commit-queue@webkit.org
  • 14 edits
    1 add in trunk/Source/WebCore

Cache glyphs (using display lists) when painting at high frequency
https://bugs.webkit.org/show_bug.cgi?id=178750
<rdar://problem/35201729>

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2018-04-11
Reviewed by Antti Koivisto.

This patch adds support for caching of glyph drawing commands when painting
at high frequency. Caching the glyph drawing will be done using DisplayLists.

GlyphDisplayListCache is basically a hash map which maps InlineTextBox
or SimpleLineLayout::Run to DisplayList. Before adding a new entry to it
we have to check whether the conditions for caching the glyph DisplayList
are met or not. If no entry is found for a given run, a new DisplayList
is created and a new entry is add to the cache.

  • WebCore.xcodeproj/project.pbxproj:
  • page/MemoryRelease.cpp:

(WebCore::releaseNoncriticalMemory): Make GlyphDisplayListCache respond
to memory pressure.

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::displayListForTextRun const):

  • platform/graphics/FontCascade.h:

(WebCore::FontCascade::displayListForTextRun):
Record the drawing of a glyph run into a DisplayList.

  • rendering/GlyphDisplayListCache.h: Added.

(WebCore::GlyphDisplayListCache::singleton):
(WebCore::GlyphDisplayListCache::get):
(WebCore::GlyphDisplayListCache::remove):
(WebCore::GlyphDisplayListCache::clear):
(WebCore::GlyphDisplayListCache::size const):
(WebCore::GlyphDisplayListCache::sizeInBytes const):
A simple cache for the TextRun DisplayList. Adding a new entry in the
cache happens under restricted conditions. So this cache is not expected
to grow much.

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::~InlineTextBox):
(WebCore::InlineTextBox::paint):
(WebCore::InlineTextBox::paintMarkedTexts):
(WebCore::InlineTextBox::paintMarkedTextBackground):
(WebCore::InlineTextBox::paintMarkedTextForeground):
(WebCore::InlineTextBox::paintMarkedTextDecoration):
(WebCore::InlineTextBox::paintCompositionBackground):
(WebCore::InlineTextBox::paintCompositionUnderlines const):
(WebCore::InlineTextBox::paintCompositionUnderline const):

  • rendering/InlineTextBox.h:

(WebCore::InlineTextBox::paintMarkedTexts):
InlineTextBox::paintMarkedTextForeground() now requires PaintInfo to know
whether the entry in the GlyphDisplayListCache should be removed or not.
Change all the GraphicsContext arguments to be PaintInfo.

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::Layout::~Layout):

  • rendering/SimpleLineLayout.h:
  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::paintFlow):
(WebCore::SimpleLineLayout::simpleLineLayoutWillBeDeleted):

  • rendering/SimpleLineLayoutFunctions.h:
  • rendering/SimpleLineLayoutResolver.h:

(WebCore::SimpleLineLayout::RunResolver::Run::simpleRun const):
Implement the glyph caching for SimpleLineLayout::Run.

  • rendering/TextPainter.cpp:

(WebCore::TextPainter::paintTextOrEmphasisMarks): If the DisplayList is
available, replay it back into the GraphicsContext. Make sure to reset to
the DisplayList pointer to nullptr after painting.

(WebCore::TextPainter::clearGlyphDisplayLists):
(WebCore::TextPainter::shouldUseGlyphDisplayList): Check whether we should
use DisplayList to the draw glyph run.

  • rendering/TextPainter.h:

(WebCore::TextPainter::setGlyphDisplayListIfNeeded): Check whether we should
should use DisplayList to the draw glyph run and if we should, ensure first
the DisplayList is cached and set it in the TextPainter so it uses it when
the run is painted.

(WebCore::TextPainter::removeGlyphDisplayList): Remove the cached DisplayList
entry for a glyph layout run.

1:02 PM Changeset in webkit [230543] by Yusuke Suzuki
  • 5 edits
    1 delete in trunk/Source/JavaScriptCore

[DFG] Remove CompareSlowPathGenerator
https://bugs.webkit.org/show_bug.cgi?id=184492

Reviewed by Mark Lam.

Now CompareSlowPathGenerator is just calling a specified function.
This can be altered with slowPathCall. This patch removes CompareSlowPathGenerator.

We also remove some of unnecessary USE(JSVALUE32_64) / USE(JSVALUE64) ifdefs by
introducing a new constructor for GPRTemporary.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGCompareSlowPathGenerator.h: Removed.
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::GPRTemporary::GPRTemporary):
(JSC::DFG::SpeculativeJIT::compileIsCellWithType):
(JSC::DFG::SpeculativeJIT::compileIsTypedArrayView):
(JSC::DFG::SpeculativeJIT::compileToObjectOrCallObjectConstructor):
(JSC::DFG::SpeculativeJIT::compileIsObject):
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::GPRTemporary::GPRTemporary):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq):

12:52 PM Changeset in webkit [230542] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

GraphicsLayerCA::createPlatformCALayer always disables extended color in its backing store
https://bugs.webkit.org/show_bug.cgi?id=184367
<rdar://problem/39249074>

Reviewed by Simon Fraser.

'createPlatformCALayer' always passes a nil widget, which early returns from 'screenSupportsExtendedColor'
with false. Instead, we should just pass the widget (nil or not) to the screen properties methods,
which will use the primary screen if no screen is specified. I.e., we shouldn't do an early return
here if the passed widget is nil.

  • platform/mac/PlatformScreenMac.mm:

(WebCore::screenSupportsExtendedColor):

12:05 PM Changeset in webkit [230541] by youenn@apple.com
  • 15 edits in trunk/Source

Pass FetchOptions and SecurityOrigin as load parameters from WebProcess to NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=184374

Reviewed by Chris Dumez.

Source/WebCore:

Add support for SecurityOrigin encode/decode routines.

  • page/SecurityOrigin.h:

Source/WebKit:

Pass full FetchOptions parameters as part of NetworkResourceLoadParameters.
This will allow handling redirection mode as well as credentials in case of cross origin redirections.
In case of SameOrigin credentials and there is a redirection from same-origin to cross-origin,
we will be able to stop using credentials without going to WebProcess.

To handle properly cross-origin checks, we have to be able to use SecurityOrigin as in WebProcess.
We make WebProcess sends Origin Access White list information to NetworkProcess.
This allows supporting the white list when doing loading in NetworkProcess.
This only works consistently if all WebProcesses share the same whitelist.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::loadPing):
(WebKit::NetworkConnectionToWebProcess::addOriginAccessWhitelistEntry):
(WebKit::NetworkConnectionToWebProcess::removeOriginAccessWhitelistEntry):
(WebKit::NetworkConnectionToWebProcess::resetOriginAccessWhitelists):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::NetworkLoadChecker):
(WebKit::NetworkLoadChecker::checkRedirection):
(WebKit::NetworkLoadChecker::continueCheckingRequest):
(WebKit::NetworkLoadChecker::checkCORSRequest):
(WebKit::NetworkLoadChecker::checkCORSRedirectedRequest):
(WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
(WebKit::NetworkLoadChecker::doesNotNeedCORSCheck const):

  • NetworkProcess/NetworkLoadChecker.h:

(WebKit::NetworkLoadChecker::create):

  • NetworkProcess/NetworkResourceLoadParameters.cpp:

(WebKit::NetworkResourceLoadParameters::encode const):
(WebKit::NetworkResourceLoadParameters::decode):

  • NetworkProcess/NetworkResourceLoadParameters.h:
  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::PingLoad):
(WebKit::PingLoad::willPerformHTTPRedirection):

  • NetworkProcess/PingLoad.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::addOriginAccessWhitelistEntry):
(WebKit::InjectedBundle::removeOriginAccessWhitelistEntry):
(WebKit::InjectedBundle::resetOriginAccessWhitelists):

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::startPingLoad):

11:33 AM Changeset in webkit [230540] by commit-queue@webkit.org
  • 16 edits in trunk

[GStreamer] Use of playbin3 when USE_PLAYBIN3 environment variable is set
https://bugs.webkit.org/show_bug.cgi?id=184498

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

.:

This is the same behaviour as with playbin itself.

Make sure to keep using "playbin" for MediaSource.

  • Source/cmake/GStreamerDefinitions.cmake:

Source/WebCore:

[GStreamer] Use of playbin3 when USE_PLAYBIN3 environment variable is set

This is the same behaviour as with playbin itself.

Make sure to keep using "playbin" for MediaSource.

No test added as this is basically a small rework of the way we expose a feature.

  • platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp:
  • platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h:
  • platform/graphics/gstreamer/GRefPtrGStreamer.cpp:
  • platform/graphics/gstreamer/GRefPtrGStreamer.h:
  • platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp:
  • platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::load):
(WebCore::MediaPlayerPrivateGStreamer::enableTrack):
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:

(WebCore::TrackPrivateBaseGStreamer::disconnect):
(WebCore::TrackPrivateBaseGStreamer::tagsChanged):

  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h:
  • platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp:
  • platform/graphics/gstreamer/VideoTrackPrivateGStreamer.h:
11:15 AM Changeset in webkit [230539] by Kocsen Chung
  • 4 edits in branches/safari-605-branch/Source/JavaScriptCore

Unreviewed follow-up fix for r230376. rdar://problem/39317885.

11:15 AM Changeset in webkit [230538] by Kocsen Chung
  • 6 edits in branches/safari-605-branch/Source

Cherry-pick r230467. rdar://problem/39317878

Refactor Ignore HSTS code
https://bugs.webkit.org/show_bug.cgi?id=184433
<rdar://problem/39298238>

Reviewed by Darin Adler.

This patch refactors our ignore HSTS code. The convenience functions are moved
out of CFNetwork SPI in PAL, and into where they are used. It also switches
from performSelector: calls to straight function calls, after checking that
there is a responder.

Source/WebCore:

  • platform/network/mac/WebCoreURLResponse.mm: (WebCore::schemeWasUpgradedDueToDynamicHSTS):

Add convenience function here since it was moved out of
CFNetworkSPI.h.

Source/WebCore/PAL:

  • pal/spi/cf/CFNetworkSPI.h: (schemeWasUpgradedDueToDynamicHSTS): Deleted. (setIgnoreHSTS): Deleted. (ignoreHSTS): Deleted.

Source/WebKit:

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (schemeWasUpgradedDueToDynamicHSTS): (setIgnoreHSTS): (ignoreHSTS):

Add convenience functions here since they were moved out of
CFNetworkSPI.h.

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

11:15 AM Changeset in webkit [230537] by Kocsen Chung
  • 2 edits in branches/safari-605-branch/Source/JavaScriptCore

Cherry-pick r230379. rdar://problem/39317885

Unreviewed, follow-up patch for DFG 32bit
https://bugs.webkit.org/show_bug.cgi?id=183970

  • dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::cachedGetById):

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

11:14 AM Changeset in webkit [230536] by Kocsen Chung
  • 60 edits
    4 adds in branches/safari-605-branch

Cherry-pick r230376. rdar://problem/39317885

[JSC] Introduce op_get_by_id_direct
https://bugs.webkit.org/show_bug.cgi?id=183970

Reviewed by Filip Pizlo.

JSTests:

  • stress/generator-prototype-copy.js: Added. (gen): (catch): Adopted JF's tests.
  • stress/generator-type-check.js: Added. (shouldThrow): (foo2): (i.shouldThrow):
  • stress/get-by-id-direct-getter.js: Added. (shouldBe): (shouldThrow): (obj.get hello): (builtin.createBuiltin): (obj2.get length):
  • stress/get-by-id-direct.js: Added. (shouldBe): (shouldThrow): (builtin.createBuiltin):
  • test262.yaml: We fixed long-standing spec compatibility issue. As a result, this patch makes several test262 tests passed!

Source/JavaScriptCore:

This patch introduces op_get_by_id_direct bytecode. This is super similar to op_get_by_id.
But it just performs GetOwnProperty? operation instead of Get?. We support this
in all the tiers, so using this opcode does not lead to inefficiency.

Main purpose of this op_get_by_id_direct is using it for private properties. We are using
properties indexed with private symbols to implement ECMAScript internal fields. Before this
patch, we just use get and put operations. However, it is not the correct semantics: accessing
to the internal fields should not traverse prototype chain, which is specified in the spec.
We use op_get_by_id_direct to access to properties which are used internal fields, so that
prototype chains are not traversed.

To emit op_get_by_id_direct, we introduce a new bytecode intrinsic @getByIdDirectPrivate().
When you write @getByIdDirectPrivate(object, "name"), the bytecode generator emits the
bytecode op_get_by_id_direct, object, @name.

  • builtins/ArrayIteratorPrototype.js: (next): (globalPrivate.arrayIteratorValueNext): (globalPrivate.arrayIteratorKeyNext): (globalPrivate.arrayIteratorKeyValueNext):
  • builtins/AsyncFromSyncIteratorPrototype.js:
  • builtins/AsyncFunctionPrototype.js: (globalPrivate.asyncFunctionResume):
  • builtins/AsyncGeneratorPrototype.js: (globalPrivate.asyncGeneratorQueueIsEmpty): (globalPrivate.asyncGeneratorQueueEnqueue): (globalPrivate.asyncGeneratorQueueDequeue): (globalPrivate.asyncGeneratorDequeue): (globalPrivate.isExecutionState): (globalPrivate.isSuspendYieldState): (globalPrivate.asyncGeneratorReject): (globalPrivate.asyncGeneratorResolve): (globalPrivate.doAsyncGeneratorBodyCall): (globalPrivate.asyncGeneratorEnqueue):
  • builtins/GeneratorPrototype.js: (globalPrivate.generatorResume): (next): (return): (throw):
  • builtins/MapIteratorPrototype.js: (next):
  • builtins/PromiseOperations.js: (globalPrivate.isPromise): (globalPrivate.rejectPromise): (globalPrivate.fulfillPromise):
  • builtins/PromisePrototype.js: (then):
  • builtins/SetIteratorPrototype.js: (next):
  • builtins/StringIteratorPrototype.js: (next):
  • builtins/TypedArrayConstructor.js: (of): (from):
  • bytecode/BytecodeDumper.cpp: (JSC::BytecodeDumper<Block>::dumpBytecode):
  • bytecode/BytecodeIntrinsicRegistry.h:
  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h: (JSC::computeUsesForBytecodeOffset): (JSC::computeDefsForBytecodeOffset):
  • bytecode/CodeBlock.cpp: (JSC::CodeBlock::finishCreation): (JSC::CodeBlock::finalizeLLIntInlineCaches):
  • bytecode/GetByIdStatus.cpp: (JSC::GetByIdStatus::computeFromLLInt): (JSC::GetByIdStatus::computeFor):
  • bytecode/StructureStubInfo.cpp: (JSC::StructureStubInfo::reset):
  • bytecode/StructureStubInfo.h: (JSC::appropriateOptimizingGetByIdFunction): (JSC::appropriateGenericGetByIdFunction):
  • bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::emitDirectGetById):
  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp: (JSC::BytecodeIntrinsicNode::emit_intrinsic_getByIdDirect): (JSC::BytecodeIntrinsicNode::emit_intrinsic_getByIdDirectPrivate):
  • dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
  • dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::handleGetById): (JSC::DFG::ByteCodeParser::parseBlock):
  • dfg/DFGCapabilities.cpp: (JSC::DFG::capabilityLevel):
  • dfg/DFGClobberize.h: (JSC::DFG::clobberize):
  • dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants):
  • dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC):
  • dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode):
  • dfg/DFGNode.h: (JSC::DFG::Node::convertToGetByOffset): (JSC::DFG::Node::convertToMultiGetByOffset): (JSC::DFG::Node::hasIdentifier): (JSC::DFG::Node::hasHeapPrediction):
  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute):
  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileGetById): (JSC::DFG::SpeculativeJIT::compileGetByIdFlush): (JSC::DFG::SpeculativeJIT::compileTryGetById): Deleted.
  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::cachedGetById): (JSC::DFG::SpeculativeJIT::compile):
  • dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::cachedGetById): (JSC::DFG::SpeculativeJIT::compile):
  • ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile):
  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileNode): (JSC::FTL::DFG::LowerDFGToB3::compileGetById): (JSC::FTL::DFG::LowerDFGToB3::compileGetByIdWithThis): (JSC::FTL::DFG::LowerDFGToB3::getById):
  • jit/JIT.cpp: (JSC::JIT::privateCompileMainPass): (JSC::JIT::privateCompileSlowCases):
  • jit/JIT.h:
  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • jit/JITPropertyAccess.cpp: (JSC::JIT::emit_op_get_by_id_direct): (JSC::JIT::emitSlow_op_get_by_id_direct):
  • jit/JITPropertyAccess32_64.cpp: (JSC::JIT::emit_op_get_by_id_direct): (JSC::JIT::emitSlow_op_get_by_id_direct):
  • jit/Repatch.cpp: (JSC::appropriateOptimizingGetByIdFunction): (JSC::appropriateGetByIdFunction): (JSC::tryCacheGetByID): (JSC::repatchGetByID): (JSC::appropriateGenericGetByIdFunction): Deleted.
  • jit/Repatch.h:
  • llint/LLIntSlowPaths.cpp: (JSC::LLInt::LLINT_SLOW_PATH_DECL):
  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h: (JSC::JSValue::getOwnPropertySlot const):
  • runtime/JSObject.h:
  • runtime/JSObjectInlines.h: (JSC::JSObject::getOwnPropertySlotInline):

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

10:56 AM Changeset in webkit [230535] by bshafiei@apple.com
  • 2 edits in tags/Safari-606.1.12.0.1/Source/WebCore

Cherry-pick r230265. rdar://problem/39179126

10:39 AM Changeset in webkit [230534] by bshafiei@apple.com
  • 7 edits in tags/Safari-606.1.12.0.1/Source

Versioning.

10:31 AM Changeset in webkit [230533] by achristensen@apple.com
  • 4 edits in trunk

IDN spoofing with Hebrew combining characters
https://bugs.webkit.org/show_bug.cgi?id=184472
<rdar://problem/39148687>

Reviewed by Brent Fulgham.

Source/WebCore:

Covered by new API tests.

  • platform/mac/WebCoreNSURLExtras.mm:

(WebCore::isLookalikeCharacter):
Punycode-encode hosts with Hebrew combining marks that look like dots
and Vav with a combining dot above like we do with dotless i and j.

Tools:

  • TestWebKitAPI/Tests/WebCore/cocoa/URLExtras.mm:

(TestWebKitAPI::TEST):

10:28 AM Changeset in webkit [230532] by bshafiei@apple.com
  • 1 copy in tags/Safari-606.1.12.0.1

Tag Safari-606.1.12.0.1.

10:27 AM Changeset in webkit [230531] by aboya@igalia.com
  • 8 edits
    22 adds in trunk/LayoutTests

[GTK] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=184506

  • TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/media-source/mediasource-is-type-supported-expected.txt:
  • platform/ios-wk1/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
10:03 AM Changeset in webkit [230530] by Brent Fulgham
  • 5 edits in trunk

Show punycode if URL contains Latin dum character
https://bugs.webkit.org/show_bug.cgi?id=184477
<rdar://problem/39121999>

Reviewed by David Kilzer.

Source/WebCore:

Revise our "lookalike character" logic to include the small
Latin dum character.

Test: fast/url/host.html

  • platform/mac/WebCoreNSURLExtras.mm:

(WebCore::isLookalikeCharacter):

LayoutTests:

  • fast/url/host-expected.txt:
  • fast/url/host.html:
9:58 AM Changeset in webkit [230529] by Michael Catanzaro
  • 12 edits in trunk/Source

[GTK] WaylandCompositorDisplay leaks its wl_display
https://bugs.webkit.org/show_bug.cgi?id=184406

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Well, this was harder than expected. We really just want to fix a small leak in the WebKit
layer, but that requires a change in how WaylandCompositorDisplay calls the
PlatformDisplayWayland constructor, to pass NativeDisplayOwned::Yes. That means
WaylandCompositorDisplay can no longer use PlatformDisplayWayland's protected default
constructor. Problem is that the normal PlatformDisplayWayland constructor calls
PlatformDisplayWayland::initialize, which calls PlatformDisplayWayland::registryGlobal,
which is a virtual function. The WaylandCompositorDisplay portion of the object is not
constructed yet at this point, so WaylandCompositorDisplay::registryGlobal will never be
called if we do that. I had to revert the previous version of this fix due to this problem.
It had broken accelerated compositing.

I'm reminded of Effective C++ item #9: Never call virtual functions during construction or
destruction ("because such calls will never go to a more derived class than that of the
currently executing constructor or destructor"). This code is fragile and likely to break
again in the future, so let's refactor it a bit. Instead of calling initialize in the
constructor, we'll call it from create functions. We'll have to add a couple create
functions, and make the constructor protected to ensure it's not possible to create a
PlatformDisplayWayland without initializing it. For good parallelism, do the same for the
other PlatformDisplay classes.

This commit additionally removes PlatformDisplayWayland's protected default constructor,
since it's not needed anymore.

The NativeDisplayOwned arguments to the PlatformDisplay constructors are now mandatory,
instead of using NativeDisplayOwned::No as the default value, since that was dangerously
close to being the cause of this leak, and the constructors are now accessed from private
create functions anyway. Some more caution when using default parameter values is warranted
in the future.

Lastly, since we have to change PlatformDisplay::createPlatformDisplay to use the new create
functions, take the opportunity to move things around a bit for clarity. There should be no
change in behavior. I was just disappointed that the PlatformDisplayWPE creation was at the
bottom of the function, after a comment indicating that normal display creation has failed,
which is not the case for WPE.

This all might have been a bit overkill, since the leak could probably have been fixed by
passing nullptr to the PlatformDisplayWayland constructor for the wl_display and not
removing WaylandCompositorDisplay's call to PlatformDisplayWayland::initialize. But the
correctness of that code would then rely on implementation details of initialize, so this
refactor seems better.

No new tests since there *should* be no behavior change. Then again, I'm touching
PlatformDisplay, and history shows we don't have the greatest track record of touching this
code without introducing problems.

  • platform/graphics/PlatformDisplay.cpp:

(WebCore::PlatformDisplay::createPlatformDisplay):

  • platform/graphics/PlatformDisplay.h:
  • platform/graphics/wayland/PlatformDisplayWayland.cpp:

(WebCore::PlatformDisplayWayland::create):
(WebCore::PlatformDisplayWayland::create):
(WebCore::PlatformDisplayWayland::createHeadless):
(WebCore::PlatformDisplayWayland::PlatformDisplayWayland):
(WebCore::PlatformDisplayWayland::initialize):

  • platform/graphics/wayland/PlatformDisplayWayland.h:
  • platform/graphics/win/PlatformDisplayWin.h:
  • platform/graphics/wpe/PlatformDisplayWPE.cpp:

(WebCore::create):

  • platform/graphics/wpe/PlatformDisplayWPE.h:
  • platform/graphics/x11/PlatformDisplayX11.cpp:

(WebCore::PlatformDisplayX11::create):
(WebCore::PlatformDisplayX11::create):
(WebCore::PlatformDisplayX11::createHeadless):

  • platform/graphics/x11/PlatformDisplayX11.h:

Source/WebKit:

Since we allocate our own wl_display here, need to chain up to the parent constructor
passing NativeDisplayOwned::Yes, or it won't ever be released. Move the initialize call to
the create function to ensure it's called after the constructor completes.

  • WebProcess/gtk/WaylandCompositorDisplay.cpp:

(WebKit::WaylandCompositorDisplay::create): Fix a log message (drive-by).
(WebKit::WaylandCompositorDisplay::WaylandCompositorDisplay):

9:56 AM Changeset in webkit [230528] by youenn@apple.com
  • 5 edits in trunk/Source/WebKit

Use more r-values in NetworkResourceLoader
https://bugs.webkit.org/show_bug.cgi?id=184478

Reviewed by Chris Dumez.

Pass load parameters as r-values to remove some unneeded copies.
Ditto for ResourceRequest inside NetworkResourceLoader.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::scheduleResourceLoad):
(WebKit::NetworkConnectionToWebProcess::performSynchronousLoad):

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

(WebKit::NetworkResourceLoader::NetworkResourceLoader):
(WebKit::NetworkResourceLoader::start):
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
(WebKit::NetworkResourceLoader::startNetworkLoad):
(WebKit::NetworkResourceLoader::continueWillSendRequest):
(WebKit::NetworkResourceLoader::validateCacheEntry):

  • NetworkProcess/NetworkResourceLoader.h:
9:43 AM Changeset in webkit [230527] by Wenson Hsieh
  • 20 edits
    1 copy
    1 add in trunk

[Extra zoom mode] Missing label when focusing a <select> with a title attribute but no associated <label>
https://bugs.webkit.org/show_bug.cgi?id=184352
<rdar://problem/39237683>

Reviewed by Andy Estes.

Source/WebKit:

Currently, AssistedNodeInformation only sends the title of input elements to the UI process. This means that
any information requested in the UI process that is dependent on the title of the focused element is broken
in the case of select elements. An existing example of this is the title of the table view controller used to
present select menus on iPad.

To fix this, we simply send the title of the focused element across, as long as the focused element is an
HTMLElement. This ensures that there's label text when focusing unlabeled select elements with titles in extra
zoom mode, and also fixes a currenly broken codepath where we show the title of the select in the presented view
controller's title.

Test: fast/forms/ios/ipad/select-with-title.html

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView selectFormPopoverTitle]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:

Add new testing SPI to fetch the title of the UITableViewController presented for the currently focused select
element.

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

(-[WKContentView selectFormPopoverTitle]):

  • UIProcess/ios/forms/WKFormSelectControl.h:
  • UIProcess/ios/forms/WKFormSelectControl.mm:

(-[WKFormSelectControl selectFormPopoverTitle]):

  • UIProcess/ios/forms/WKFormSelectPopover.h:
  • UIProcess/ios/forms/WKFormSelectPopover.mm:

(-[WKSelectPopover initWithView:hasGroups:]):
(-[WKSelectPopover tableViewController]):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

Always send the title across if the focused node is an HTMLElement.

(WebKit::WebPage::getAssistedNodeInformation):

Tools:

Add support for UIScriptController::selectFormPopoverTitle, which returns the title of the current select
popover's UITableViewController (for testing purposes).

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::selectFormPopoverTitle const):

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

(WTR::UIScriptController::selectFormPopoverTitle const):

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

(WTR::UIScriptController::selectFormPopoverTitle const):

LayoutTests:

Add a new layout test to check that the title of select elements is propagated to the UI process upon focus.
This title is used for several purposes, one of them being the title of select menus in the table view
controller presented when tapping on a select on an iPad, so the test checks that the title of the select is
shown here.

Also moves a select-related helper into UIHelper from basic-gestures.js (since this doesn't involve user gesture
simulation in any way) and also introduces a new UIHelper method for querying the title of the select menu that
is currently being presented.

  • fast/forms/ios/ipad/multiple-select-updates-renderer.html:
  • fast/forms/ios/ipad/select-with-title-expected.txt: Added.
  • fast/forms/ios/ipad/select-with-title.html: Copied from LayoutTests/fast/forms/ios/ipad/multiple-select-updates-renderer.html.
  • resources/basic-gestures.js:
  • resources/ui-helper.js:

(window.UIHelper.selectFormAccessoryPickerRow):
(window.UIHelper.selectFormPopoverTitle):
(window.UIHelper):

9:22 AM WebKitGTK/Gardening/Calendar edited by aboya@igalia.com
(diff)
9:22 AM WebKitGTK/Gardening/Calendar edited by aboya@igalia.com
(diff)
9:01 AM Changeset in webkit [230526] by Ryan Haddad
  • 13 edits in trunk/Source/WebKit

Unreviewed, rolling out r230508.

Breaks internal builds.

Reverted changeset:

"Remove block selection code"
https://bugs.webkit.org/show_bug.cgi?id=184470
https://trac.webkit.org/changeset/230508

8:58 AM Changeset in webkit [230525] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark imported/w3c/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-in-object-fallback.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=184456

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
8:28 AM Changeset in webkit [230524] by commit-queue@webkit.org
  • 4 edits in trunk

Fix a WebRTC data channel issue for non-ASCII characters.

At the sender side, buffer size are calulcated after UTF8 encoding. At the
receiver side, strings are constructed with UTF8 data.

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

Patch by Jianjun Zhu <jianjun.zhu@intel.com> on 2018-04-11
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/RTCDataChannel-send-expected.txt:

Source/WebCore:

Updated test:
LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCDataChannel-send-expected.txt

  • Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:

(WebCore::LibWebRTCDataChannelHandler::sendStringData):
(WebCore::LibWebRTCDataChannelHandler::OnMessage):

7:29 AM Changeset in webkit [230523] by pvollan@apple.com
  • 2 edits in trunk/Source/WTF

Deactivate the WindowServer connection for the WebContent process.
https://bugs.webkit.org/show_bug.cgi?id=184451
<rdar://problem/38313938>

Reviewed by Brent Fulgham.

Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
process startup. After calling this function, every attempt to establish a connection to the
WindowServer from the WebContent process will fail, except for CA render server connections.

  • wtf/FeatureDefines.h:
6:47 AM Changeset in webkit [230522] by Antti Koivisto
  • 21 edits
    2 copies in trunk/Source/WebCore

ImageFrame type used by non-Cocoa image decoder should not be the same as that used by ImageSource
https://bugs.webkit.org/show_bug.cgi?id=184418

Reviewed by Said Abou-Hallawa.

ScalableImageDecoder uses ImageFrame class which is meant to be an implementation detail of ImageSource.
There are bunch of fields and methods in the type that are only used by one or the other client. For hackability
there should be an unrelated frame type for ScalableImageDecoder.

This patch adds ScalableImageDecoderFrame type used in ScalableImageDecoder only. It then cleans up
unneeded things from both ImageFrame and ScalableImageDecoderFrame.

  • platform/ImageDecoders.cmake:
  • platform/graphics/ImageFrame.cpp:

(WebCore::ImageFrame::operator=):
(WebCore::ImageFrame::clearImage):
(WebCore::ImageFrame::size const):
(WebCore::ImageFrame::initialize): Deleted.

  • platform/graphics/ImageFrame.h:

(WebCore::ImageFrame::setDisposalMethod): Deleted.
(WebCore::ImageFrame::disposalMethod const): Deleted.
(WebCore::ImageFrame::backingStore const): Deleted.
(WebCore::ImageFrame::hasBackingStore const): Deleted.

  • platform/image-decoders/ScalableImageDecoder.cpp:

(WebCore::ScalableImageDecoder::frameIsCompleteAtIndex const):
(WebCore::ScalableImageDecoder::frameDurationAtIndex const):
(WebCore::ScalableImageDecoder::createFrameImageAtIndex):

  • platform/image-decoders/ScalableImageDecoder.h:
  • platform/image-decoders/ScalableImageDecoderFrame.cpp: Copied from Source/WebCore/platform/graphics/ImageFrame.cpp.

(WebCore::ScalableImageDecoderFrame::ScalableImageDecoderFrame):
(WebCore::ScalableImageDecoderFrame::~ScalableImageDecoderFrame):
(WebCore::ScalableImageDecoderFrame::operator=):
(WebCore::ScalableImageDecoderFrame::setDecodingStatus):
(WebCore::ScalableImageDecoderFrame::decodingStatus const):
(WebCore::ScalableImageDecoderFrame::clearImage):
(WebCore::ScalableImageDecoderFrame::clear):
(WebCore::ScalableImageDecoderFrame::initialize):
(WebCore::ScalableImageDecoderFrame::size const):
(WebCore::ImageFrame::ImageFrame): Deleted.
(WebCore::ImageFrame::~ImageFrame): Deleted.
(WebCore::ImageFrame::defaultFrame): Deleted.
(WebCore::ImageFrame::operator=): Deleted.
(WebCore::ImageFrame::setDecodingStatus): Deleted.
(WebCore::ImageFrame::decodingStatus const): Deleted.
(WebCore::ImageFrame::clearImage): Deleted.
(WebCore::ImageFrame::clear): Deleted.
(WebCore::ImageFrame::initialize): Deleted.
(WebCore::ImageFrame::size const): Deleted.
(WebCore::ImageFrame::hasNativeImage const): Deleted.
(WebCore::ImageFrame::hasFullSizeNativeImage const): Deleted.
(WebCore::ImageFrame::hasDecodedNativeImageCompatibleWithOptions const): Deleted.
(WebCore::ImageFrame::singlePixelSolidColor const): Deleted.

  • platform/image-decoders/ScalableImageDecoderFrame.h: Copied from Source/WebCore/platform/graphics/ImageFrame.h.

(WebCore::ScalableImageDecoderFrame::ScalableImageDecoderFrame):
(WebCore::ScalableImageDecoderFrame::disposalMethod const):
(WebCore::ScalableImageDecoderFrame::hasAlpha const):
(WebCore::ScalableImageDecoderFrame::hasBackingStore const):
(WebCore::ImageFrame::ImageFrame): Deleted.
(WebCore::ImageFrame::isInvalid const): Deleted.
(WebCore::ImageFrame::isPartial const): Deleted.
(WebCore::ImageFrame::isComplete const): Deleted.
(WebCore::ImageFrame::sizeRespectingOrientation const): Deleted.
(WebCore::ImageFrame::frameBytes const): Deleted.
(WebCore::ImageFrame::subsamplingLevel const): Deleted.
(WebCore::ImageFrame::setDisposalMethod): Deleted.
(WebCore::ImageFrame::disposalMethod const): Deleted.
(WebCore::ImageFrame::nativeImage const): Deleted.
(WebCore::ImageFrame::setOrientation): Deleted.
(WebCore::ImageFrame::orientation const): Deleted.
(WebCore::ImageFrame::setDuration): Deleted.
(WebCore::ImageFrame::duration const): Deleted.
(WebCore::ImageFrame::setHasAlpha): Deleted.
(WebCore::ImageFrame::hasAlpha const): Deleted.
(WebCore::ImageFrame::hasNativeImage): Deleted.
(WebCore::ImageFrame::hasFullSizeNativeImage): Deleted.
(WebCore::ImageFrame::hasMetadata const): Deleted.
(WebCore::ImageFrame::backingStore const): Deleted.
(WebCore::ImageFrame::hasBackingStore const): Deleted.

  • platform/image-decoders/bmp/BMPImageDecoder.cpp:

(WebCore::BMPImageDecoder::frameBufferAtIndex):

  • platform/image-decoders/bmp/BMPImageDecoder.h:
  • platform/image-decoders/bmp/BMPImageReader.h:

(WebCore::BMPImageReader::setBuffer):

  • platform/image-decoders/gif/GIFImageDecoder.cpp:

(WebCore::GIFImageDecoder::findFirstRequiredFrameToDecode):
(WebCore::GIFImageDecoder::frameBufferAtIndex):
(WebCore::GIFImageDecoder::clearFrameBufferCache):
(WebCore::GIFImageDecoder::haveDecodedRow):
(WebCore::GIFImageDecoder::frameComplete):
(WebCore::GIFImageDecoder::initFrameBuffer):

  • platform/image-decoders/gif/GIFImageDecoder.h:
  • platform/image-decoders/gif/GIFImageReader.cpp:

(GIFImageReader::parse):

  • platform/image-decoders/gif/GIFImageReader.h:

(GIFFrameContext::GIFFrameContext):

  • platform/image-decoders/ico/ICOImageDecoder.cpp:

(WebCore::ICOImageDecoder::frameBufferAtIndex):

  • platform/image-decoders/ico/ICOImageDecoder.h:
  • platform/image-decoders/jpeg/JPEGImageDecoder.cpp:

(WebCore::JPEGImageDecoder::frameBufferAtIndex):
(WebCore::setPixel):
(WebCore::JPEGImageDecoder::outputScanlines):
(WebCore::JPEGImageDecoder::jpegComplete):

  • platform/image-decoders/jpeg/JPEGImageDecoder.h:
  • platform/image-decoders/png/PNGImageDecoder.cpp:

(WebCore::PNGImageDecoder::frameBufferAtIndex):
(WebCore::PNGImageDecoder::rowAvailable):
(WebCore::PNGImageDecoder::readChunks):
(WebCore::PNGImageDecoder::clearFrameBufferCache):
(WebCore::PNGImageDecoder::initFrameBuffer):
(WebCore::PNGImageDecoder::frameComplete):

  • platform/image-decoders/png/PNGImageDecoder.h:
  • platform/image-decoders/webp/WEBPImageDecoder.cpp:

(WebCore::WEBPImageDecoder::frameBufferAtIndex):
(WebCore::WEBPImageDecoder::findFirstRequiredFrameToDecode):
(WebCore::WEBPImageDecoder::decodeFrame):
(WebCore::WEBPImageDecoder::initFrameBuffer):
(WebCore::WEBPImageDecoder::applyPostProcessing):
(WebCore::WEBPImageDecoder::clearFrameBufferCache):

  • platform/image-decoders/webp/WEBPImageDecoder.h:
5:05 AM Changeset in webkit [230521] by commit-queue@webkit.org
  • 4 edits in trunk/Source

[Web Animations] Turn Web Animations on by default
https://bugs.webkit.org/show_bug.cgi?id=184491

Patch by Antoine Quint <Antoine Quint> on 2018-04-11
Reviewed by Simon Fraser.

Source/WebCore:

  • page/RuntimeEnabledFeatures.h:

Source/WebKit:

  • Shared/WebPreferences.yaml:
2:37 AM Changeset in webkit [230520] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, build fix for 32bit
https://bugs.webkit.org/show_bug.cgi?id=184236

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetDirectPname):

2:36 AM Changeset in webkit [230519] by zandobersek@gmail.com
  • 2 edits
    70 adds
    66 deletes in trunk/LayoutTests

Unreviewed WPE gardening. Updating expectations and moving baselines
for EME and WebCryptoAPI tests after W3C sync in r230445.

  • platform/wpe/TestExpectations:
  • platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/: Updated.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/: Updated.
1:57 AM Changeset in webkit [230518] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Fix warning in HashTools.h for newer versions of clang
https://bugs.webkit.org/show_bug.cgi?id=184489

Reviewed by Alexey Proskuryakov.

Removed "register" storage class specififer as it has been deprecated in C++11.

  • platform/HashTools.h:
12:44 AM Changeset in webkit [230517] by Yusuke Suzuki
  • 11 edits
    1 add in trunk/Source/JavaScriptCore

[DFG] Remove duplicate 32bit code more
https://bugs.webkit.org/show_bug.cgi?id=184236

Reviewed by Mark Lam.

Remove duplicate 32bit code more aggressively part 2.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGCompareSlowPathGenerator.h: Added.

(JSC::DFG::CompareSlowPathGenerator::CompareSlowPathGenerator):
Drop boxing part. Use unblessedBooleanResult in DFGSpeculativeJIT side instead.

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileOverridesHasInstance):
(JSC::DFG::SpeculativeJIT::compileLoadVarargs):
(JSC::DFG::SpeculativeJIT::compileIsObject):
(JSC::DFG::SpeculativeJIT::compileCheckNotEmpty):
(JSC::DFG::SpeculativeJIT::compilePutByIdFlush):
(JSC::DFG::SpeculativeJIT::compilePutById):
(JSC::DFG::SpeculativeJIT::compilePutByIdDirect):
(JSC::DFG::SpeculativeJIT::compileNewArrayWithSize):
(JSC::DFG::SpeculativeJIT::compileMiscStrictEq):
(JSC::DFG::SpeculativeJIT::emitInitializeButterfly):
(JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize):
(JSC::DFG::SpeculativeJIT::compileHasIndexedProperty):
(JSC::DFG::SpeculativeJIT::compileGetDirectPname):
(JSC::DFG::SpeculativeJIT::compileExtractCatchLocal):
(JSC::DFG::SpeculativeJIT::cachedPutById):
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
(JSC::DFG::SpeculativeJIT::nonSpeculativeCompare): Deleted.

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::selectScratchGPR): Deleted.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::cachedPutById): Deleted.
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch): Deleted.
(JSC::DFG::CompareAndBoxBooleanSlowPathGenerator::CompareAndBoxBooleanSlowPathGenerator): Deleted.
(JSC::DFG::CompareAndBoxBooleanSlowPathGenerator::generateInternal): Deleted.
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare): Deleted.
(JSC::DFG::SpeculativeJIT::compileMiscStrictEq): Deleted.
(JSC::DFG::SpeculativeJIT::emitInitializeButterfly): Deleted.
(JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize): Deleted.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::cachedPutById): Deleted.
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch): Deleted.
(JSC::DFG::CompareAndBoxBooleanSlowPathGenerator::CompareAndBoxBooleanSlowPathGenerator): Deleted.
(): Deleted.
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare): Deleted.
(JSC::DFG::SpeculativeJIT::compileMiscStrictEq): Deleted.
(JSC::DFG::SpeculativeJIT::emitInitializeButterfly): Deleted.
(JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize): Deleted.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileHasIndexedProperty):
operationHasIndexedPropertyByInt starts returning unblessed boolean with size_t.

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::loadValue):
(JSC::AssemblyHelpers::selectScratchGPR):
(JSC::AssemblyHelpers::constructRegisterSet):

  • jit/RegisterSet.h:

(JSC::RegisterSet::setAny):
Clean up selectScratchGPR code to pass JSValueRegs.

Apr 10, 2018:

10:49 PM Changeset in webkit [230516] by Caio Lima
  • 27 edits
    5 adds in trunk

[ESNext][BigInt] Add support for BigInt in SpeculatedType
https://bugs.webkit.org/show_bug.cgi?id=182470

Reviewed by Saam Barati.

JSTests:

  • stress/big-int-spec-to-primitive.js: Added.
  • stress/big-int-spec-to-this.js: Added.
  • stress/big-int-strict-equals-jit.js: Added.
  • stress/big-int-strict-spec-to-this.js: Added.
  • stress/big-int-type-of-proven-type.js: Added.

Source/JavaScriptCore:

This patch introduces the SpecBigInt type to DFG to enable BigInt
speculation into DFG and FTL.

With SpecBigInt introduction, we can then specialize "===" operations
to BigInts. As we are doing for some cells, we first check if operands
are pointing to the same JSCell, and if it is false, we
fallback to "operationCompareStrictEqCell". The idea in further
patches is to implement BigInt equality check directly in
assembly.

We are also adding support for BigInt constant folding into
TypeOf operation.

  • bytecode/SpeculatedType.cpp:

(JSC::dumpSpeculation):
(JSC::speculationFromClassInfo):
(JSC::speculationFromStructure):
(JSC::speculationFromJSType):
(JSC::speculationFromString):

  • bytecode/SpeculatedType.h:

(JSC::isBigIntSpeculation):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGAbstractValue.cpp:

(JSC::DFG::AbstractValue::set):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::fixupToThis):
(JSC::DFG::FixupPhase::observeUseKindOnNode):

  • dfg/DFGInferredTypeCheck.cpp:

(JSC::DFG::insertInferredTypeCheck):

  • dfg/DFGNode.h:

(JSC::DFG::Node::shouldSpeculateBigInt):

  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::SafeToExecuteEdge::operator()):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileStrictEq):
(JSC::DFG::SpeculativeJIT::speculateBigInt):
(JSC::DFG::SpeculativeJIT::speculate):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compileBigIntEquality):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compileBigIntEquality):

  • dfg/DFGUseKind.cpp:

(WTF::printInternal):

  • dfg/DFGUseKind.h:

(JSC::DFG::typeFilterFor):
(JSC::DFG::isCell):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
(JSC::FTL::DFG::LowerDFGToB3::checkInferredType):
(JSC::FTL::DFG::LowerDFGToB3::speculate):
(JSC::FTL::DFG::LowerDFGToB3::isNotBigInt):
(JSC::FTL::DFG::LowerDFGToB3::speculateBigInt):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::branchIfNotType):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::branchIfBigInt):
(JSC::AssemblyHelpers::branchIfNotBigInt):

  • runtime/InferredType.cpp:

(JSC::InferredType::Descriptor::forValue):
(JSC::InferredType::Descriptor::putByIdFlags const):
(JSC::InferredType::Descriptor::merge):
(WTF::printInternal):

  • runtime/InferredType.h:
  • runtime/JSBigInt.h:
9:57 PM Changeset in webkit [230515] by sbarati@apple.com
  • 2 edits in trunk/Source/bmalloc

IsoHeapImpl::scavenge* needs to grab the lock
https://bugs.webkit.org/show_bug.cgi?id=184461

Reviewed by Filip Pizlo.

Another thread could be modifying the linked list that the scavenge* methods traverse.

  • bmalloc/IsoHeapImplInlines.h:

(bmalloc::IsoHeapImpl<Config>::scavenge):
(bmalloc::IsoHeapImpl<Config>::scavengeToHighWatermark):

9:16 PM Changeset in webkit [230514] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

Unreviewed test fix after r230468

Roll out an assertion added in r230468 that should not be present
until https://bugs.webkit.org/show_bug.cgi?id=184451 is landed.

  • Shared/mac/HangDetectionDisablerMac.mm:

(WebKit::setClientsMayIgnoreEvents):

8:44 PM Changeset in webkit [230513] by Wenson Hsieh
  • 3 edits
    2 adds in trunk

FrameSelection::appearanceUpdateTimerFired should be robust against layout passes underneath it
https://bugs.webkit.org/show_bug.cgi?id=183395
<rdar://problem/38055732>

Reviewed by Zalan Bujtas.

Source/WebCore:

In the case where a FrameSelection updates its appearance when m_appearanceUpdateTimer is fired, the
FrameSelection's Frame is unprotected, and can be removed by arbitrary script. This patch applies a simple
mitigation by wrapping the Frame in a Ref when firing the appearance update timer.

Test: editing/selection/iframe-update-selection-appearance.html

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::appearanceUpdateTimerFired):

LayoutTests:

Add a new layout test that passes if we didn't crash.

  • editing/selection/iframe-update-selection-appearance-expected.txt: Added.
  • editing/selection/iframe-update-selection-appearance.html: Added.
7:49 PM Changeset in webkit [230512] by Brent Fulgham
  • 5 edits in trunk/Source

Unreviewed follow-up to r230468.

Switch some RELEASE_ASSERTs in hot codepaths to normal DEBUG asserts.

Source/WebCore:

  • page/mac/EventHandlerMac.mm:

(WebCore::lastEventIsMouseUp):
(WebCore::EventHandler::sendFakeEventsAfterWidgetTracking):

  • platform/mac/EventLoopMac.mm:

(WebCore::EventLoop::cycle):

Source/WebKit:

  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::isViewWindowActive):
(WebKit::PageClientImpl::setCursor):

7:46 PM Changeset in webkit [230511] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix the iOS build

I accidentally exported an inline function in r230506.

  • page/ViewportConfiguration.h:

(WebCore::ViewportConfiguration::viewSize const):

7:08 PM Changeset in webkit [230510] by n_wang@apple.com
  • 6 edits
    2 adds in trunk

AX: Expose strong password fields on iOS
https://bugs.webkit.org/show_bug.cgi?id=184465
<rdar://problem/39325104>

Reviewed by Chris Fleizach.

Source/WebCore:

Exposed the strong password field on iOS. And made sure
we are returning its actual value in accessibilityValue.

Test: accessibility/ios-simulator/strong-password-field.html

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper _accessibilityIsStrongPasswordField]):
(-[WebAccessibilityObjectWrapper accessibilityValue]):

Tools:

  • DumpRenderTree/ios/AccessibilityUIElementIOS.mm:

(AccessibilityUIElement::boolAttributeValue):

  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::boolAttributeValue):

LayoutTests:

  • accessibility/ios-simulator/strong-password-field-expected.txt: Added.
  • accessibility/ios-simulator/strong-password-field.html: Added.
6:52 PM Changeset in webkit [230509] by Fujii Hironori
  • 4 edits
    1 add in trunk/Source

[Win] Add UserAgentWin.cpp
https://bugs.webkit.org/show_bug.cgi?id=184438

Reviewed by Michael Catanzaro.

Source/WebCore:

No new tests (No behavior change).

  • PlatformWin.cmake:
  • platform/win/UserAgentWin.cpp: Added.

(WebCore::standardUserAgent):
(WebCore::standardUserAgentForURL):

Source/WebKit:

  • WebProcess/WebPage/win/WebPageWin.cpp:

(WebKit::WebPage::platformUserAgent const):
Use WebCore::standardUserAgentForURL.

6:26 PM Changeset in webkit [230508] by Megan Gardner
  • 13 edits in trunk/Source/WebKit

Remove block selection code
https://bugs.webkit.org/show_bug.cgi?id=184470

Reviewed by Timothy Hatcher.

Remove block selection code that isn't run and is currently not even used.
Had to put this back in for a bug in the mid-year release, but we're past that
so it's time for this to go away.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::stopAssistingNode):
(WebKit::PageClientImpl::didUpdateBlockSelectionWithTouch): Deleted.

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

(toSelectionHandlePosition): Deleted.
(-[WKContentView _didUpdateBlockSelectionWithTouch:withFlags:growThreshold:shrinkThreshold:]): Deleted.
(-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:]): Deleted.
(-[WKContentView changeBlockSelectionWithTouchAt:withSelectionTouch:forHandle:]): Deleted.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::saveImageToLibrary):
(WebKit::WebPageProxy::updateBlockSelectionWithTouch): Deleted.
(WebKit::WebPageProxy::didUpdateBlockSelectionWithTouch): Deleted.

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

(WebKit::rangeAtWordBoundaryForPosition):
(WebKit::distanceBetweenRectsForPosition): Deleted.
(WebKit::rectsEssentiallyTheSame): Deleted.
(WebKit::unionDOMRanges): Deleted.
(WebKit::computeEdgeCenter): Deleted.
(WebKit::WebPage::expandedRangeFromHandle): Deleted.
(WebKit::WebPage::contractedRangeFromHandle): Deleted.
(WebKit::WebPage::computeExpandAndShrinkThresholdsForHandle): Deleted.
(WebKit::WebPage::rangeForBlockAtPoint): Deleted.
(WebKit::shouldExpand): Deleted.
(WebKit::WebPage::changeBlockSelection): Deleted.
(WebKit::WebPage::updateBlockSelectionWithTouch): Deleted.

6:25 PM Changeset in webkit [230507] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark legacy-animation-engine/compositing tests as failures on Windows.
https://bugs.webkit.org/show_bug.cgi?id=184482

Unreviewed test gardening.

  • platform/win/TestExpectations:
6:02 PM Changeset in webkit [230506] by Wenson Hsieh
  • 14 edits in trunk/Source

[Extra zoom mode] Add a mechanism to zoom to fixed scales when double tapping in extra zoom mode
https://bugs.webkit.org/show_bug.cgi?id=184435
<rdar://problem/38726260>

Reviewed by Dean Jackson.

Source/WebCore:

Expose the size of the platform view. By default, in extra zoom mode, this *not* the same as the minimum layout
size, since we lay out at a large width and then shrink down to real device dimensions when computing the
initial scale (see r229063).

ViewGestureGeometryCollector uses this in the process of computing a target zoom scale when double tapping.

  • page/ViewportConfiguration.h:

(WebCore::ViewportConfiguration::viewSize const):

Source/WebKit:

Adds support for an alternate codepath when computing a zoom rect when double tapping that doesn't take the hit-
tested node into account, and instead cycles the zoom scale between 2 fixed values (in addition to the initial
scale). In the next patch, these fixed scales will be determined by computing zoom scales needed to make most of
the text on the page legible (i.e. the first text legibility zoom scale), and another to make all of the text on
the page legible, with the exception of outliers (this is the second text legibility zoom scale).

See comments below for more detail.

  • UIProcess/Cocoa/ViewGestureController.h:
  • UIProcess/Cocoa/ViewGestureController.messages.in:
  • UIProcess/ios/SmartMagnificationController.h:
  • UIProcess/ios/SmartMagnificationController.messages.in:
  • UIProcess/ios/SmartMagnificationController.mm:

(WebKit::SmartMagnificationController::didCollectGeometryForSmartMagnificationGesture):

  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::didCollectGeometryForSmartMagnificationGesture):

  • WebProcess/WebPage/ViewGestureGeometryCollector.cpp:

(WebKit::ViewGestureGeometryCollector::dispatchDidCollectGeometryForSmartMagnificationGesture):

Rename the boolean isReplacedElement argument to fitEntireRect instead. The UI process only uses this on iOS
to determine whether or not to fit the entire element rect to the viewport and add padding. This patch renames
this variable because we are not zooming to a replaced element in the case where text legibility on the page
(rather than element geometry) is being used to figure out the zoom scale, but we still want to fit the entire
target rect to the viewport.

(WebKit::ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture):

If text legiblity zoom scaling is preferred, then compute first and second-level text legibility zoom scales to
zoom to upon double tap (where the second zoom scale is greater than the first). To choose a target zoom
scale, choose the lowest target zoom scale that is at least a small amount less than the current scale. If
neither of the two scales fulfill this description, then zoom back out to the initial scale. This has the effect
of consistently cycling between all three zoom scales as the user double taps.

(WebKit::ViewGestureGeometryCollector::computeTextLegibilityScales):

Introduce a new helper method that computes and caches target scales to zoom to when double tapping to zoom. If
a cached pair of target scales is already present, it skips this computation and immediately returns it.

(WebKit::ViewGestureGeometryCollector::computeZoomInformationForNode):
(WebKit::ViewGestureGeometryCollector::computeMinimumAndMaximumViewportScales const):

Factor out logic to compute min and max zoom scales into a separate helper, and call it from both
computeZoomInformationForNode and computeTextLegibilityScales.

(WebKit::ViewGestureGeometryCollector::mainFrameDidLayout):

Invalidate cached text legibility scales when layout is triggered.

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

(WebKit::WebPage::mainFrameDidLayout):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::viewportConfiguration const):

Expose WebPage's ViewportConfiguration as a const reference.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::platformPrefersTextLegibilityBasedZoomScaling const):

Adds a platform hook for opting into text-legibility-based zoom scaling instead of regular hit-testing-based
zoom scaling heuristics.

5:41 PM Changeset in webkit [230505] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Fix availability annotations for _WKAttachment SPI
https://bugs.webkit.org/show_bug.cgi?id=184473
<rdar://problem/39319732>

Reviewed by Dan Bernstein.

_WKAttachmentInfo is available in WK_MAC_TBA and WK_IOS_TBA, but the SPI method -[_WKAttachment requestInfo:]
is currently available in macOS 10.13.4 and iOS 11.3. Instead, the availability of this SPI should match the
availability of the SPI object it depends on.

  • UIProcess/API/Cocoa/_WKAttachment.h:
5:39 PM Changeset in webkit [230504] by Fujii Hironori
  • 2 edits
    1 add in trunk/Source/WebCore

[Win][WebKit] LibWebRTCProvider::webRTCAvailable is an undefined symbol
https://bugs.webkit.org/show_bug.cgi?id=184437

Reviewed by Michael Catanzaro.

No new tests (No behavior change).

  • PlatformWin.cmake: Added LibWebRTCProviderWin.cpp.
  • platform/mediastream/libwebrtc/LibWebRTCProviderWin.cpp: Added.

(WebCore::LibWebRTCProvider::webRTCAvailable):

5:23 PM WebKitGTK/2.20.x edited by Adrian Perez de Castro
(diff)
4:42 PM Changeset in webkit [230503] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark legacy-animation-engine/animations/animation-callback-timestamp.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=184459

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:38 PM Changeset in webkit [230502] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Unreviewed build fix.

Those enum value names were too generic and would cause conflicts.

  • Modules/webvr/VRDisplayCapabilities.h:

(WebCore::VRDisplayCapabilities::hasPosition const):
(WebCore::VRDisplayCapabilities::hasOrientation const):
(WebCore::VRDisplayCapabilities::hasExternalDisplay const):
(WebCore::VRDisplayCapabilities::canPresent const):

  • platform/vr/VRPlatformDisplay.h:
  • platform/vr/openvr/VRPlatformDisplayOpenVR.cpp:

(WebCore::VRPlatformDisplayOpenVR::VRPlatformDisplayOpenVR):

4:34 PM Changeset in webkit [230501] by sbarati@apple.com
  • 20 edits
    1 add in trunk/Source/bmalloc

bmalloc should do partial scavenges more frequently
https://bugs.webkit.org/show_bug.cgi?id=184176

Reviewed by Filip Pizlo.

This patch adds the ability for bmalloc to do a partial scavenge.
bmalloc will now do a partial scavenge with some frequency even
when the heap is growing.

For Heap, this means tracking the high water mark of where the Heap
has allocated since the last scavenge. Partial scavenging is just
decommitting entries in the LargeMap that are past this high water
mark. Because we allocate in first fit order out of LargeMap, tracking
the high water mark is a good heuristic of how much memory a partial
scavenge should decommit.

For IsoHeaps, each IsoDirectory also keeps track of its high water mark
for the furthest page it allocates into. Similar to Heap, we scavenge pages
past that high water mark. IsoHeapImpl then tracks the high water mark
for the IsoDirectory it allocates into. We then scavenge all directories
including and past the directory high water mark. This includes scavenging
the inline directory when its the only thing we allocate out of since
the last scavenge.

This patch also adds some other capabilities to bmalloc:

Heaps and IsoHeaps now track how much memory is freeable. Querying
this number is now cheap.

Heaps no longer hold the global lock when decommitting large ranges.
Instead, that range is just marked as non eligible to be allocated.
Then, without the lock held, the scavenger will decommit those ranges.
Once this is done, the scavenger will then reacquire the lock and mark
these ranges as eligible. This lessens lock contention between the
scavenger and the allocation slow path since threads that are taking an
allocation slow path can now allocate concurrently to the scavenger's
decommits. The main consideration in adding this functionality is that
a large allocation may fail while the scavenger is in the process of
decommitting memory. When the Heap fails to allocate a large range when
the scavenger is in the middle of a decommit, Heap will wait for the
Scavenger to finish and then it will try to allocate a large range again.

Decommitting from Heap now aggregates the ranges to decommit and tries to
merge them together to lower the number of calls to vmDeallocatePhysicalPages.
This is analogous to what IsoHeaps already do.

  • bmalloc.xcodeproj/project.pbxproj:
  • bmalloc/Allocator.cpp:

(bmalloc::Allocator::tryAllocate):
(bmalloc::Allocator::allocateImpl):
(bmalloc::Allocator::reallocate):
(bmalloc::Allocator::refillAllocatorSlowCase):
(bmalloc::Allocator::allocateLarge):

  • bmalloc/BulkDecommit.h: Added.

(bmalloc::BulkDecommit::addEager):
(bmalloc::BulkDecommit::addLazy):
(bmalloc::BulkDecommit::processEager):
(bmalloc::BulkDecommit::processLazy):
(bmalloc::BulkDecommit::add):
(bmalloc::BulkDecommit::process):

  • bmalloc/Deallocator.cpp:

(bmalloc::Deallocator::scavenge):
(bmalloc::Deallocator::processObjectLog):
(bmalloc::Deallocator::deallocateSlowCase):

  • bmalloc/Deallocator.h:

(bmalloc::Deallocator::lineCache):

  • bmalloc/Heap.cpp:

(bmalloc::Heap::freeableMemory):
(bmalloc::Heap::markAllLargeAsEligibile):
(bmalloc::Heap::decommitLargeRange):
(bmalloc::Heap::scavenge):
(bmalloc::Heap::scavengeToHighWatermark):
(bmalloc::Heap::deallocateLineCache):
(bmalloc::Heap::allocateSmallChunk):
(bmalloc::Heap::deallocateSmallChunk):
(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::deallocateSmallLine):
(bmalloc::Heap::allocateSmallBumpRangesByMetadata):
(bmalloc::Heap::allocateSmallBumpRangesByObject):
(bmalloc::Heap::splitAndAllocate):
(bmalloc::Heap::tryAllocateLarge):
(bmalloc::Heap::allocateLarge):
(bmalloc::Heap::isLarge):
(bmalloc::Heap::largeSize):
(bmalloc::Heap::shrinkLarge):
(bmalloc::Heap::deallocateLarge):
(bmalloc::Heap::externalCommit):
(bmalloc::Heap::externalDecommit):

  • bmalloc/Heap.h:

(bmalloc::Heap::allocateSmallBumpRanges):
(bmalloc::Heap::derefSmallLine):

  • bmalloc/IsoDirectory.h:
  • bmalloc/IsoDirectoryInlines.h:

(bmalloc::passedNumPages>::takeFirstEligible):
(bmalloc::passedNumPages>::didBecome):
(bmalloc::passedNumPages>::didDecommit):
(bmalloc::passedNumPages>::scavengePage):
(bmalloc::passedNumPages>::scavenge):
(bmalloc::passedNumPages>::scavengeToHighWatermark):
(bmalloc::passedNumPages>::freeableMemory): Deleted.

  • bmalloc/IsoHeapImpl.h:
  • bmalloc/IsoHeapImplInlines.h:

(bmalloc::IsoHeapImpl<Config>::takeFirstEligible):
(bmalloc::IsoHeapImpl<Config>::scavenge):
(bmalloc::IsoHeapImpl<Config>::scavengeToHighWatermark):
(bmalloc::IsoHeapImpl<Config>::freeableMemory):
(bmalloc::IsoHeapImpl<Config>::isNowFreeable):
(bmalloc::IsoHeapImpl<Config>::isNoLongerFreeable):

  • bmalloc/LargeMap.cpp:

(bmalloc::LargeMap::remove):
(bmalloc::LargeMap::markAllAsEligibile):

  • bmalloc/LargeMap.h:

(bmalloc::LargeMap::size):
(bmalloc::LargeMap::at):

  • bmalloc/LargeRange.h:

(bmalloc::LargeRange::setEligible):
(bmalloc::LargeRange::isEligibile const):
(bmalloc::canMerge):

  • bmalloc/ObjectType.cpp:

(bmalloc::objectType):

  • bmalloc/Scavenger.cpp:

(bmalloc::PrintTime::PrintTime):
(bmalloc::PrintTime::~PrintTime):
(bmalloc::PrintTime::print):
(bmalloc::Scavenger::timeSinceLastFullScavenge):
(bmalloc::Scavenger::timeSinceLastPartialScavenge):
(bmalloc::Scavenger::scavenge):
(bmalloc::Scavenger::partialScavenge):
(bmalloc::Scavenger::freeableMemory):
(bmalloc::Scavenger::threadRunLoop):

  • bmalloc/Scavenger.h:
  • bmalloc/SmallLine.h:

(bmalloc::SmallLine::refCount):
(bmalloc::SmallLine::ref):
(bmalloc::SmallLine::deref):

  • bmalloc/SmallPage.h:

(bmalloc::SmallPage::refCount):
(bmalloc::SmallPage::hasFreeLines const):
(bmalloc::SmallPage::setHasFreeLines):
(bmalloc::SmallPage::ref):
(bmalloc::SmallPage::deref):

  • bmalloc/bmalloc.cpp:

(bmalloc::api::tryLargeZeroedMemalignVirtual):
(bmalloc::api::freeLargeVirtual):

4:19 PM Changeset in webkit [230500] by Chris Dumez
  • 6 edits in trunk/Source

Avoid constructing a service worker RegistrationStore for private sessions
https://bugs.webkit.org/show_bug.cgi?id=184463
<rdar://problem/36613948>

Reviewed by Youenn Fablet.

Avoid constructing a service worker RegistrationStore for private sessions since there
is no need for persistence and the registrationDatabaseDirectory is the empty string in
such cases.

Source/WebCore:

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::removeRegistration):
(WebCore::SWServer::clearAll):
(WebCore::SWServer::clear):
(WebCore::SWServer::SWServer):
(WebCore::SWServer::didFinishActivation):

  • workers/service/server/SWServer.h:

Source/WebKit:

  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::initializeWebsiteDataStore):

4:06 PM Changeset in webkit [230499] by Keith Rollin
  • 6 edits in trunk/LayoutTests

http/tests/security/shape-image-cors-redirect-error-message-logging-*.html tests are flaky
https://bugs.webkit.org/show_bug.cgi?id=155634
<rdar://problem/39326489>

Reviewed by Youenn Fablet.

These tests no longer appear to be flaky. I believe they were
addressed in <https://trac.webkit.org/changeset/217069/webkit>. After
enabling the test and rebasing the results, I ran run-webkit-tests
with --repeat-each=20 --iterations=20, and then I wrapped the
run-webkit-tests command in a loop that invoked it 20 times.

  • TestExpectations:
  • http/tests/security/shape-image-cors-redirect-error-message-logging-1-expected.txt:
  • http/tests/security/shape-image-cors-redirect-error-message-logging-2-expected.txt:
  • http/tests/security/shape-image-cors-redirect-error-message-logging-3-expected.txt:
  • http/tests/security/shape-image-cors-redirect-error-message-logging-4-expected.txt:
3:48 PM Changeset in webkit [230498] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Unreviewed build fix.

  • page/LayoutContext.cpp:

(WebCore::LayoutContext::~LayoutContext):

  • page/LayoutContext.h:
3:35 PM Changeset in webkit [230497] by aestes@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Navigate to URL and page number annotations in WKPDFView
https://bugs.webkit.org/show_bug.cgi?id=184410

Reviewed by Timothy Hatcher.

Implemented navigation to URL and page number (same-document) link annotations in PDFs.

  • UIProcess/ios/WKPDFView.mm:

(-[WKPDFView _scrollToURLFragment:]):
(-[WKPDFView web_didSameDocumentNavigation:]):
(-[WKPDFView pdfHostViewController:updatePageCount:]):
(-[WKPDFView pdfHostViewController:goToURL:]):
(-[WKPDFView pdfHostViewController:goToPageIndex:withViewFrustum:]):

3:26 PM Changeset in webkit [230496] by aestes@apple.com
  • 3 edits in trunk/Source/WebKit

[iOS] WKPDFView should conform to _WKWebViewPrintProvider
https://bugs.webkit.org/show_bug.cgi?id=184471

Reviewed by Dan Bernstein.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _printProvider]):

The print provider will always be either _contentView or _customContentView, but
might not be _currentContentView.

  • UIProcess/ios/WKPDFView.mm:

(-[WKPDFView _wk_pageCountForPrintFormatter:]):

Asked _hostViewController for the page count, clamped to 1 if
-[_WKWebViewPrintFormatter snapshotFirstPage] is YES.

(-[WKPDFView _wk_printedDocument]):

Created a CGPDFDocumentRef from _data and returned it.

3:16 PM Changeset in webkit [230495] by youenn@apple.com
  • 7 edits
    2 adds in trunk

Beacon redirect responses should be CORS validated
https://bugs.webkit.org/show_bug.cgi?id=184378

Reviewed by Chris Dumez.

Source/WebKit:

Add CORS checks to any redirection response if mode is CORS.
Update response tainting and redirected accordingly.

  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::checkRedirection):
(WebKit::NetworkLoadChecker::validateResponse):

  • NetworkProcess/NetworkLoadChecker.h:
  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::willPerformHTTPRedirection):

LayoutTests:

  • TestExpectations:
  • http/wpt/beacon/cors/cors-redirect-failure-expected.txt: Added.
  • http/wpt/beacon/cors/cors-redirect-failure.html: Added.
  • http/wpt/beacon/resources/redirect.py:

(main):

2:16 PM Changeset in webkit [230494] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix cloop build.

  • dfg/DFGAbstractInterpreterClobberState.cpp:
2:13 PM Changeset in webkit [230493] by youenn@apple.com
  • 4 edits in trunk/LayoutTests

webrtc/datachannel/bufferedAmountLowThreshold tests are failing on WK1
https://bugs.webkit.org/show_bug.cgi?id=184427

Reviewed by Eric Carlson.

Decrease the size of the string sent as one chunk as it may create timeouts.
Instead, we will call more often the send method untile reaching the threshold.

  • platform/mac-wk1/TestExpectations:
  • webrtc/datachannel/bufferedAmountLowThreshold-default.html:
  • webrtc/datachannel/bufferedAmountLowThreshold.html:
2:13 PM Changeset in webkit [230492] by youenn@apple.com
  • 2 edits
    1 add in trunk/Source/ThirdParty/libwebrtc

webrtc/datachannel/basic-tcp.html will crash with an invalid crash
https://bugs.webkit.org/show_bug.cgi?id=178285
<rdar://problem/34985374>

Reviewed by Eric Carlson.

Disable SIGPIPE for WebRTC sockets on Mac as well.

  • Source/webrtc/rtc_base/physicalsocketserver.cc:
  • WebKit/0001-Disable-SIGPIPE-for-WebRTC-sockets.patch: Added.
1:58 PM Changeset in webkit [230491] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Make the ASSERT in MarkedSpace::sizeClassToIndex() a RELEASE_ASSERT.
https://bugs.webkit.org/show_bug.cgi?id=184464
<rdar://problem/39323947>

Reviewed by Saam Barati.

  • heap/MarkedSpace.h:

(JSC::MarkedSpace::sizeClassToIndex):

1:31 PM Changeset in webkit [230490] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

MediaSessionManageriOS should defer creation of MPVolumeView until it needs to monitor AirPlay routes
https://bugs.webkit.org/show_bug.cgi?id=184373
<rdar://problem/35177606>

Patch by Jeremy Jones <jeremyj@apple.com> on 2018-04-10
Reviewed by Eric Carlson.

No change of behavior.

This delays the creation of MPVolumeView until airplay routes are monitored.
MPVolumeView is now also released when monitoring ends.
This makes sure the MP* objects are only accessed from a UI safe thread. WebCore's "MainThread" may be different that the UI thread.
Since this state change is necessarily asynchronous, starting and stopping must prevent races to keep state coherent.

  • platform/audio/ios/MediaSessionManagerIOS.mm:

(-[WebMediaSessionHelper initWithCallback:]):
(-[WebMediaSessionHelper dealloc]):
(-[WebMediaSessionHelper startMonitoringAirPlayRoutes]):
(-[WebMediaSessionHelper stopMonitoringAirPlayRoutes]):
(-[WebMediaSessionHelper allocateVolumeView]): Deleted.
(-[WebMediaSessionHelper setVolumeView:]): Deleted.

12:46 PM Changeset in webkit [230489] by commit-queue@webkit.org
  • 7 edits in trunk

Loading of multipart response was cancelled because of content policy set in WebFrameLoaderClient::dispatchDecidePolicyForResponse
https://bugs.webkit.org/show_bug.cgi?id=184268
<rdar://problem/39144446>

Patch by Sihui Liu <sihui_liu@apple.com> on 2018-04-10
Reviewed by Chris Dumez.

Source/WebCore:

The assertion is no longer true after the change, because multiple resources could have same
url. Used if condition here to make sure we only delete specified resource.

No new tests. Updated an existing test to test the stop loading case by not using injected
bundle policy: http/tests/multipart/multipart-html.php.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::removeCachedResource):

Source/WebKit:

Webpage for multipart stream responses failed to refresh because content policy was set to
be ignore when provisonalDocumentLoader was null and navigation ID could not be retrieved.
As loading should not stop in this case, we set navigation ID 0 and still ask for content
policy.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):

LayoutTests:

  • http/tests/multipart/multipart-html-expected.txt:
  • http/tests/multipart/multipart-html.php:
12:45 PM Changeset in webkit [230488] by fpizlo@apple.com
  • 15 edits
    7 adds in trunk

DFG AI and clobberize should agree with each other
https://bugs.webkit.org/show_bug.cgi?id=184440

Reviewed by Saam Barati.

JSTests:

Add tests for all of the bugs I fixed.

  • stress/direct-arguments-out-of-bounds-change-structure.js: Added.

(foo):

  • stress/new-typed-array-cse-effects.js: Added.

(foo):

  • stress/scoped-arguments-out-of-bounds-change-structure.js: Added.

(foo.theO):
(foo):

  • stress/string-from-char-code-change-structure-not-dead.js: Added.

(foo):
(i.valueOf):
(weirdValue.valueOf):

  • stress/string-from-char-code-change-structure.js: Added.

(foo):
(i.valueOf):
(weirdValue.valueOf):

Source/JavaScriptCore:

One way to fix bugs involving underapproximation in AI or clobberize is to assert that they
agree with each other. That's what this patch does: it adds an assertion that AI's structure
state tracking must be equivalent to JSCell_structureID being clobbered.

One subtlety is that AI sometimes folds away structure clobbering using information that
clobberize doesn't have. So, we track this wuth special kinds of AI states (FoldedClobber and
ObservedTransitions).

This fixes a bunch of cases of AI missing clobberStructures/clobberWorld and one case of
clobberize missing a write(Heap).

This also makes some cases more precise in order to appease the assertion. Making things more
precise might make things faster, but I didn't measure it because that wasn't the goal.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • dfg/DFGAbstractInterpreter.h:
  • dfg/DFGAbstractInterpreterClobberState.cpp: Added.

(WTF::printInternal):

  • dfg/DFGAbstractInterpreterClobberState.h: Added.

(JSC::DFG::mergeClobberStates):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::startExecuting):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::didFoldClobberWorld):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::clobberStructures):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::didFoldClobberStructures):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::observeTransition):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::observeTransitions):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::setDidClobber): Deleted.

  • dfg/DFGAtTailAbstractState.h:

(JSC::DFG::AtTailAbstractState::setClobberState):
(JSC::DFG::AtTailAbstractState::mergeClobberState):
(JSC::DFG::AtTailAbstractState::setDidClobber): Deleted.

  • dfg/DFGCFAPhase.cpp:

(JSC::DFG::CFAPhase::performBlockCFA):

  • dfg/DFGClobberSet.cpp:

(JSC::DFG::writeSet):

  • dfg/DFGClobberSet.h:
  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGInPlaceAbstractState.h:

(JSC::DFG::InPlaceAbstractState::clobberState const):
(JSC::DFG::InPlaceAbstractState::didClobberOrFolded const):
(JSC::DFG::InPlaceAbstractState::didClobber const):
(JSC::DFG::InPlaceAbstractState::setClobberState):
(JSC::DFG::InPlaceAbstractState::mergeClobberState):
(JSC::DFG::InPlaceAbstractState::setDidClobber): Deleted.

12:42 PM Changeset in webkit [230487] by aestes@apple.com
  • 11 edits
    1 copy
    1 add in trunk/Source

[iOS] Use PDFKit to render PDFs in WKWebView
https://bugs.webkit.org/show_bug.cgi?id=184387

Reviewed by Beth Dakin.

Source/WebKit:

Adopted PDFHostViewController for rendering PDFs in WKWebView.

This patch implements rendering the PDF document and page number indicator. Link
navigation, find-in-page, and printing will be implemented in follow-up patches.

WKLegacyPDFView is still the default PDF view.

  • Configurations/WebKit.xcconfig:

Linked WebKit with PDFKit on iOS.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _currentContentView]):
(-[WKWebView viewForZoomingInScrollView:]):

When WKPDFView loads a PDF document, it replaces itself with a view vended by
PDFHostViewController as the WKScrollView's content view. Abstracted WKWebView's
concept of the "current content view" to be either the WKContentView or a view of
the custom content view's choosing (-web_contentView).

(-[WKWebView scrollViewWillBeginZooming:withView:]):
(-[WKWebView scrollViewDidZoom:]):
(-[WKWebView scrollViewDidEndZooming:withView:atScale:]):

Forwarded these calls to _customContentView if it responds to the equivalent
WKWebViewContentProvider selectors.

  • UIProcess/Cocoa/WKWebViewContentProvider.h:

Defined new protocol selectors.

  • UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:

(-[WKWebViewContentProviderRegistry init]):

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

Changed ENABLE(WKPDFVIEW) to ENABLE(WKLEGACYPDFVIEW).

(-[WKLegacyPDFView web_contentView]):

Added. Returns self as the content view.

  • UIProcess/ios/WKPDFView.h: Added.
  • UIProcess/ios/WKPDFView.mm: Added.

(-[WKPDFView dealloc]):

Removed the host view and page number indicator from their superviews.

(-[WKPDFView gestureRecognizerShouldBegin:]):

Forwarded to _hostViewController.

(-[WKPDFView web_initWithFrame:webView:]):

Set ours and the scroll view's background color to UIColor.grayColor to match
WKLegacyPDFView.

(-[WKPDFView web_setContentProviderData:suggestedFilename:]):

Created a PDFHostViewController and set its root view as the scroll view's content
view after removing the WKPDFView itself. This allows WKPDFView to act as a
placeholder content view until the PDF is loaded. Added the host view controller's
page number indicator to the fixed overlay view. Finally, loaded the PDF document
by calling -[PDFHostViewController setDocumentData:withScrollView:].

(-[WKPDFView _offsetForPageNumberIndicator]):

Computed an offset for the page number indicator like WKLegacyPDFView did, taking
into account the overlaid accessory views inset, computed unobscured safe area
inset, and computed obscured inset.

(-[WKPDFView _movePageNumberIndicatorToPoint:animated:]):

Moved the page number indicator using the margin and animation duration from
WKLegacyPDFView.

(-[WKPDFView _updateLayoutAnimated:]):

Added a convenience method to update the PDF view layout and position the page
number indicator.

(-[WKPDFView web_setMinimumSize:]):

Updated our own frame in case we are still the placeholder content view.
Called -_updateLayoutAnimated:.

(-[WKPDFView web_setOverlaidAccessoryViewsInset:]):

Stored the inset and called -_updateLayoutAnimated:.

(-[WKPDFView web_computedContentInsetDidChange]):

Called -_updateLayoutAnimated:.

(-[WKPDFView web_setFixedOverlayView:]):

Stored the fixed overlay view.

(-[WKPDFView web_didSameDocumentNavigation:]):
(-[WKPDFView web_countStringMatches:options:maxCount:]):
(-[WKPDFView web_findString:options:maxCount:]):
(-[WKPDFView web_hideFindUI]):

Added FIXMEs.

(-[WKPDFView web_contentView]):

If there is a host view controller, return its root view. Otherwise, return self.

(-[WKPDFView web_scrollViewDidScroll:]):
(-[WKPDFView web_scrollViewWillBeginZooming:withView:]):
(-[WKPDFView web_scrollViewDidEndZooming:withView:atScale:]):
(-[WKPDFView web_scrollViewDidZoom:]):

Called -[PDFHostViewController updatePDFViewLayout].

(-[WKPDFView web_dataRepresentation]):

Returned _data.

(-[WKPDFView web_suggestedFilename]):

Returned _suggestedFilename.

(-[WKPDFView web_isBackground]):

Returned self.isBackground.

  • UIProcess/ios/WKSystemPreviewView.mm:

(-[WKSystemPreviewView web_contentView]):

Added. Returns self as the content view.

  • WebKit.xcodeproj/project.pbxproj:

Source/WTF:

  • wtf/FeatureDefines.h: Defined ENABLE_WKLEGACYPDFVIEW and ENABLE_WKPDFVIEW.
11:04 AM Changeset in webkit [230486] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

ExecutableToCodeBlockEdge::visitChildren() should be cool with m_codeBlock being null since we clear it in finalizeUnconditionally()
https://bugs.webkit.org/show_bug.cgi?id=184460
<rdar://problem/37610966>

Reviewed by Mark Lam.

  • bytecode/ExecutableToCodeBlockEdge.cpp:

(JSC::ExecutableToCodeBlockEdge::visitChildren):

10:57 AM Changeset in webkit [230485] by fpizlo@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

REGRESSION(r227341 and r227742): AI and clobberize should be precise and consistent about the effectfulness of CompareEq
https://bugs.webkit.org/show_bug.cgi?id=184455

Reviewed by Michael Saboff.

LICM is sort of an assertion that AI is as precise as clobberize about effects. If clobberize
says that something is not effectful, then LICM will try to hoist it. But LICM's AI hack
(AtTailAbstractState) cannot handle hoisting of things that have effects. So, if AI thinks that
the thing being hoisted does have effects, then we get a crash.

In r227341, we incorrectly told AI that CompareEq(Untyped:, _) is effectful. In fact, only
ComapreEq(Untyped:, Untyped:) is effectful, and clobberize knew this already. As a result, LICM
would blow up if we hoisted CompareEq(Untyped:, Other:), which clobberize knew wasn't
effectful.

Instead of fixing this by making AI precise, in r227742 we made matters worse by then breaking
clobberize to also think that CompareEq(Untyped:, _) is effectful.

This fixes the whole situation by teaching both clobberize and AI that the only effectful form
of CompareEq is ComapreEq(Untyped:, Untyped:).

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

10:21 AM Changeset in webkit [230484] by Alan Bujtas
  • 5 edits
    1 add in trunk/Tools

[LayoutReloaded] Add support for out-of-flow descendants in inline formatting context.
https://bugs.webkit.org/show_bug.cgi?id=184454

Reviewed by Antti Koivisto.

When the containing block of an out-of-flow positioned element establishes an inline formatting context.
This is mostly about moving out-of-flow logic from BlockFormattingContext to the base class.

  • LayoutReloaded/FormattingContext/BlockFormatting/BlockFormattingContext.js:

(BlockFormattingContext.prototype._adjustBottomWithFIXME):
(BlockFormattingContext):
(BlockFormattingContext.prototype._layoutOutOfFlowDescendants): Deleted.
(BlockFormattingContext.prototype._computeOutOfFlowWidth): Deleted.
(BlockFormattingContext.prototype._computeInFlowWidth): Deleted.
(BlockFormattingContext.prototype._computeOutOfFlowHeight): Deleted.
(BlockFormattingContext.prototype._computeOutOfFlowPosition): Deleted.
(BlockFormattingContext.prototype._shrinkToFitWidth): Deleted.

  • LayoutReloaded/FormattingContext/FormattingContext.js:

(FormattingContext.prototype._placeInFlowPositionedChildren):
(FormattingContext.prototype._computeInFlowWidth):
(FormattingContext.prototype._layoutOutOfFlowDescendants):
(FormattingContext.prototype._computeOutOfFlowWidth):
(FormattingContext.prototype._computeOutOfFlowHeight):
(FormattingContext.prototype._computeOutOfFlowPosition):
(FormattingContext.prototype._shrinkToFitWidth):

  • LayoutReloaded/FormattingContext/InlineFormatting/InlineFormattingContext.js:

(InlineFormattingContext.prototype.layout):
(InlineFormattingContext.prototype._handleInlineContainer):
(InlineFormattingContext.prototype._handleInlineBlockContainer):
(InlineFormattingContext.prototype._placeOutOfFlowDescendants): Deleted.

  • LayoutReloaded/test/index.html:
  • LayoutReloaded/test/inline-with-out-of-flow-descendant.html: Added.
10:07 AM Changeset in webkit [230483] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark imported/w3c/web-platform-tests/workers/name-property.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=184453

Unreviewed test gardening.

9:41 AM Changeset in webkit [230482] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Update test expectations in the new legacy-animation-engine directory.

Unreviewed test gardening.

  • platform/win/TestExpectations:
9:26 AM Changeset in webkit [230481] by magomez@igalia.com
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] Race condition when destroying webprocesses
https://bugs.webkit.org/show_bug.cgi?id=184445

Reviewed by Carlos Garcia Campos.

Ensure that the WebProcess is properly closing its pages when it's exiting because
the UIProcess has invalidated the IPC connection.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::didClose):

7:56 AM Changeset in webkit [230480] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Do not layout images when we only need the overflow information.
https://bugs.webkit.org/show_bug.cgi?id=175331

Reviewed by Simon Fraser.

This improves MotionMark's Simple Leaves by ~10%.

Covered by existing tests.

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::layout):

3:47 AM Changeset in webkit [230479] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebCore

[TexMap] TextureMapperLayer unnecessarily duplicates state in GraphicsLayerTransform
https://bugs.webkit.org/show_bug.cgi?id=183868

Reviewed by Carlos Garcia Campos.

Drop the GraphicsLayerTransform member variable from TextureMapperLayer
and instead compute all the required transform information in the
computeTransformsRecursive() method. These computations are not too
expensive, and in turn we can drop an object from this class' state that
was only duplicating a bunch of state variables.

No new tests -- no change in functionality.

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::computeTransformsRecursive):
(WebCore::TextureMapperLayer::paintSelf):
(WebCore::TextureMapperLayer::paintSelfAndChildren):
(WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica):
(WebCore::TextureMapperLayer::replicaTransform):
(WebCore::TextureMapperLayer::computeOverlapRegions):
(WebCore::TextureMapperLayer::setPosition):
(WebCore::TextureMapperLayer::setSize):
(WebCore::TextureMapperLayer::setAnchorPoint):
(WebCore::TextureMapperLayer::setPreserves3D):
(WebCore::TextureMapperLayer::setTransform):
(WebCore::TextureMapperLayer::setChildrenTransform):
(WebCore::TextureMapperLayer::syncAnimations):
(WebCore::TextureMapperLayer::setScrollPositionDeltaIfNeeded):

  • platform/graphics/texmap/TextureMapperLayer.h:
1:43 AM Changeset in webkit [230478] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.20.1

WebKitGTK+ 2.20.1

1:42 AM Changeset in webkit [230477] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.20

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.20.1 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.20.1.
1:10 AM Changeset in webkit [230476] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.20

REGRESSION(r222772): [GTK][WPE] WebProcess from WebKitGtk+ 2.19.9x SIGSEVs in WebKit::WebProcess::ensureNetworkProcessConnection() at Source/WebKit/WebProcess/WebProcess.cpp:1127
https://bugs.webkit.org/show_bug.cgi?id=183348

Reviewed by Michael Catanzaro.

Source/WebKit:

When connection doesn't exit in case of sync message failure, always exit in case of failing to send
GetNetworkProcessConnection message. This can happen when the WebView is created and destroyed quickly.

  • Platform/IPC/Connection.h:

(IPC::Connection::shouldExitOnSyncMessageSendFailure const):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::ensureNetworkProcessConnection):

Tools:

Add a test case to reproduce the crash.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:

(testWebViewCloseQuickly):
(beforeAll):

1:10 AM Changeset in webkit [230475] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.20/Source

Merge r230442 - Unreviewed, rolling out r230390.

Broke accelerated compositing

Reverted changeset:

"[GTK] WaylandCompositorDisplay leaks its wl_display"
https://bugs.webkit.org/show_bug.cgi?id=184406
https://trac.webkit.org/changeset/230390

12:58 AM Changeset in webkit [230474] by Yusuke Suzuki
  • 3 edits in trunk/Source/bmalloc

[bmalloc] Name Scavenger thread "bmalloc scavenger"
https://bugs.webkit.org/show_bug.cgi?id=166684

Reviewed by Saam Barati.

We name the thread for bmalloc Scavenger "bmalloc scavenger".
It is useful for debugging. In Linux environment, it will be
shown in GDB.

  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::threadRunLoop):
(bmalloc::Scavenger::setName):

  • bmalloc/Scavenger.h:
Note: See TracTimeline for information about the timeline view.