Timeline



Apr 16, 2018:

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

Inconsistent EGL defines in ImageBufferCairo
https://bugs.webkit.org/show_bug.cgi?id=184661

Patch by Pablo Saavedra <Pablo Saavedra> on 2018-04-16
Reviewed by Žan Doberšek.

On revision r219391 libepoxy is added. The headers in
ImageBufferCairo.cpp become inconsistent when 2D canvas is enabled
(-DENABLE_ACCELERATED_2D_CANVAS=ON) due to a redefinition error during
the Webkit build:

...
/usr/include/GLES2/gl2.h:503:82: error: 'voi
epoxy_glAttachShader(GLuint, GLuint)' redeclared as different kind
of symbol
GL_APICALL void GL_APIENTRY glAttachShader (GLuint
program, GLuint shader);

No new tests.

  • platform/graphics/cairo/ImageBufferCairo.cpp:
10:48 PM Changeset in webkit [230701] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Can't select and copy text from Network tab popover
https://bugs.webkit.org/show_bug.cgi?id=184606

Reviewed by Matt Baker.

  • UserInterface/Views/ResourceTimingBreakdownView.css:

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

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

[LayoutReloaded] Add support for replaced box.
https://bugs.webkit.org/show_bug.cgi?id=184680

Reviewed by Antti Koivisto.

Basic support for inline replaced.

  • LayoutReloaded/FormattingContext/InlineFormatting/InlineFormattingContext.js:

(InlineFormattingContext.prototype._handleInlineBox):
(InlineFormattingContext.prototype._handleInlineBlock):
(InlineFormattingContext.prototype._handleReplaced):

  • LayoutReloaded/FormattingContext/InlineFormatting/Line.js:

(Line.prototype.lastLineBox):
(Line.prototype.addInlineBox):
(Line.prototype.addInlineContainerBox): Deleted.

  • LayoutReloaded/TreeBuilder.js:

(TreeBuilder.prototype._createAndAttachBox):

  • LayoutReloaded/Utils.js:

(Utils._dumpBox):

  • LayoutReloaded/test/index.html:
  • LayoutReloaded/test/inline-simple-replaced.html: Added.
8:15 PM Changeset in webkit [230699] by Alan Bujtas
  • 2 edits in trunk/Tools

[LayoutReloaded] Minor InlineFormattingContext::layout() cleanup.
https://bugs.webkit.org/show_bug.cgi?id=184679

Reviewed by Antti Koivisto.

  • LayoutReloaded/FormattingContext/InlineFormatting/InlineFormattingContext.js:

(InlineFormattingContext):
(InlineFormattingContext.prototype.layout):
(InlineFormattingContext.prototype._handleInlineContainer):
(InlineFormattingContext.prototype._handleInlineContent):
(InlineFormattingContext.prototype._handleInlineBlock):
(InlineFormattingContext.prototype._handleReplacedBox):
(InlineFormattingContext.prototype._clearNeedsLayoutAndMoveToNextSibling):
(InlineFormattingContext.prototype._handleInlineBlockContainer): Deleted.
(InlineFormattingContext.prototype._clearAndMoveToNext): Deleted.

8:01 PM Changeset in webkit [230698] by timothy@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed 32-bit build fix for r230673.

https://bugs.webkit.org/show_bug.cgi?id=184657
rdar://problem/39463307

  • Configurations/PluginProcessShim.xcconfig: Use the correct names.
7:38 PM Changeset in webkit [230697] by Yusuke Suzuki
  • 20 edits
    20 adds in trunk

[WebAssembly][Modules] Prototype wasm import
https://bugs.webkit.org/show_bug.cgi?id=184600

Reviewed by JF Bastien.

JSTests:

Add wasm and wat files since module loader want to load wasm files from FS.
Currently, importing the other modules from wasm is not supported.

  • wasm.yaml:
  • wasm/modules/constant.wasm: Added.
  • wasm/modules/constant.wat: Added.
  • wasm/modules/js-wasm-function-namespace.js: Added.

(assert.throws):

  • wasm/modules/js-wasm-function.js: Added.

(assert.throws):

  • wasm/modules/js-wasm-global-namespace.js: Added.

(assert.throws):

  • wasm/modules/js-wasm-global.js: Added.

(assert.throws):

  • wasm/modules/js-wasm-memory-namespace.js: Added.

(assert.throws):

  • wasm/modules/js-wasm-memory.js: Added.

(assert.throws):

  • wasm/modules/js-wasm-start.js: Added.

(then):

  • wasm/modules/js-wasm-table-namespace.js: Added.

(assert.throws):

  • wasm/modules/js-wasm-table.js: Added.

(assert.throws):

  • wasm/modules/memory.wasm: Added.
  • wasm/modules/memory.wat: Added.
  • wasm/modules/start.wasm: Added.
  • wasm/modules/start.wat: Added.
  • wasm/modules/sum.wasm: Added.
  • wasm/modules/sum.wat: Added.
  • wasm/modules/table.wasm: Added.
  • wasm/modules/table.wat: Added.

Source/JavaScriptCore:

This patch is an initial attempt to implement Wasm loading in module pipeline.
Currently,

  1. We only support Wasm loading in the JSC shell. Once loading mechanism is specified in whatwg HTML, we should integrate this into WebCore.
  1. We only support exporting values from Wasm. Wasm module cannot import anything from the other modules now.

When loading a file, JSC shell checks wasm magic. If the wasm magic is found, JSC shell
loads the file with WebAssemblySourceProvider. It is wrapped into JSSourceCode and
module loader pipeline just handles it as the same to JS. When parsing a module, we
checks the type of JSSourceCode. If the source code is Wasm source code, we create a
WebAssemblyModuleRecord instead of JSModuleRecord. Our module pipeline handles
AbstractModuleRecord and Wasm module is instantiated, linked, and evaluated.

  • builtins/ModuleLoaderPrototype.js:

(globalPrivate.newRegistryEntry):
(requestInstantiate):
(link):

  • jsc.cpp:

(convertShebangToJSComment):
(fillBufferWithContentsOfFile):
(fetchModuleFromLocalFileSystem):
(GlobalObject::moduleLoaderFetch):

  • parser/SourceProvider.h:

(JSC::WebAssemblySourceProvider::create):
(JSC::WebAssemblySourceProvider::WebAssemblySourceProvider):

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::hostResolveImportedModule):
(JSC::AbstractModuleRecord::link):
(JSC::AbstractModuleRecord::evaluate):
(JSC::identifierToJSValue): Deleted.

  • runtime/AbstractModuleRecord.h:
  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::evaluate):

  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::link):
(JSC::JSModuleRecord::instantiateDeclarations):

  • runtime/JSModuleRecord.h:
  • runtime/ModuleLoaderPrototype.cpp:

(JSC::moduleLoaderPrototypeParseModule):
(JSC::moduleLoaderPrototypeRequestedModules):
(JSC::moduleLoaderPrototypeModuleDeclarationInstantiation):

  • wasm/js/JSWebAssemblyHelpers.h:

(JSC::getWasmBufferFromValue):
(JSC::createSourceBufferFromValue):

  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::finalizeCreation):
(JSC::JSWebAssemblyInstance::createPrivateModuleKey):
(JSC::JSWebAssemblyInstance::create):

  • wasm/js/JSWebAssemblyInstance.h:
  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::prepareLink):
(JSC::WebAssemblyModuleRecord::link):

  • wasm/js/WebAssemblyModuleRecord.h:
  • wasm/js/WebAssemblyPrototype.cpp:

(JSC::resolve):
(JSC::instantiate):
(JSC::compileAndInstantiate):
(JSC::WebAssemblyPrototype::instantiate):
(JSC::webAssemblyInstantiateFunc):
(JSC::webAssemblyValidateFunc):

  • wasm/js/WebAssemblyPrototype.h:
7:02 PM Changeset in webkit [230696] by Alan Bujtas
  • 1 edit
    2 adds in trunk/Tools

[LayoutReloaded] Introduce fragmentation state/context.
https://bugs.webkit.org/show_bug.cgi?id=184677

Reviewed by Antti Koivisto.

State/context for fragmented content (multicol, regions, pagination etc).

  • LayoutReloaded/FormattingContext/FragmentationContext.js: Added.

(FragmentationContext):

  • LayoutReloaded/FormattingState/FragmentationState.js: Added.

(FragmentationState):
(FragmentationState.prototype.formattingState):

6:56 PM Changeset in webkit [230695] by fpizlo@apple.com
  • 3 edits in trunk/Source/WebCore

MutationObserver should be in an IsoHeap
https://bugs.webkit.org/show_bug.cgi?id=184671
<rdar://problem/36081981>

Reviewed by Sam Weinig.

No new tests because no new behavior.

  • dom/MutationObserver.cpp:
  • dom/MutationObserver.h:
6:20 PM Changeset in webkit [230694] by aestes@apple.com
  • 6 edits in trunk

[iOS] Enable WKPDFView by default
https://bugs.webkit.org/show_bug.cgi?id=184675
<rdar://problem/27885452>

Reviewed by Darin Adler.

Source/WebKit:

  • UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:

(-[WKWebViewContentProviderRegistry init]):

Source/WTF:

  • wtf/FeatureDefines.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm:
5:19 PM Changeset in webkit [230693] by Kocsen Chung
  • 7 edits in tags/Safari-606.1.13.2/Source

Versioning.

5:17 PM Changeset in webkit [230692] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.13.2

New tag.

4:57 PM Changeset in webkit [230691] by Keith Rollin
  • 4 edits in trunk/LayoutTests

REGRESSION: [mac-wk2 release] LayoutTest http/tests/security/contentSecurityPolicy/script-src-blocked-error-event.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=184673
<rdar://problem/39474698>

Unreviewed test gardening. The test was flaky because the HTTP parser
would try to preload the Javascript resource. Sometimes this operation
would complete in time to print its own console message, duplicating a
subsequent one when the non-preloading resource-load occurs. Updated
the test to load the Javascript in such a way that it skips the reload
step.

  • TestExpectations:
  • http/tests/security/contentSecurityPolicy/script-src-blocked-error-event-expected.txt:
  • http/tests/security/contentSecurityPolicy/script-src-blocked-error-event.html:
4:46 PM Changeset in webkit [230690] by Kocsen Chung
  • 7 edits in branches/safari-605-branch/Source

Versioning.

4:43 PM Changeset in webkit [230689] by Brent Fulgham
  • 5 edits in trunk/Source

[macOS] Don't establish unneeded Dock connections
https://bugs.webkit.org/show_bug.cgi?id=184664
<rdar://problem/16863698>

Reviewed by Simon Fraser.

There is no reason for the WebContent or Plugin processes to interact with
the Dock. We should tell AppKit that we don't want this connection, and to
avoid creating such connections.

Source/WebCore/PAL:

  • pal/spi/mac/NSApplicationSPI.h: Add Dock connection declaration.

Source/WebKit:

  • PluginProcess/mac/PluginProcessMac.mm:

(WebKit::PluginProcess::platformInitializeProcess): Tell NSApplication to
not create a Dock connection.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess): Ditto.

4:18 PM Changeset in webkit [230688] by Ross Kirsling
  • 2 edits
    208 adds in trunk/LayoutTests

Unreviewed. Update WinCairo TestExpectations in preparation for LayoutTests automation.

  • platform/wincairo/TestExpectations:

Updated current failures for directories A-E. Added temporary skips for everything after.

  • platform/wincairo/accessibility:
  • platform/wincairo/animations/3d:
  • platform/wincairo/css2.1:
  • platform/wincairo/css3:
  • platform/wincairo/editing:
  • platform/wincairo/fast/css-generated-content:
  • platform/wincairo/fast/dom:
  • platform/wincairo/legacy-animation-engine/animations/3d:
  • platform/wincairo/legacy-animation-engine/compositing:

Added expectation files.

3:59 PM Changeset in webkit [230687] by youenn@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Set H264 VT encoder usage to 1
https://bugs.webkit.org/show_bug.cgi?id=184668

Reviewed by Eric Carlson.

  • Source/webrtc/sdk/objc/Framework/Classes/VideoToolbox/RTCVideoEncoderH264.mm:

(-[RTCVideoEncoderH264 configureCompressionSession]):

3:46 PM Changeset in webkit [230686] by Megan Gardner
  • 4 edits in trunk

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

Reviewed by Beth Dakin.

Source/WebKit:

Switch to only using one assistant for text selection.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView useSelectionAssistantWithGranularity:]):

LayoutTests:

Marking tests as flaky and to be fixed later.

  • platform/ios-wk2/TestExpectations:
3:29 PM Changeset in webkit [230685] by Kocsen Chung
  • 4 edits in tags/Safari-606.1.13.1

Revert r230683. rdar://problem/39397649

3:29 PM Changeset in webkit [230684] by Kocsen Chung
  • 4 edits in tags/Safari-606.1.13.1/Source

Revert r230682. rdar://problem/39344671

2:52 PM Changeset in webkit [230683] by Kocsen Chung
  • 4 edits in tags/Safari-606.1.13.1

Cherry-pick r230665. rdar://problem/39397649

[Web Animations] Animations do not naturally get a finish event
https://bugs.webkit.org/show_bug.cgi?id=184639
<rdar://problem/39397649>

Reviewed by Jon Lee.

LayoutTests/imported/w3c:

Record two progressions in the Web Animations WPT tests.

  • web-platform-tests/web-animations/timing-model/animations/updating-the-finished-state-expected.txt:

Source/WebCore:

We must call updateFinishedState() when an animation gets sampled as it means its timeline's time has progressed
and it may have crossed to a finished state. Calling updateFinishedState() when sampling means that we'll correctly
set the animation's hold time to its end value, which means that currentTime() will now always be clamped to return
the end time once its has reached it, so we must not schedule animations to resolve immediately anymore since otherwise
they will keep being scheduled in a loop.

  • animation/WebAnimation.cpp: (WebCore::WebAnimation::timeToNextRequiredTick const): (WebCore::WebAnimation::resolve):

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

2:52 PM Changeset in webkit [230682] by Kocsen Chung
  • 4 edits in tags/Safari-606.1.13.1/Source

Cherry-pick r230521. rdar://problem/39344671

[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:

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

2:50 PM Changeset in webkit [230681] by youenn@apple.com
  • 29 edits
    12 copies
    6 adds in trunk

Use NetworkLoadChecker to handle synchronous HTTP loads
https://bugs.webkit.org/show_bug.cgi?id=184240

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/cors/request-headers-expected.txt:
  • web-platform-tests/XMLHttpRequest/access-control-and-redirects-expected.txt:
  • web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader-expected.txt:
  • web-platform-tests/XMLHttpRequest/send-authentication-cors-setrequestheader-no-cred-expected.txt:

Source/WebCore:

Update LoaderStrategy::loadResourceSynchronously to pass FetchOptions directly.
Update various call sites accordingly. This allows NetworkProcess to do all necessary checks.
Add an option to disable security checks if NetworkProcess does it for WebProcess.
This option will be also used for regular asynchronous loads in future patches.

Update DocumentThreadableLoader to bypass preflighting and response validation checks in case they are done in NetworkProcess.

Covered by existing and rebased tests.

  • loader/CrossOriginPreflightChecker.cpp:

(WebCore::CrossOriginPreflightChecker::doPreflight):

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::DocumentThreadableLoader):
(WebCore::DocumentThreadableLoader::loadRequest):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadResourceSynchronously):

  • loader/FrameLoader.h:
  • loader/LoaderStrategy.h:
  • xml/XSLTProcessorLibxslt.cpp:

(WebCore::docLoaderFunc):

  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::openFunc):

Source/WebKit:

For every NetworkResourceLoader synchronous load, we create a NetworkLoadChecker.
NetworkLoadChecker handles all security checks in that case.
This allows supporting cross-origin loads for synchronous XHR.

Updated NetworkCORSPreflightChecker to return the result as a ResourceError.
This is used to convey any error message from NetworkProcess to the JS console.
Ensure NetworkCORSPreflightChecker computes correctly Access-Control-Request-Headers value
by providing the headers set by the application plus Referrer/Origin.

  • NetworkProcess/NetworkCORSPreflightChecker.cpp:

(WebKit::NetworkCORSPreflightChecker::~NetworkCORSPreflightChecker):
(WebKit::NetworkCORSPreflightChecker::willPerformHTTPRedirection):
(WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
(WebKit::NetworkCORSPreflightChecker::didCompleteWithError):
(WebKit::NetworkCORSPreflightChecker::wasBlocked):
(WebKit::NetworkCORSPreflightChecker::cannotShowURL):

  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::NetworkResourceLoader):
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::willSendRedirectedRequest):
(WebKit::NetworkResourceLoader::continueWillSendRequest):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
(WebKit::NetworkResourceLoader::validateCacheEntry):

  • NetworkProcess/NetworkResourceLoader.h:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::loadResourceSynchronously):

  • WebProcess/Network/WebLoaderStrategy.h:

Source/WebKitLegacy:

  • WebCoreSupport/WebResourceLoadScheduler.cpp:

(WebResourceLoadScheduler::loadResourceSynchronously):

  • WebCoreSupport/WebResourceLoadScheduler.h:

LayoutTests:

  • http/tests/xmlhttprequest/access-control-preflight-not-successful-expected.txt:
  • http/wpt/beacon/cors/cors-preflight-blob-failure.html: Fix buggy assertion.

Test should check for actual request header and not header name in Access-Control-Request-Headers.

  • http/wpt/beacon/cors/cors-preflight-blob-success.html: Ditto.
  • platform/mac-wk1/http/tests/xmlhttprequest/access-control-and-redirects-expected.txt: Added.
  • platform/mac-wk1/http/tests/xmlhttprequest/access-control-preflight-not-successful-expected.txt: Added.
  • platform/mac-wk1/http/tests/xmlhttprequest/cross-origin-no-authorization-expected.txt: Added.
  • platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/access-control-and-redirects-expected.txt: Added.
  • platform/win/http/tests/xmlhttprequest/access-control-and-redirects-expected.txt: Added.
  • platform/win/http/tests/xmlhttprequest/access-control-preflight-not-successful-expected.txt: Added.
  • platform/win/http/tests/xmlhttprequest/cross-origin-no-authorization-expected.txt: Added.
  • platform/mac-highsierra-wk2/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader-expected.txt.
  • platform/mac-highsierra-wk2/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-setrequestheader-no-cred-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-setrequestheader-no-cred-expected.txt.
  • platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader-expected.txt.
  • platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-setrequestheader-no-cred-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-setrequestheader-no-cred-expected.txt.
  • platform/mac-wk1/imported/w3c/web-platform-tests/cors/request-headers-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/cors/request-headers-expected.txt.
  • platform/win/http/tests/xmlhttprequest/access-control-and-redirects-expected.txt:
  • platform/win/http/tests/xmlhttprequest/access-control-preflight-not-successful-expected.txt:
  • platform/win/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader-expected.txt.
  • platform/win/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-setrequestheader-no-cred-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-setrequestheader-no-cred-expected.txt.
  • platform/win/imported/w3c/web-platform-tests/cors/request-headers-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/cors/request-headers-expected.txt.
2:03 PM Changeset in webkit [230680] by msaboff@apple.com
  • 1 edit
    121 adds in trunk/Tools

Perl-based Test262 runner
https://bugs.webkit.org/show_bug.cgi?id=183343

Patch by Leo Balter <Leo Balter> on 2018-04-16
Reviewed by Michael Saboff.

  • Scripts/test262-helpers/README.md: Added.
  • Scripts/test262-helpers/agent.js: Added.

(262.getGlobal):
(262.setGlobal):
(262.destroy):
(262.IsHTMLDDA):

  • Scripts/test262-helpers/cpanfile: Added.
  • Scripts/test262-helpers/cpanfile.snapshot: Added.
  • Scripts/test262-helpers/test262-runner.pl: Added.

(main):
(processFile):
(getScenarios):
(addScenario):
(compileTest):
(runTest):
(processResult):
(getTempFile):
(getContents):
(parseData):
(getHarness):

  • Scripts/test262-helpers/tests.log: Added.
1:56 PM WPE edited by clopez@igalia.com
update isntructions for wpebackend-fdo (diff)
12:45 PM Changeset in webkit [230679] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[WinCairo] Media elements should be enabled by default
https://bugs.webkit.org/show_bug.cgi?id=184597

Patch by Christopher Reid <chris.reid@sony.com> on 2018-04-16
Reviewed by Per Arne Vollan.

Enabling media elements by default with media foundation.

  • page/SettingsDefaultValues.h:
12:22 PM Changeset in webkit [230678] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[Curl] Add the Accept-Language field to curl request headers
https://bugs.webkit.org/show_bug.cgi?id=184605

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

Add Accept-Language field to curl request headers

  • platform/network/curl/CurlRequest.cpp:
  • platform/network/curl/CurlRequest.h:
12:20 PM Changeset in webkit [230677] 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:
12:02 PM Changeset in webkit [230676] by Chris Dumez
  • 10 edits in trunk/Source/WebCore

Move more WindowProxy-related logic from ScriptController to WindowProxyController
https://bugs.webkit.org/show_bug.cgi?id=184640

Reviewed by Ryosuke Niwa.

Move more WindowProxy-related logic from ScriptController to WindowProxyController,
for clarity.

  • bindings/js/JSDOMWindowProxy.cpp:

(WebCore::JSDOMWindowProxy::attachDebugger):

  • bindings/js/JSDOMWindowProxy.h:
  • bindings/js/ScriptCachedFrameData.cpp:

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

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::~ScriptController):
(WebCore::ScriptController::initScriptForWindowProxy):

  • bindings/js/ScriptController.h:

(WebCore::ScriptController::existingCacheableBindingRootObject const):

  • bindings/js/WindowProxyController.cpp:

(WebCore::collectGarbageAfterWindowProxyDestruction):
(WebCore::WindowProxyController::~WindowProxyController):
(WebCore::WindowProxyController::clearWindowProxiesNotMatchingDOMWindow):
(WebCore::WindowProxyController::setDOMWindowForWindowProxy):
(WebCore::WindowProxyController::attachDebugger):

  • bindings/js/WindowProxyController.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::clear):

  • page/Page.cpp:

(WebCore::Page::setDebugger):

11:53 AM Changeset in webkit [230675] by BJ Burg
  • 3 edits in trunk/Source/WebKit

[Cocoa] Web Automation: add SPI to terminate automation session and disconnect the remote end
https://bugs.webkit.org/show_bug.cgi?id=184523
<rdar://problem/39368599>

Reviewed by Simon Fraser.

When a user breaks the automation glass pane and chooses "Stop Session", there is no way
for Safari to actually disconnect the remote connection using automation-related ObjC SPI.
This can lead to sessions getting stuck and safaridriver is unable to request a new session.

Expose the -terminate method as SPI. This disconnects the remote connection and then notifies
the session delegate that the remote disconnected. At that point, Safari can uninstall
the session from the process pool and tear down other session state.

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

(-[_WKAutomationSession terminate]):

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

[GStreamer] Set *TrackPrivateGStreamer::active based on GstStream default select in constructor
https://bugs.webkit.org/show_bug.cgi?id=184652

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

In the constructor we should mark selected streams based on the default values from GstStream,
if the user changes them, they will be updated as required later on.

No new tests are added as we already have a few ones that are currently disabled in
the mediastream testsuite. This patch is part of the work to enable them.

  • platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp:

(WebCore::AudioTrackPrivateGStreamer::AudioTrackPrivateGStreamer):

  • platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp:

(WebCore::VideoTrackPrivateGStreamer::VideoTrackPrivateGStreamer):

11:29 AM Changeset in webkit [230673] by timothy@apple.com
  • 5 edits in trunk/Source/WebKit

Clean up OTHER_LDFLAGS for WebKit processes
https://bugs.webkit.org/show_bug.cgi?id=184657

Reviewed by Jer Noble.

  • Configurations/PluginProcessShim.xcconfig:
  • Configurations/PluginService.32.xcconfig:
  • Configurations/PluginService.64.xcconfig:
  • Configurations/WebContentService.xcconfig:
11:05 AM Changeset in webkit [230672] by Kocsen Chung
  • 7 edits in tags/Safari-606.1.13.1/Source

Versioning.

10:55 AM Changeset in webkit [230671] by bshafiei@apple.com
  • 7 edits in trunk/Source

Versioning.

10:48 AM Changeset in webkit [230670] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.13.1

New tag.

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

[GStreamer] Set TrackPrivateBaseGStreamer metadata information even if no client is avalaible
https://bugs.webkit.org/show_bug.cgi?id=184651

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

We can't notify the client if none is connected, but still we need to fill our metadatas from
the provided GstTagList, especially in the case of playbin3 where the client is not set yet
at construct time but the metadata might already be preset (and won't be updated later on).

No new tests are added as we already have a few ones that are currently disabled in
the mediastream testsuite. This patch is part of the work to enable them.

  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:

(WebCore::TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged):

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

Mark css3/filters/blur-various-radii.html as a crash on Windows.
https://bugs.webkit.org/show_bug.cgi?id=184649

Unreviewed test gardening.

  • platform/win/TestExpectations:
1:47 AM Changeset in webkit [230667] by graouts@webkit.org
  • 4 edits in trunk

[Web Animations] Ensure we never return -0 through the API
https://bugs.webkit.org/show_bug.cgi?id=184644

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Record one progression in the Web Animations WPT tests.

  • web-platform-tests/web-animations/timing-model/animations/updating-the-finished-state-expected.txt:

Source/WebCore:

We could sometimes return -0 instead of 0, which is surprising and leads to an error in WPT tests.
This would happen when playbackRate < 0.

  • animation/WebAnimationUtilities.h:

(WebCore::secondsToWebAnimationsAPITime):

Apr 15, 2018:

11:58 PM Changeset in webkit [230666] by rniwa@webkit.org
  • 7 edits in trunk/Websites/perf.webkit.org

Make it possible to hide some repository groups
https://bugs.webkit.org/show_bug.cgi?id=184632

Reviewed by Saam Barati.

Added the ability to hide repository groups in the custom analysis task configurator from the admin page.
Hidden repositroy groups will continue to function for existing test groups. This is purely an UI change.

  • init-database.sql: Added repositorygroup_hidden as a new column to triggerable_repository_groups.
  • public/admin/triggerables.php: Added a form field to hide a repository group.
  • public/include/manifest-generator.php: Include hidden state in the manifest file.
  • public/v3/components/custom-analysis-task-configurator.js:

(CustomAnalysisTaskConfigurator.prototype._renderRepositoryPanes): Filter out hidden repository groups.

  • public/v3/models/triggerable.js:

(prototype.isHidden): Added.

  • server-tests/api-manifest-tests.js: Updated an existing test case to test a hidden repository group.
10:38 PM Changeset in webkit [230665] by graouts@webkit.org
  • 4 edits in trunk

[Web Animations] Animations do not naturally get a finish event
https://bugs.webkit.org/show_bug.cgi?id=184639
<rdar://problem/39397649>

Reviewed by Jon Lee.

LayoutTests/imported/w3c:

Record two progressions in the Web Animations WPT tests.

  • web-platform-tests/web-animations/timing-model/animations/updating-the-finished-state-expected.txt:

Source/WebCore:

We must call updateFinishedState() when an animation gets sampled as it means its timeline's time has progressed
and it may have crossed to a finished state. Calling updateFinishedState() when sampling means that we'll correctly
set the animation's hold time to its end value, which means that currentTime() will now always be clamped to return
the end time once its has reached it, so we must not schedule animations to resolve immediately anymore since otherwise
they will keep being scheduled in a loop.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::timeToNextRequiredTick const):
(WebCore::WebAnimation::resolve):

6:01 PM Changeset in webkit [230664] by Chris Dumez
  • 21 edits
    2 adds in trunk

Change Event's returnValue so it doesn't expose a new primitive
https://bugs.webkit.org/show_bug.cgi?id=184415

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Import test coverage from https://github.com/w3c/web-platform-tests/pull/10258.

  • web-platform-tests/dom/events/AddEventListenerOptions-passive-expected.txt:
  • web-platform-tests/dom/events/AddEventListenerOptions-passive.html:
  • web-platform-tests/dom/events/Event-constructors.html:
  • web-platform-tests/dom/events/Event-defaultPrevented-after-dispatch-expected.txt:
  • web-platform-tests/dom/events/Event-defaultPrevented-after-dispatch.html:
  • web-platform-tests/dom/events/Event-defaultPrevented-expected.txt:
  • web-platform-tests/dom/events/Event-defaultPrevented.html:
  • web-platform-tests/dom/events/Event-dispatch-click.html:
  • web-platform-tests/dom/events/Event-dispatch-detached-click.html:
  • web-platform-tests/dom/events/Event-dispatch-other-document.html:
  • web-platform-tests/dom/events/Event-initEvent.html:
  • web-platform-tests/dom/events/Event-returnValue-expected.txt: Added.
  • web-platform-tests/dom/events/Event-returnValue.html: Added.
  • web-platform-tests/dom/events/EventListener-handleEvent.html:
  • web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue-expected.txt:
  • web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue.html:
  • web-platform-tests/dom/events/w3c-import.log:
  • web-platform-tests/dom/interfaces-expected.txt:
  • web-platform-tests/interfaces/dom.idl:

Source/WebCore:

Update Event.returnValue setter to match the latest DOM specification after:

In particular, the returnValue setter is now a no-op if the new flag value
is true. If the input flag value is false, it only sets the 'canceled' flag
if the event is cancelable and the event’s in passive listener flag is unset.

Test: imported/w3c/web-platform-tests/dom/events/Event-returnValue.html

  • dom/Event.cpp:

(WebCore::Event::setLegacyReturnValue):
(WebCore::Event::setCanceledFlagIfPossible):
(WebCore::Event::preventDefault):

  • dom/Event.h:
2:21 PM Changeset in webkit [230663] by aestes@apple.com
  • 3 edits
    1 add in trunk/Tools

[iOS] Add API tests for PDF find-in-page
https://bugs.webkit.org/show_bug.cgi?id=184634

Reviewed by Dan Bernstein.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/find.pdf: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm:

(-[TestFindDelegate findString]):
(-[TestFindDelegate _webView:didCountMatches:forString:]):
(-[TestFindDelegate _webView:didFindMatches:forString:withMatchIndex:]):
(-[TestFindDelegate _webView:didFailToFindString:]):
(loadWebView):
(TEST):

10:38 AM Changeset in webkit [230662] by fpizlo@apple.com
  • 7 edits
    5 adds in trunk

Function.prototype.caller shouldn't return generator bodies
https://bugs.webkit.org/show_bug.cgi?id=184630

Reviewed by Yusuke Suzuki.
JSTests:

  • stress/function-caller-async-arrow-function-body.js: Added.
  • stress/function-caller-async-function-body.js: Added.
  • stress/function-caller-async-generator-body.js: Added.
  • stress/function-caller-generator-body.js: Added.
  • stress/function-caller-generator-method-body.js: Added.

Source/JavaScriptCore:


Function.prototype.caller no longer returns generator bodies. Those are meant to be
private.

Also added some builtin debugging tools so that it's easier to do the investigation that I
did.

  • builtins/BuiltinNames.h:
  • runtime/JSFunction.cpp:

(JSC::JSFunction::callerGetter):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncBuiltinDescribe):

  • runtime/JSGlobalObjectFunctions.h:
9:32 AM Changeset in webkit [230661] by Michael Catanzaro
  • 4 edits
    1 add in trunk

[WPE] Install files needed for WebKitWebExtensions
https://bugs.webkit.org/show_bug.cgi?id=179915

Reviewed by Žan Doberšek.

.:

  • Source/cmake/OptionsWPE.cmake:

Source/WebKit:

  • PlatformWPE.cmake: Install pkg-config file, injected bundle, and API headers.
  • UIProcess/API/glib/WebKitWebContext.cpp: Load the injected bundle when installed.
  • wpe/wpe-web-extension.pc.in: Added.

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.

Note: See TracTimeline for information about the timeline view.