⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Sep 14, 2017:

10:10 PM Changeset in webkit [222076] by bshafiei@apple.com
  • 2 edits in tags/Safari-605.1.6.0.1/Source/WebCore/PAL

Merged r222072. rdar://problem/34452503

10:08 PM Changeset in webkit [222075] by bshafiei@apple.com
  • 7 edits in tags/Safari-605.1.6.0.1/Source

Versioning.

10:04 PM Changeset in webkit [222074] by bshafiei@apple.com
  • 1 copy in tags/Safari-605.1.6.0.1

New tag.

8:56 PM Changeset in webkit [222073] by commit-queue@webkit.org
  • 10 edits
    2 adds in trunk

Add Cache API support of records persistency
https://bugs.webkit.org/show_bug.cgi?id=176845

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

Source/WebKit:

Introducing asynchronous opening of Cache objects.
When opening, Cache objects will read the list of records from the disk.
They keep in memory the necessary information to make any match or remove request without reading further information from the disk.
Cache objects thus keep during the opening time a list of callbacks to call when being opened.
Persistent storage is implemented through NetworkCache::Storage.

A Cache object is added a unique name so that records from a Cache cannot be mixed with records from another Cache.
This unique name is stored persistenly in addition to the Cache name.
This unique name is used as the key type given to the storage.

Request, response and responsebody data are no longer kept by the Cache object.
For regular sessions, this information is kept on the disk through NetworkCache::Storage.
Insertion time is also stored persistently so as to keep the ordering of the records consistent.
For private browsing sessions, this information is kept in a map owned by the Caches object.
RecordData is renamed to RecordInformation as it now only contains the information used to handle the different Cache actions.

For every record retrieval action, a ReadRecordTaskCounter is used.
Its purpose is to allow retrieving the record data on the disk in parallel,
and then send back the information when everything is read.
In case some records cannot be correctly read, they are removed automatically at that point.
The current implementation loads all information in memory including response bodies.
Further improvements might consider streaming the response bodies progressively.

For every stored record, an AsynchronousPutTaskCounter is used.
Its purpose is also to wait for all put actions to be completed before executing the completion callback.
In some cases, a record needs to be overriden.
In that case, as per the specification, only the data related to the response is to be modified.
This requires reading the record request data on disk before actually writing the whole record again.
This is implemented in updateRecordToDisk.

The Cache object is delegating all record writing/reading tasks to its Caches object.
The Caches object is responsible to handle persistent/private sessions.

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::retrieveRecords): Making sure Cache object is opened.
(WebKit::CacheStorage::Engine::readCache): Ditto.
(WebKit::CacheStorage::Engine::unlock): Disposing the cache without going through initializing it.

  • NetworkProcess/cache/CacheStorageEngineCache.cpp:

(WebKit::CacheStorage::computeKeyURL):
(WebKit::CacheStorage::queryCache):
(WebKit::CacheStorage::updateVaryInformation):
(WebKit::CacheStorage::Cache::toRecordInformation):
(WebKit::CacheStorage::Cache::Cache):
(WebKit::CacheStorage::Cache::open):
(WebKit::CacheStorage::Cache::finishOpening):
(WebKit::CacheStorage::ReadRecordTaskCounter::create):
(WebKit::CacheStorage::ReadRecordTaskCounter::~ReadRecordTaskCounter):
(WebKit::CacheStorage::ReadRecordTaskCounter::appendRecord):
(WebKit::CacheStorage::ReadRecordTaskCounter::ReadRecordTaskCounter):
(WebKit::CacheStorage::Cache::retrieveRecord):
(WebKit::CacheStorage::Cache::retrieveRecords):
(WebKit::CacheStorage::Cache::addRecord):
(WebKit::CacheStorage::Cache::recordsFromURL):
(WebKit::CacheStorage::Cache::recordsFromURL const):
(WebKit::CacheStorage::AsynchronousPutTaskCounter::create):
(WebKit::CacheStorage::AsynchronousPutTaskCounter::~AsynchronousPutTaskCounter):
(WebKit::CacheStorage::AsynchronousPutTaskCounter::onCompletion):
(WebKit::CacheStorage::AsynchronousPutTaskCounter::setError):
(WebKit::CacheStorage::Cache::put):
(WebKit::CacheStorage::Cache::remove):
(WebKit::CacheStorage::Cache::removeFromRecordList):
(WebKit::CacheStorage::Cache::writeRecordToDisk):
(WebKit::CacheStorage::Cache::updateRecordToDisk):
(WebKit::CacheStorage::Cache::readRecordFromDisk):
(WebKit::CacheStorage::Cache::removeRecordFromDisk):
(WebKit::CacheStorage::Cache::encode):
(WebKit::CacheStorage::decodeRecordHeader):
(WebKit::CacheStorage::Cache::decode):
(WebKit::CacheStorage::Cache::keys const):

  • NetworkProcess/cache/CacheStorageEngineCache.h:

(WebKit::CacheStorage::Cache::isOpened const):
(WebKit::CacheStorage::Cache::uniqueName const):

  • NetworkProcess/cache/CacheStorageEngineCaches.cpp:

(WebKit::CacheStorage::Caches::initialize):
(WebKit::CacheStorage::Caches::open):
(WebKit::CacheStorage::Caches::remove):
(WebKit::CacheStorage::Caches::dispose):
(WebKit::CacheStorage::encodeCacheNames):
(WebKit::CacheStorage::decodeCachesNames):
(WebKit::CacheStorage::Caches::readCachesFromDisk):
(WebKit::CacheStorage::Caches::readRecordsList):
(WebKit::CacheStorage::Caches::writeRecord):
(WebKit::CacheStorage::Caches::readRecord):
(WebKit::CacheStorage::Caches::removeRecord):
(WebKit::CacheStorage::Caches::clearMemoryRepresentation):
(WebKit::CacheStorage::Caches::salt const):

  • NetworkProcess/cache/CacheStorageEngineCaches.h:

(WebKit::CacheStorage::Caches::shouldPersist const):

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::store):

  • NetworkProcess/cache/NetworkCacheStorage.h:

(WebKit::NetworkCache::Storage::writeWithoutWaiting):

LayoutTests:

  • http/tests/cache-storage/cache-persistency.https.html:
  • http/tests/cache-storage/cache-records-persistency.https-expected.txt: Added.
  • http/tests/cache-storage/cache-records-persistency.https.html: Added.
8:15 PM Changeset in webkit [222072] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore/PAL

Fixed building with the Apple internal macOS 10.12 SDK.

  • pal/spi/cocoa/PassKitSPI.h: Avoid redefining types that are defined in the SDK.
7:23 PM Changeset in webkit [222071] by sbarati@apple.com
  • 6 edits
    1 add in trunk/Source

We should have a way of preventing a caller from making a tail call and we should use it for ProxyObject instead of using build flags
https://bugs.webkit.org/show_bug.cgi?id=176863

Reviewed by Keith Miller.

Source/JavaScriptCore:

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • runtime/ProxyObject.cpp:

(JSC::performProxyGet):
(JSC::ProxyObject::performInternalMethodGetOwnProperty):
(JSC::ProxyObject::performHasProperty):
(JSC::ProxyObject::getOwnPropertySlotCommon):
(JSC::ProxyObject::performPut):
(JSC::performProxyCall):
(JSC::performProxyConstruct):
(JSC::ProxyObject::performDelete):
(JSC::ProxyObject::performPreventExtensions):
(JSC::ProxyObject::performIsExtensible):
(JSC::ProxyObject::performDefineOwnProperty):
(JSC::ProxyObject::performGetOwnPropertyNames):
(JSC::ProxyObject::performSetPrototype):
(JSC::ProxyObject::performGetPrototype):

Source/WTF:

This patch adds a way for a particular function to mark
that none of its calls should be tail calls.

It's useful in the following example if you don't want foo
to do a tail call to bar or baz:

int foo(bool b)
{

NO_TAIL_CALLS();
if (b)

return baz();

return bar();

}

Note that we're not saying that bar/baz should not be tail callable. bar/baz
may have other callers that are allowed to tail call it. This macro just says
that foo itself will not perform any tail calls.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/NoTailCalls.h: Added.

(WTF::NoTailCalls::~NoTailCalls):

6:42 PM Changeset in webkit [222070] by commit-queue@webkit.org
  • 4 edits in trunk

.:
[WinCairo] Add an option to build WebKitLegacy or WebKit
https://bugs.webkit.org/show_bug.cgi?id=176891

Added an option to build WebKitLegacy or WebKit.

Patch by Yousuke Kimoto <yousuke.kimoto@sony.com> on 2017-09-14
Reviewed by Alex Christensen.

  • Source/cmake/OptionsWin.cmake:

Tools:
[WinCairo] Add an option to build WebKitLegacy and WebKit
https://bugs.webkit.org/show_bug.cgi?id=176891

Since TestWebKitAPI and MiniBrowser/win are used for WebKitLegacy,
those subdirectories are ignored for WebKit build.

Patch by Yousuke Kimoto <yousuke.kimoto@sony.com> on 2017-09-14
Reviewed by Alex Christensen.

  • CMakeLists.txt:
5:44 PM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
5:43 PM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
5:30 PM Changeset in webkit [222069] by commit-queue@webkit.org
  • 11 edits
    6 deletes in trunk

Unreviewed, rolling out r221932 and r221933.
https://bugs.webkit.org/show_bug.cgi?id=176969

This change did not fix the webgl test flakiness. (Requested
by ryanhaddad on #webkit).

Reverted changesets:

"[WebGL] accelerated texImage2D for video doesn't respect
flipY"
https://bugs.webkit.org/show_bug.cgi?id=176491
http://trac.webkit.org/changeset/221932

"[WebGL] VideoTextureCopierCV doesn't correctly restore vertex
attribute state"
https://bugs.webkit.org/show_bug.cgi?id=176771
http://trac.webkit.org/changeset/221933

5:29 PM Changeset in webkit [222068] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebCore

[Curl] Replace the implementation with NetworkLoadMetrics
https://bugs.webkit.org/show_bug.cgi?id=176906

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-09-14
Reviewed by Alex Christensen.

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::getEffectiveURL):
(WebCore::CurlHandle::getPrimaryPort):
(WebCore::CurlHandle::getResponseCode):
(WebCore::CurlHandle::getContentLenghtDownload):
(WebCore::CurlHandle::getHttpAuthAvail):
(WebCore::CurlHandle::getTimes):
(WebCore::CurlHandle::getEffectiveURL const): Deleted.

  • platform/network/curl/CurlContext.h:
  • platform/network/curl/CurlDownload.cpp:

(WebCore::CurlDownload::didReceiveHeader):

  • platform/network/curl/ResourceHandleCurlDelegate.cpp:

(WebCore::ResourceHandleCurlDelegate::dispatchSynchronousJob):
(WebCore::ResourceHandleCurlDelegate::notifyFinish):
(WebCore::ResourceHandleCurlDelegate::getProtectionSpace):
(WebCore::ResourceHandleCurlDelegate::didReceiveAllHeaders):
(WebCore::ResourceHandleCurlDelegate::handleLocalReceiveResponse):
(WebCore::ResourceHandleCurlDelegate::didFinish):
(WebCore::ResourceHandleCurlDelegate::getNetworkLoadMetrics):
(WebCore::ResourceHandleCurlDelegate::didReceiveHeader):
(WebCore::ResourceHandleCurlDelegate::didReceiveData):
(WebCore::ResourceHandleCurlDelegate::setWebTimings): Deleted.

  • platform/network/curl/ResourceHandleCurlDelegate.h:
  • platform/network/curl/ResourceResponse.h:

(WebCore::ResourceResponse::setDeprecatedNetworkLoadMetrics):

5:14 PM Changeset in webkit [222067] by Lucas Forschler
  • 1 edit
    1 add in trunk/Tools

Create a launcher for webkit-archives
https://bugs.webkit.org/show_bug.cgi?id=176964

Reviewed by Aakash Jain.

  • Scripts/run-webkit-archive: Added.

(find_dyld_framework_path):
(run_safari_for_webkit_development):
(set_dyld_framework_path):
(main):

5:04 PM Changeset in webkit [222066] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Make dumping the graph print when both when exitOK and !exitOK
https://bugs.webkit.org/show_bug.cgi?id=176954

Reviewed by Keith Miller.

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dump):

4:52 PM Changeset in webkit [222065] by dbates@webkit.org
  • 2 edits in trunk/Source/WebCore

[Mac] Spelling, grammar and correction dots are painted upside down
https://bugs.webkit.org/show_bug.cgi?id=176949
<rdar://problem/34441098>

Reviewed by Simon Fraser.

Painting occurs in a vertically flipped context. Vertically flip the context ("unflip" it)
before painting the document markers on macOS so that they are painted right-side. This makes
the appearance of spelling, grammar and correction dots in WebKit match the AppKit appearance
of these dots.

  • platform/graphics/cocoa/GraphicsContextCocoa.mm:

(WebCore::GraphicsContext::drawLineForDocumentMarker): Flip the context as described above.
Also make use of RAII object CGContextStateSaver instead of manually saving and restoring
the state of the context.

4:49 PM Changeset in webkit [222064] by Joseph Pecoraro
  • 16 edits
    3 deletes in trunk

Unreviewed rollout r222036.

The LayoutTests added with this change is flaky.

Source/WebCore:

Reverted changeset
Web Inspector: Timeline should show when events preventDefault() was called on an event or not
https://bugs.webkit.org/show_bug.cgi?id=176824
http://trac.webkit.org/changeset/222036

Source/WebInspectorUI:

This left in the Test.js, Test.html, InspectorBackend changes
needed by later patches. They are independent of the flakey test.

Reverted changeset
Web Inspector: Timeline should show when events preventDefault() was called on an event or not
https://bugs.webkit.org/show_bug.cgi?id=176824
http://trac.webkit.org/changeset/222036

LayoutTests:

Reverted changeset
Web Inspector: Timeline should show when events preventDefault() was called on an event or not
https://bugs.webkit.org/show_bug.cgi?id=176824
http://trac.webkit.org/changeset/222036

4:45 PM Changeset in webkit [222063] by dbates@webkit.org
  • 4 edits
    8 copies
    9 adds
    1 delete in trunk/LayoutTests

Import CSS Pseudo Elements 4 Web Platform Tests
https://bugs.webkit.org/show_bug.cgi?id=176253

Reviewed by Zalan Bujtas.

I upstreamed our CSS Pseudo Elements 4 tests to the Web Platform Tests repository.
Remove our version of the tests and import the ones from the Web Platform Tests repository.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • web-platform-tests/css/css-pseudo-4/OWNERS: Added.
  • web-platform-tests/css/css-pseudo-4/first-letter-001-expected.html: Added.
  • web-platform-tests/css/css-pseudo-4/first-letter-001.html: Added.
  • web-platform-tests/css/css-pseudo-4/first-letter-002-expected.html: Added.
  • web-platform-tests/css/css-pseudo-4/first-letter-002.html: Added.
  • web-platform-tests/css/css-pseudo-4/first-letter-003-expected.html: Added.
  • web-platform-tests/css/css-pseudo-4/first-letter-003.html: Added.
  • web-platform-tests/css/css-pseudo-4/marker-and-other-pseudo-elements-expected.html: Renamed from LayoutTests/http/wpt/css/css-pseudo-4/marker-and-other-pseudo-elements-expected.html.
  • web-platform-tests/css/css-pseudo-4/marker-and-other-pseudo-elements.html: Renamed from LayoutTests/http/wpt/css/css-pseudo-4/marker-and-other-pseudo-elements.html.
  • web-platform-tests/css/css-pseudo-4/marker-color-expected.html: Renamed from LayoutTests/http/wpt/css/css-pseudo-4/marker-color-expected.html.
  • web-platform-tests/css/css-pseudo-4/marker-color.html: Renamed from LayoutTests/http/wpt/css/css-pseudo-4/marker-color.html.
  • web-platform-tests/css/css-pseudo-4/marker-font-properties-expected.html: Renamed from LayoutTests/http/wpt/css/css-pseudo-4/marker-font-properties-expected.html.
  • web-platform-tests/css/css-pseudo-4/marker-font-properties.html: Renamed from LayoutTests/http/wpt/css/css-pseudo-4/marker-font-properties.html.
  • web-platform-tests/css/css-pseudo-4/marker-inherit-values-expected.html: Renamed from LayoutTests/http/wpt/css/css-pseudo-4/marker-inherit-values-expected.html.
  • web-platform-tests/css/css-pseudo-4/marker-inherit-values.html: Renamed from LayoutTests/http/wpt/css/css-pseudo-4/marker-inherit-values.html.
  • web-platform-tests/css/css-pseudo-4/w3c-import.log: Added.

LayoutTests:

  • TestExpectations: Skip some tests that fail.
  • http/wpt/css/css-pseudo-4/marker-and-other-pseudo-elements-expected.html: Removed.
  • http/wpt/css/css-pseudo-4/marker-and-other-pseudo-elements.html: Removed.
  • http/wpt/css/css-pseudo-4/marker-color-expected.html: Removed.
  • http/wpt/css/css-pseudo-4/marker-color.html: Removed.
  • http/wpt/css/css-pseudo-4/marker-font-properties-expected.html: Removed.
  • http/wpt/css/css-pseudo-4/marker-font-properties.html: Removed.
  • http/wpt/css/css-pseudo-4/marker-inherit-values-expected.html: Removed.
  • http/wpt/css/css-pseudo-4/marker-inherit-values.html: Removed.
4:43 PM Changeset in webkit [222062] by rniwa@webkit.org
  • 8 edits
    1 copy in trunk/Source/WebCore

WebContentReader::readWebArchive doesn't need to handle image MIME type
https://bugs.webkit.org/show_bug.cgi?id=176884

Reviewed by Sam Weinig.

Remove the code to handle image MIME types in the web archive on macOS since we have a separate code path
to handle images in the pasteboard directly. As far as I can tell, this code is never used in practice.

This allows merging iOS and macOS code to read web archive from the pasteboard. Also merged member functions
for handling RTFD and RTF in iOS and macOS in WebContentReaderCocoa.mm.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • editing/WebContentReader.cpp: Added.

(WebCore::WebContentReader::addFragment): Moved from WebContentReaderIOS.mm and simplified since appendChild
knows how to add a DocumentFragment.

  • editing/WebContentReader.h:
  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::createFragmentAndAddResources):
(WebCore::WebContentReader::readWebArchive): Merged iOS / macOS code here.
(WebCore::WebContentReader::readRTFD): Ditto.
(WebCore::WebContentReader::readRTF): Ditto.
(WebCore::WebContentReader::readPlainText): Ditto.

  • editing/ios/EditorIOS.mm:

(WebCore::Editor::pasteWithPasteboard):

  • editing/ios/WebContentReaderIOS.mm:

(WebCore::WebContentReader::readImage):
(WebCore::WebContentReader::readURL):
(WebCore::WebContentReader::readWebArchive): Moved to WebContentReaderCocoa.mm.
(WebCore::WebContentReader::readRTFD): Ditto.
(WebCore::WebContentReader::readRTF): Ditto.
(WebCore::WebContentReader::readPlainText): Ditto.

  • editing/mac/WebContentReaderMac.mm:

(WebCore::WebContentReader::readWebArchive): Ditto.
(WebCore::WebContentReader::readRTFD): Ditto.
(WebCore::WebContentReader::readRTF): Ditto.

4:43 PM Changeset in webkit [222061] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

iOS: WebKitTestRunner hits an assertion in editing/pasteboard/datatransfer-items-copy-plaintext.html
https://bugs.webkit.org/show_bug.cgi?id=176968

Skip this test for now.

  • platform/ios/TestExpectations:
4:39 PM Changeset in webkit [222060] by sbarati@apple.com
  • 5 edits
    1 add in trunk

It should be valid to exit before each set when doing arity fixup when inlining
https://bugs.webkit.org/show_bug.cgi?id=176948

Reviewed by Keith Miller.

JSTests:

  • stress/arity-fixup-inlining-dont-generate-invalid-use.js: Added.

(baz):
(bar):
(foo):

Source/JavaScriptCore:

This patch makes it so that we can exit before each SetLocal when doing arity
fixup during inlining. This is OK because if we exit at any of these SetLocals,
we will simply exit to the beginning of the call instruction.

Not doing this led to a bug where FixupPhase would insert a ValueRep of
a node before the actual node. This is obviously invalid IR. I've added
a new validation rule to catch this malformed IR.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::inliningCost):
(JSC::DFG::ByteCodeParser::inlineCall):

  • dfg/DFGValidate.cpp:
  • runtime/Options.h:
4:37 PM Changeset in webkit [222059] by achristensen@apple.com
  • 25 edits in trunk

Add WKUIDelegatePrivate equivalent of WKPageUIClient's drawHeader, drawFooter, headerHeight, and footerHeight
https://bugs.webkit.org/show_bug.cgi?id=176889
<rdar://problem/29270035>

Reviewed by Andy Estes.

Source/WebKit:

  • UIProcess/API/C/WKPage.cpp:

(WKPageLoadAlternateHTMLString):
(WKPageLoadAlternateHTMLStringWithUserData):

  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:

(-[WKBrowsingContextController loadAlternateHTMLString:baseURL:forUnreachableURL:]):

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _loadAlternateHTMLString:baseURL:forUnreachableURL:]):

  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::headerHeight):
(WebKit::UIDelegate::UIClient::footerHeight):
(WebKit::UIDelegate::UIClient::drawHeader):
(WebKit::UIDelegate::UIClient::drawFooter):

  • UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm:

(-[WKReloadFrameErrorRecoveryAttempter attemptRecovery]):

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::printOperationWithPrintInfo):

  • UIProcess/FrameLoadState.cpp:

(WebKit::FrameLoadState::didStartProvisionalLoad):
(WebKit::FrameLoadState::didReceiveServerRedirectForProvisionalLoad):
(WebKit::FrameLoadState::didFailProvisionalLoad):
(WebKit::FrameLoadState::didCommitLoad):
(WebKit::FrameLoadState::didSameDocumentNotification):
(WebKit::FrameLoadState::setUnreachableURL):
(WebKit::FrameLoadState::FrameLoadState): Deleted.

  • UIProcess/FrameLoadState.h:

(WebKit::FrameLoadState::url const):
(WebKit::FrameLoadState::provisionalURL const):
(WebKit::FrameLoadState::unreachableURL const):

  • UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::loadURL):
(WebKit::WebFrameProxy::didStartProvisionalLoad):
(WebKit::WebFrameProxy::didReceiveServerRedirectForProvisionalLoad):
(WebKit::WebFrameProxy::didSameDocumentNavigation):
(WebKit::WebFrameProxy::setUnreachableURL):

  • UIProcess/WebFrameProxy.h:

(WebKit::WebFrameProxy::url const):
(WebKit::WebFrameProxy::provisionalURL const):
(WebKit::WebFrameProxy::unreachableURL const):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::loadAlternateHTMLString):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
(WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
(WebKit::WebFrameLoaderClient::dispatchDidChangeProvisionalURL):
(WebKit::WebFrameLoaderClient::dispatchDidChangeLocationWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidPushStateWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidReplaceStateWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidPopStateWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadURLInFrame):

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

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:

(-[PrintDelegate _webView:printFrame:]):
(-[PrintDelegate _webViewHeaderHeight:]):
(-[PrintDelegate _webViewFooterHeight:]):
(-[PrintDelegate _webView:drawHeaderInRect:forPageWithTitle:URL:]):
(-[PrintDelegate _webView:drawFooterInRect:forPageWithTitle:URL:]):
(callbacksEqual):
(TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebView hostWindow]):

4:08 PM Changeset in webkit [222058] by mark.lam@apple.com
  • 7 edits in trunk/Source

AddressSanitizer: stack-buffer-underflow in JSC::Probe::Page::Page
https://bugs.webkit.org/show_bug.cgi?id=176874
<rdar://problem/34436415>

Reviewed by Saam Barati.

Source/JavaScriptCore:

  1. Make Probe::Stack play nice with ASan by:
  1. using a local memcpy implementation that suppresses ASan on ASan builds. We don't want to use std:memcpy() which validates stack memory because we are intentionally copying stack memory beyond the current frame.
  1. changing Stack::s_chunkSize to equal sizeof(uintptr_t) on ASan builds. This ensures that Page::flushWrites() only writes stack memory that was modified by a probe. The probes should only modify stack memory that belongs to JSC stack data structures. We don't want to inadvertently modify adjacent words that may belong to ASan (which may happen if s_chunkSize is larger than sizeof(uintptr_t)).
  1. fixing a bug in Page dirtyBits management for when the size of the value to write is greater than s_chunkSize. The fix in generic, but in practice, this currently only manifests on 32-bit ASan builds because sizeof(uintptr_t) and s_chunkSize are 32-bit, and we may write 64-bit values.
  1. making Page::m_dirtyBits 64 bits always. This maximizes the number of s_chunksPerPage we can have even on ASan builds.
  1. Fixed the bottom most Probe::Context and Probe::Stack get/set methods to use std::memcpy to avoid strict aliasing issues.
  1. Optimized the implementation of Page::physicalAddressFor().
  1. Optimized the implementation of Stack::set() in the recording of the low watermark. We just record the lowest raw pointer now, and only compute the alignment to its chuck boundary later when the low watermark is requested.
  1. Changed a value in testmasm to make the test less vulnerable to rounding issues.

No new test needed because this is already covered by testmasm with ASan enabled.

  • assembler/ProbeContext.h:

(JSC::Probe::CPUState::gpr const):
(JSC::Probe::CPUState::spr const):
(JSC::Probe::Context::gpr):
(JSC::Probe::Context::spr):
(JSC::Probe::Context::fpr):
(JSC::Probe::Context::gprName):
(JSC::Probe::Context::sprName):
(JSC::Probe::Context::fprName):
(JSC::Probe::Context::gpr const):
(JSC::Probe::Context::spr const):
(JSC::Probe::Context::fpr const):
(JSC::Probe::Context::pc):
(JSC::Probe::Context::fp):
(JSC::Probe::Context::sp):
(JSC::Probe:: const): Deleted.

  • assembler/ProbeStack.cpp:

(JSC::Probe::copyStackPage):
(JSC::Probe::Page::Page):
(JSC::Probe::Page::flushWrites):

  • assembler/ProbeStack.h:

(JSC::Probe::Page::get):
(JSC::Probe::Page::set):
(JSC::Probe::Page::dirtyBitFor):
(JSC::Probe::Page::physicalAddressFor):
(JSC::Probe::Stack::lowWatermark):
(JSC::Probe::Stack::get):
(JSC::Probe::Stack::set):

  • assembler/testmasm.cpp:

(JSC::testProbeModifiesStackValues):

Source/WTF:

Added a convenience version of roundUpToMultipleOf() so that it can be applied to
pointers without the client having to cast explicitly.

  • wtf/StdLibExtras.h:

(WTF::roundUpToMultipleOf):

3:43 PM Changeset in webkit [222057] by webkit@devinrousso.com
  • 14 edits in trunk

Web Inspector: make recording swizzle async
https://bugs.webkit.org/show_bug.cgi?id=176936

Reviewed by Joseph Pecoraro.

Source/WebCore:

  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::buildArrayForCanvasPattern):
(WebCore::InspectorCanvas::buildAction):
For objects that are not able to be stringified (e.g. elements), send a deduplicated string
with the name of the object as a placeholder value (e.g. "Element").

Source/WebInspectorUI:

Move all swizzle functions, and all logic that depends on swizzled values, to async
functions so that await can be used to pause execution while objects load. This was
necessary primarily for swizzling Image values, as the Image is not able to be used (such as
for creating a CanvasPattern) until its "load" event has fired. Any callers of a Recording's
actions getter must now adapt to working with a promise that will resolve once all swizzling
has finished across all actions within that recording.

  • .eslintrc:
  • UserInterface/Models/Recording.js:

(WI.Recording):
(WI.Recording.prototype.async swizzle):
(WI.Recording.prototype.swizzle): Deleted.
Drive-by: currently, no data is added to the JSON for WebGL objects, so don't try to swizzle
them and return the placeholder value (0) instead.

  • UserInterface/Models/RecordingAction.js:

(WI.RecordingAction):
(WI.RecordingAction.prototype.swizzle):
(WI.RecordingAction.prototype.toJSON):
(WI.RecordingAction.prototype.async _swizzle.swizzleParameter):
(WI.RecordingAction.prototype.async _swizzle.async swizzleCallFrame):
(WI.RecordingAction.prototype.async _swizzle):

  • UserInterface/Models/RecordingInitialStateAction.js:

(WI.RecordingInitialStateAction):

  • UserInterface/Views/RecordingContentView.js:

(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.async _generateContentCanvas2D):
(WI.RecordingContentView.prototype.async _generateContentCanvasWebGL):
(WI.RecordingContentView.prototype._updateCanvasPath):
(WI.RecordingContentView.prototype._generateContentCanvas2D): Deleted.
(WI.RecordingContentView.prototype._generateContentCanvasWebGL): Deleted.

  • UserInterface/Views/RecordingNavigationSidebarPanel.js:

(WI.RecordingNavigationSidebarPanel.prototype.set recording):
(WI.RecordingNavigationSidebarPanel.prototype.updateActionIndex):

  • UserInterface/Views/RecordingStateDetailsSidebarPanel.js:

(WI.RecordingStateDetailsSidebarPanel):
(WI.RecordingStateDetailsSidebarPanel.prototype.updateActionIndex):
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):

  • UserInterface/Views/RecordingTabContentView.js:

(WI.RecordingTabContentView.prototype.showRepresentedObject):

  • UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:

(WI.RecordingTraceDetailsSidebarPanel):
(WI.RecordingTraceDetailsSidebarPanel.prototype.updateActionIndex):

LayoutTests:

  • inspector/canvas/recording-2d-expected.txt:
3:43 PM Changeset in webkit [222056] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked svg/animations/smil-leak-element-instances.svg
https://bugs.webkit.org/show_bug.cgi?id=175886

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
3:01 PM Changeset in webkit [222055] by Matt Baker
  • 5 edits in trunk

Web Inspector: Color created from an RGB/HSL triplet returns bad component arrays
https://bugs.webkit.org/show_bug.cgi?id=176811
<rdar://problem/34397529>

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

A Color constructed from a format and RGB/HSL triplet should set its
alpha component to 1 instead of leaving it undefined. Color properties
and member functions expect the components array to have a length of four.

  • UserInterface/Models/Color.js:

(WI.Color):

LayoutTests:

Add tests for Colors constructed from a format and component array.

  • inspector/model/color-expected.txt:
  • inspector/model/color.html:

Drive-by cleanup: use InspectorTest.expectShallowEqual.

3:00 PM Changeset in webkit [222054] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.dedicatedworker.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=176920

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
2:23 PM Changeset in webkit [222053] by aestes@apple.com
  • 10 edits
    1 copy in trunk/Source

[Mac] Upstream SpeechSynthesis-related WebKitSystemInterface functions
https://bugs.webkit.org/show_bug.cgi?id=176931

Reviewed by Joseph Pecoraro.

Source/WebCore:

  • platform/mac/PlatformSpeechSynthesizerMac.mm:

(WebCore::speechSynthesisGetVoiceIdentifiers):
(WebCore::speechSynthesisGetDefaultVoiceIdentifierForLocale):
(WebCore::PlatformSpeechSynthesizer::initializeVoiceList):

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

Source/WebCore/PAL:

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

Source/WebKit:

  • WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:

(InitWebCoreSystemInterface):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebSystemInterface.mm:

(InitWebCoreSystemInterface):

2:09 PM Changeset in webkit [222052] by Joseph Pecoraro
  • 4 edits in trunk/Source/WebInspectorUI

Layout test inspector/debugger/breakpoints/resolved-dump-all-pause-locations.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=176952

Reviewed by Matt Baker.

  • UserInterface/Protocol/InspectorBackend.js:

(InspectorBackend.Agent.prototype.dispatchEvent):
Include the event name since that may be useful in understanding what happened.

  • UserInterface/Test.html:
  • UserInterface/Test/Test.js:

(WI.loaded):
Register a MemoryObserver and include potentially necessary Model objects
for the Memory domain.

1:44 PM Changeset in webkit [222051] by rniwa@webkit.org
  • 29 edits
    30 adds in trunk/LayoutTests

Re-enable tests under editing/pasteboard in iOS WebKit2
https://bugs.webkit.org/show_bug.cgi?id=176890

Reviewed by Wenson Hsieh.

These tests were disabled because we used to run multiple layout tests tests in parallel within
a single instance of iOS simulator, and that caused tests that read from and write to UIPasteboard
with interfere with one another. This is no longer an issue since we launch a simulator per worker.

Re-enabled these pasteboard tests under iOS simulator in WebKit2 and rebaselined the tests.
We're going to triage failures and crashes in WebKit1 separately.

  • platform/ios-simulator-wk1/TestExpectations:
  • platform/ios-simulator/editing/pasteboard/3976872-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/4076267-2-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/4076267-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/4242293-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/4631972-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/4641033-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/8145-2-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/8145-3-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/bad-placeholder-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/image-in-iframe-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/paste-text-004-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/paste-text-008-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/paste-text-009-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/paste-text-013-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/paste-text-014-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/paste-text-016-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/paste-text-019-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/paste-text-at-tabspan-003-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/pasting-object-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/pasting-tabs-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/quirks-mode-br-1-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/smart-drag-drop-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/smart-paste-007-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/smart-paste-008-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/styled-element-markup-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/undoable-fragment-removes-expected.png: Added.
  • platform/ios-simulator/editing/pasteboard/unrendered-br-expected.png: Added.
  • platform/ios-wk2/editing/pasteboard/3976872-expected.txt:
  • platform/ios-wk2/editing/pasteboard/4076267-2-expected.txt:
  • platform/ios-wk2/editing/pasteboard/4076267-3-expected.txt:
  • platform/ios-wk2/editing/pasteboard/4076267-expected.txt:
  • platform/ios-wk2/editing/pasteboard/4242293-expected.txt:
  • platform/ios-wk2/editing/pasteboard/4631972-expected.txt:
  • platform/ios-wk2/editing/pasteboard/4641033-expected.txt:
  • platform/ios-wk2/editing/pasteboard/8145-2-expected.txt:
  • platform/ios-wk2/editing/pasteboard/8145-3-expected.txt:
  • platform/ios-wk2/editing/pasteboard/bad-placeholder-expected.txt:
  • platform/ios-wk2/editing/pasteboard/paste-text-004-expected.txt:
  • platform/ios-wk2/editing/pasteboard/paste-text-008-expected.txt:
  • platform/ios-wk2/editing/pasteboard/paste-text-009-expected.txt:
  • platform/ios-wk2/editing/pasteboard/paste-text-013-expected.txt:
  • platform/ios-wk2/editing/pasteboard/paste-text-014-expected.txt:
  • platform/ios-wk2/editing/pasteboard/paste-text-016-expected.txt:
  • platform/ios-wk2/editing/pasteboard/paste-text-019-expected.txt:
  • platform/ios-wk2/editing/pasteboard/paste-text-at-tabspan-003-expected.txt:
  • platform/ios-wk2/editing/pasteboard/paste-xml-expected.txt:
  • platform/ios-wk2/editing/pasteboard/pasting-object-expected.txt:
  • platform/ios-wk2/editing/pasteboard/pasting-tabs-expected.txt:
  • platform/ios-wk2/editing/pasteboard/quirks-mode-br-1-expected.txt:
  • platform/ios-wk2/editing/pasteboard/smart-drag-drop-expected.txt:
  • platform/ios-wk2/editing/pasteboard/styled-element-markup-expected.txt:
  • platform/ios-wk2/editing/pasteboard/undoable-fragment-removes-expected.txt:
  • platform/ios-wk2/editing/pasteboard/unrendered-br-expected.txt:
  • platform/ios/TestExpectations:
  • platform/ios/editing/pasteboard/image-in-iframe-expected.txt: Added.
1:39 PM Changeset in webkit [222050] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline js/dom/global-constructors-attributes.html for El Capitan.

Unreviewed test gardening.

  • platform/mac-elcapitan-wk2/js/dom/global-constructors-attributes-expected.txt:
1:28 PM Changeset in webkit [222049] by jmarcell@apple.com
  • 7 edits in branches/safari-604-branch/Source

Versioning.

1:20 PM Changeset in webkit [222048] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.3.1

Tag Safari-604.3.1.

1:12 PM Changeset in webkit [222047] by Ryan Haddad
  • 25 edits in trunk

Unreviewed, rolling out r222033.

This change caused API test WebKit.PrintFrame to time out.

Reverted changeset:

"Add WKUIDelegatePrivate equivalent of WKPageUIClient's
drawHeader, drawFooter, headerHeight, and footerHeight"
https://bugs.webkit.org/show_bug.cgi?id=176889
http://trac.webkit.org/changeset/222033

12:55 PM Changeset in webkit [222046] by Wenson Hsieh
  • 3 edits
    2 deletes in trunk/LayoutTests

fast/forms/append-children-during-form-submission.html fails due to a text diff on iOS
https://bugs.webkit.org/show_bug.cgi?id=176908

Reviewed by Tim Horton.

Tweak an existing layout test added in r222005 to make its expectation consistent across all platforms.

  • fast/forms/append-children-during-form-submission-expected.txt:
  • fast/forms/append-children-during-form-submission.html:
  • platform/ios/fast/forms/append-children-during-form-submission-expected.txt: Removed.
  • platform/mac-elcapitan/fast/forms/append-children-during-form-submission-expected.txt: Removed.
12:45 PM Changeset in webkit [222045] by commit-queue@webkit.org
  • 6 edits in trunk

RTCDataChannel connectivity issues in Safari 11
https://bugs.webkit.org/show_bug.cgi?id=173052
<rdar://problem/32712143>

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

Source/WebCore:

Covered by updated test.

Before the patch, when sending an ArrayBufferView, RTCDataChannel was sending the whole ArrayBuffer backing the ArrayBufferView.
With this patch, RTCDataChannel will now send only the bytes the ArrayBufferView is exposing.

  • Modules/mediastream/RTCDataChannel.cpp:

(WebCore::RTCDataChannel::send): Correctly handling sending of ArrayBufferView.
(WebCore::RTCDataChannel::sendRawData): Helper routine for raw data sending.

  • Modules/mediastream/RTCDataChannel.h:

LayoutTests:

  • webrtc/datachannel/binary-expected.txt:
  • webrtc/datachannel/binary.html:
12:40 PM Changeset in webkit [222044] by jmarcell@apple.com
  • 7 edits in branches/safari-604-branch/Source

Versioning.

12:40 PM Changeset in webkit [222043] by jmarcell@apple.com
  • 3 edits in branches/safari-604-branch/Source/WebKit

Cherry-pick r221647. rdar://problem/34439121

12:40 PM Changeset in webkit [222042] by jmarcell@apple.com
  • 3 edits in branches/safari-604-branch/Source/WebKit

Cherry-pick r221061. rdar://problem/34439121

12:18 PM Changeset in webkit [222041] by jmarcell@apple.com
  • 3 edits in tags/Safari-605.1.6/Source/JavaScriptCore

Cherry-pick r222035. rdar://problem/34422397

12:18 PM Changeset in webkit [222040] by Antti Koivisto
  • 12 edits
    2 adds in trunk

Computing animated style should not require renderers
https://bugs.webkit.org/show_bug.cgi?id=171926
<rdar://problem/34428035>

Reviewed by Sam Weinig.

Source/WebCore:

CSS animation system is now element rather than renderer based. This allows cleaning up
style resolution and render tree update code.

This also fixes bug animation doesn't run if display property is animated from one rendered type
to another. Added a test case for this.

Test: transitions/transition-display-property-2.html

  • page/animation/CSSAnimationController.cpp:

(WebCore::CSSAnimationController::updateAnimations):

Pass in the old style instead of getting it from the renderer.
Factor to return the animated style as a return value.

  • page/animation/CSSAnimationController.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::RenderElement):
(WebCore::RenderElement::willBeDestroyed):

Animation are now canceled by RenderTreeUpdater::tearDownRenderers.

  • rendering/RenderElement.h:

(WebCore::RenderElement::hasInitialAnimatedStyle const): Deleted.
(WebCore::RenderElement::setHasInitialAnimatedStyle): Deleted.

We no longer need to this concept.

  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateElementRenderer):
(WebCore::RenderTreeUpdater::createRenderer):

We now get correct animated style from style resolution in all cases so we don't need to compute
it separately for new renderers.

(WebCore::RenderTreeUpdater::tearDownRenderers):

Cancel animations when render tree is fully torn down. Keep them when updating style.

  • style/RenderTreeUpdater.h:
  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::createAnimatedElementUpdate):

We can now compute animated style without renderer. Special cases dealing with rendererless case
can be removed.

LayoutTests:

  • transitions/transition-display-property-2-expected.html: Added.
  • transitions/transition-display-property-2.html: Added.
  • transitions/transition-display-property.html:
11:56 AM Changeset in webkit [222039] by commit-queue@webkit.org
  • 4 edits in trunk

Allow WTF::map to take function as parameter
https://bugs.webkit.org/show_bug.cgi?id=176909

Patch by Youenn Fablet <youenn@apple.com> on 2017-09-14
Reviewed by Jer Noble.

Source/WTF:

  • wtf/Vector.h:

(WTF::map):

Tools:

  • TestWebKitAPI/Tests/WTF/Vector.cpp:

(TestWebKitAPI::multiplyByTwo):
(TestWebKitAPI::TEST):
(TestWebKitAPI::multiplyByTwoMoveOnly):

11:33 AM Changeset in webkit [222038] by fpizlo@apple.com
  • 17 edits
    3 adds in trunk/Tools

WSL IntLiteralType should become int32 if unified with a type variable
https://bugs.webkit.org/show_bug.cgi?id=176707

Reviewed by Myles Maxfield.

This makes it so that this works:

T foo<T>(T x) { return x; }
foo(42); T becomes int32


Previously, it did not work because IntLiteralType did not recognize TypeVariable as a number. Also,
TypeVariable would try to evaluate protocol inheritance of IntLiteralType, which would not go well. One
of the tests that this patch adds didn't just fail; it gave such an absurd 7-line type error that I felt
like I was using SML.

This fixes the problem by introducing what I think is a super deterministic way of handling literals and
type variables:

Before verifying a unification context, we now give all literals a chance to perform an extra
unification step. This is a two-phase process. This ensures that the unification performed by one
literal does not throw off the logic of some other literal. For example, if we do:

void foo<T>(T, T) { }
foo(42, 42u);


Then we want to always fail to compile, rather than sometimes succeeding. So, we first ask each literal
if it thinks that it needs to do extra unification. Both of the literals will report that they want to
in this case, because they will notice that they got unified with either at type variable or a literal,
which isn't specific enough. Then after they all register to do extra unification, they will both try to
unify with their preferred types (int32 for 42, uint32 for 42u). The first one will succeed, and the
second will give an error.

Without the special two-phase arrangement, it was possible to either get a type error or not depending
on the order - for example foo(42, 42u) might fail while foo(42u, 42) succeeds. It was definitely not
decidable, at least not unless you mandate the unification order as part of the type system spec. I
think that would have been nuts.

Both IntLiteral and UintLiteral are now "flexible"; the uint one will reject non-int or signed int
types and will prefer uint, but otherwise it's the same logic. This means that this will be valid:

uint8 x = 5u;


But this is still wrong:

int x = 5u;


To make this easy, I turned IntLiteral and UintLiteral (and IntLiteralType and UintLiteralType) into
factory-built generic types (see createLiteral() and createLiteralType()). Because visitors use the
constructor's declared name (GenericLiteral and GenericLiteralType in this case), it means that we can
share a ton of code between the different literals. I love that ES6 lets you do that.

  • WebGPUShadingLanguageRI/All.js:
  • WebGPUShadingLanguageRI/Checker.js:
  • WebGPUShadingLanguageRI/CreateLiteral.js: Added.

(createLiteral.GenericLiteral):
(createLiteral.GenericLiteral.prototype.get value):
(createLiteral.GenericLiteral.prototype.get isConstexpr):
(createLiteral.GenericLiteral.prototype.toString):
(createLiteral):

  • WebGPUShadingLanguageRI/CreateLiteralType.js: Added.

(createLiteralType.GenericLiteralType):
(createLiteralType.GenericLiteralType.prototype.get origin):
(createLiteralType.GenericLiteralType.prototype.get value):
(createLiteralType.GenericLiteralType.prototype.get isPrimitive):
(createLiteralType.GenericLiteralType.prototype.get isUnifiable):
(createLiteralType.GenericLiteralType.prototype.get isLiteral):
(createLiteralType.GenericLiteralType.prototype.typeVariableUnify):
(createLiteralType.GenericLiteralType.prototype.unifyImpl):
(createLiteralType.GenericLiteralType.prototype.prepareToVerify):
(createLiteralType.GenericLiteralType.prototype.verifyAsArgument):
(createLiteralType.GenericLiteralType.prototype.verifyAsParameter):
(createLiteralType.GenericLiteralType.prototype.conversionCost):
(createLiteralType.GenericLiteralType.prototype.commitUnification):
(createLiteralType.GenericLiteralType.prototype.toString):
(createLiteralType):

  • WebGPUShadingLanguageRI/Evaluator.js:

(Evaluator.prototype.visitIntLiteral): Deleted.
(Evaluator.prototype.visitUintLiteral): Deleted.

  • WebGPUShadingLanguageRI/IntLiteral.js:

(let.IntLiteral.createLiteral.createType):
(IntLiteral): Deleted.
(IntLiteral.prototype.get value): Deleted.
(IntLiteral.prototype.get isConstexpr): Deleted.
(IntLiteral.prototype.toString): Deleted.

  • WebGPUShadingLanguageRI/IntLiteralType.js:

(IntLiteralType): Deleted.
(IntLiteralType.prototype.get origin): Deleted.
(IntLiteralType.prototype.get value): Deleted.
(IntLiteralType.prototype.get isPrimitive): Deleted.
(IntLiteralType.prototype.get isUnifiable): Deleted.
(IntLiteralType.prototype.typeVariableUnify): Deleted.
(IntLiteralType.prototype.unifyImpl): Deleted.
(IntLiteralType.prototype.verifyAsArgument): Deleted.
(IntLiteralType.prototype.verifyAsParameter): Deleted.
(IntLiteralType.prototype.conversionCost): Deleted.
(IntLiteralType.prototype.commitUnification): Deleted.
(IntLiteralType.prototype.toString): Deleted.

  • WebGPUShadingLanguageRI/Intrinsics.js:

(Intrinsics):

  • WebGPUShadingLanguageRI/LiteralTypeChecker.js:

(LiteralTypeChecker.prototype.visitIntLiteralType): Deleted.

  • WebGPUShadingLanguageRI/Node.js:

(Node.prototype.prepareToVerify):
(Node.prototype.commitUnification):
(Node.prototype.get isLiteral):

  • WebGPUShadingLanguageRI/NullType.js:

(NullType.prototype.get isLiteral):
(NullType.prototype.toString):
(NullType):

  • WebGPUShadingLanguageRI/Parse.js:

(parseTerm):

  • WebGPUShadingLanguageRI/Rewriter.js:

(Rewriter.prototype.visitGenericLiteralType):
(Rewriter.prototype.visitIntLiteral): Deleted.
(Rewriter.prototype.visitIntLiteralType): Deleted.
(Rewriter.prototype.visitUintLiteral): Deleted.
(Rewriter.prototype.visitBoolLiteral): Deleted.

  • WebGPUShadingLanguageRI/Test.html:
  • WebGPUShadingLanguageRI/Test.js:

(makeUint):
(checkUint):
(TEST_uintSimpleMath):
(TEST_equality):
(TEST_notEquality):
(TEST_intLiteralGeneric):
(TEST_intLiteralGenericWithProtocols):
(TEST_uintLiteralGeneric):
(TEST_uintLiteralGenericWithProtocols):
(TEST_intLiteralGenericSpecific):
(TEST_twoIntLiterals):
(TEST_unifyDifferentLiterals):
(makeUInt): Deleted.
(checkUInt): Deleted.

  • WebGPUShadingLanguageRI/Type.js:
  • WebGPUShadingLanguageRI/UintLiteral.js:

(let.UintLiteral.createLiteral.createType):
(UintLiteral): Deleted.
(UintLiteral.prototype.get value): Deleted.
(UintLiteral.prototype.get isConstexpr): Deleted.
(UintLiteral.prototype.toString): Deleted.

  • WebGPUShadingLanguageRI/UintLiteralType.js: Added.

(let.UintLiteralType.createLiteralType.verifyAsArgument):

  • WebGPUShadingLanguageRI/UnificationContext.js:

(UnificationContext.prototype.verify):

  • WebGPUShadingLanguageRI/Visitor.js:

(Visitor.prototype.visitProtocolDecl):

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

Unreviewed, rolling out r221868.

Rolling out this change while we investigate test262 failures.

Reverted changeset:

"Turn on exception scope verification for JSC tests."
https://bugs.webkit.org/show_bug.cgi?id=162351
http://trac.webkit.org/changeset/221868

11:09 AM Changeset in webkit [222036] by commit-queue@webkit.org
  • 19 edits
    3 adds in trunk

Web Inspector: Timeline should show when events preventDefault() was called on an event or not
https://bugs.webkit.org/show_bug.cgi?id=176824
<rdar://problem/34290931>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-09-14
Reviewed by Devin Rousso.

Source/WebCore:

Test: inspector/timeline/timeline-event-EventDispatch.html

  • dom/EventTarget.cpp:

(WebCore::EventTarget::fireEventListeners):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::dispatchEvent):
Include defaultPrevented when notifying inspector.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didDispatchEventImpl):
(WebCore::InspectorInstrumentation::didDispatchEventOnWindowImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didDispatchEvent):
(WebCore::InspectorInstrumentation::didDispatchEventOnWindow):
Pass defaultPrevented on to agent.

  • inspector/InspectorTimelineAgent.cpp:

(WebCore::InspectorTimelineAgent::didDispatchEvent):
(WebCore::InspectorTimelineAgent::didLayout):
(WebCore::InspectorTimelineAgent::didPaint):

  • inspector/InspectorTimelineAgent.h:
  • inspector/TimelineRecordFactory.cpp:

(WebCore::TimelineRecordFactory::appendLayoutRoot):
(WebCore::TimelineRecordFactory::appendDidDispatchEventData):

  • inspector/TimelineRecordFactory.h:

Append a boolean defaultPrevented property on the EventDispatch timeline record's data.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:

New string.

  • UserInterface/Controllers/TimelineManager.js:

(WI.TimelineManager.prototype._processRecord):
Include the whole data object as extra details.

  • UserInterface/Models/ScriptTimelineRecord.js:

(WI.ScriptTimelineRecord):
(WI.ScriptTimelineRecord.prototype.get extraDetails):
Wholesale copy of the extra data instead of just a single property.

  • UserInterface/Views/ScriptDetailsTimelineView.js:

(WI.ScriptDetailsTimelineView):
Give the name column more initial space, there is still extra space
after this adjustment but name is comfortably larger (and the most
likely to be expanded).

  • UserInterface/Views/ScriptTimelineDataGridNode.js:

(WI.ScriptTimelineDataGridNode.prototype.get subtitle):
Include "default prevented" as the event's subtitle if it was prevented.

  • UserInterface/Protocol/InspectorBackend.js:

(InspectorBackend.Agent.prototype.dispatchEvent):
(InspectorBackend.Agent):

  • UserInterface/Test.html:
  • UserInterface/Test/Test.js:

(WI.loaded):
Add the ScriptProfilerObserver to tests since it is on by default for Timelines.

LayoutTests:

  • inspector/timeline/resources/timeline-event-utilities.js: Added.

(TestPage.registerInitializer.window.captureTimelineWithScript):
(TestPage.registerInitializer):
(finishRecording):
Helper code for creating a recording from a function.

  • inspector/timeline/timeline-event-EventDispatch-expected.txt: Added.
  • inspector/timeline/timeline-event-EventDispatch.html: Added.

Test for Timeline's EventDispatch records. Ensure it has
the new "defaultPrevented" details data.

11:05 AM Changeset in webkit [222035] by Yusuke Suzuki
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Disable Arity Fixup Inlining until crash in facebook.com is fixed
https://bugs.webkit.org/show_bug.cgi?id=176917

Reviewed by Saam Barati.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::inliningCost):

  • runtime/Options.h:
11:04 AM Changeset in webkit [222034] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Fixed typo in expectations.

Unreviewed test expectations.

  • platform/mac/TestExpectations:
10:55 AM Changeset in webkit [222033] by achristensen@apple.com
  • 25 edits in trunk

Add WKUIDelegatePrivate equivalent of WKPageUIClient's drawHeader, drawFooter, headerHeight, and footerHeight
https://bugs.webkit.org/show_bug.cgi?id=176889
<rdar://problem/29270035>

Reviewed by Andy Estes.

Source/WebKit:

  • UIProcess/API/C/WKPage.cpp:

(WKPageLoadAlternateHTMLString):
(WKPageLoadAlternateHTMLStringWithUserData):

  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:

(-[WKBrowsingContextController loadAlternateHTMLString:baseURL:forUnreachableURL:]):

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _loadAlternateHTMLString:baseURL:forUnreachableURL:]):

  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::headerHeight):
(WebKit::UIDelegate::UIClient::footerHeight):
(WebKit::UIDelegate::UIClient::drawHeader):
(WebKit::UIDelegate::UIClient::drawFooter):

  • UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm:

(-[WKReloadFrameErrorRecoveryAttempter attemptRecovery]):

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::printOperationWithPrintInfo):

  • UIProcess/FrameLoadState.cpp:

(WebKit::FrameLoadState::didStartProvisionalLoad):
(WebKit::FrameLoadState::didReceiveServerRedirectForProvisionalLoad):
(WebKit::FrameLoadState::didFailProvisionalLoad):
(WebKit::FrameLoadState::didCommitLoad):
(WebKit::FrameLoadState::didSameDocumentNotification):
(WebKit::FrameLoadState::setUnreachableURL):
(WebKit::FrameLoadState::FrameLoadState): Deleted.

  • UIProcess/FrameLoadState.h:

(WebKit::FrameLoadState::url const):
(WebKit::FrameLoadState::provisionalURL const):
(WebKit::FrameLoadState::unreachableURL const):

  • UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::loadURL):
(WebKit::WebFrameProxy::didStartProvisionalLoad):
(WebKit::WebFrameProxy::didReceiveServerRedirectForProvisionalLoad):
(WebKit::WebFrameProxy::didSameDocumentNavigation):
(WebKit::WebFrameProxy::setUnreachableURL):

  • UIProcess/WebFrameProxy.h:

(WebKit::WebFrameProxy::url const):
(WebKit::WebFrameProxy::provisionalURL const):
(WebKit::WebFrameProxy::unreachableURL const):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::loadAlternateHTMLString):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
(WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
(WebKit::WebFrameLoaderClient::dispatchDidChangeProvisionalURL):
(WebKit::WebFrameLoaderClient::dispatchDidChangeLocationWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidPushStateWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidReplaceStateWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidPopStateWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadURLInFrame):

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

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:

(-[PrintDelegate _webView:printFrame:]):
(-[PrintDelegate _webViewHeaderHeight:]):
(-[PrintDelegate _webViewFooterHeight:]):
(-[PrintDelegate _webView:drawHeaderInRect:forPageWithTitle:URL:]):
(-[PrintDelegate _webView:drawFooterInRect:forPageWithTitle:URL:]):
(callbacksEqual):
(TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebView hostWindow]):

10:53 AM Changeset in webkit [222032] by clopez@igalia.com
  • 2 edits in trunk/Tools

[GTK] Add a switch to start the mini-browser in full-screen mode
https://bugs.webkit.org/show_bug.cgi?id=176904

Reviewed by Carlos Garcia Campos.

  • MiniBrowser/gtk/main.c:

(main):

10:38 AM Changeset in webkit [222031] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Follow up expectations to r222008.

Unreviewed test gardening.

  • platform/ios/TestExpectations:
10:17 AM Changeset in webkit [222030] by Ryan Haddad
  • 19 edits
    15 deletes in trunk

Unreviewed, rolling out r222015.

The LayoutTests added with this change are flaky.

Reverted changeset:

"Web Inspector: Timeline should show when events
preventDefault() was called on an event or not"
https://bugs.webkit.org/show_bug.cgi?id=176824
http://trac.webkit.org/changeset/222015

9:56 AM Changeset in webkit [222029] by fpizlo@apple.com
  • 2 edits in trunk/Tools

Unreviewed, fix a typo that was preventing a test from running.

  • WebGPUShadingLanguageRI/Test.js:
9:45 AM Changeset in webkit [222028] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

[GTK] Fail to build using internal jhbuild if libgtk3-dev is not installed in the system
https://bugs.webkit.org/show_bug.cgi?id=176778

Reviewed by Carlos Alberto Lopez Perez.

We are building gtk+ in the jhbuild with introspection disabled, but Gtk-3.gir is required to build the
WebKitGTK+ introspection. Also, if wayland-protocols is not installed, gtk+ is built without the wayland backend
and it's no possible to enable the wayland target in WebKitGTK+ either.

  • gtk/jhbuild.modules: Do not disable introspection when building gtk+ and add wayland-protocols as a dependency.
9:43 AM Changeset in webkit [222027] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[GTK][Wayland] Flickering when resizing the window
https://bugs.webkit.org/show_bug.cgi?id=176774

Reviewed by Michael Catanzaro.

This regressed when we switched to always start the wayland compositor. In
AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState() we check if the nested compositor is
running, which is always true now (if EGL and the required extensions are available). We should check if we are
in AC mode instead.

  • UIProcess/AcceleratedDrawingAreaProxy.cpp:

(WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState):

9:35 AM Changeset in webkit [222026] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

Allow passing sequences to various WebGL2 methods.
https://bugs.webkit.org/show_bug.cgi?id=176892

Patch by Ms2ger <Ms2ger@igalia.com> on 2017-09-14
Reviewed by Sam Weinig.

This matches the specification as well as Gecko and Chromium.

Source/WebCore:

Test: fast/canvas/webgl/webgl2/sequences.html

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::uniform1uiv):
(WebCore::WebGL2RenderingContext::uniform2uiv):
(WebCore::WebGL2RenderingContext::uniform3uiv):
(WebCore::WebGL2RenderingContext::uniform4uiv):
(WebCore::WebGL2RenderingContext::uniformMatrix2x3fv):
(WebCore::WebGL2RenderingContext::uniformMatrix3x2fv):
(WebCore::WebGL2RenderingContext::uniformMatrix2x4fv):
(WebCore::WebGL2RenderingContext::uniformMatrix4x2fv):
(WebCore::WebGL2RenderingContext::uniformMatrix3x4fv):
(WebCore::WebGL2RenderingContext::uniformMatrix4x3fv):
(WebCore::WebGL2RenderingContext::vertexAttribI4iv):
(WebCore::WebGL2RenderingContext::vertexAttribI4uiv):
(WebCore::WebGL2RenderingContext::clearBufferiv):
(WebCore::WebGL2RenderingContext::clearBufferuiv):
(WebCore::WebGL2RenderingContext::clearBufferfv):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGL2RenderingContext.idl:

LayoutTests:

  • fast/canvas/webgl/webgl2/sequences-expected.txt: Added.
  • fast/canvas/webgl/webgl2/sequences.html: Added.
9:22 AM Changeset in webkit [222025] by commit-queue@webkit.org
  • 14 edits in trunk/Source/WebCore

[Cleanup] Cleanup uses of the FileList class
https://bugs.webkit.org/show_bug.cgi?id=176800

Patch by Sam Weinig <sam@webkit.org> on 2017-09-14
Reviewed by Alex Christensen.

  • fileapi/FileList.cpp:
  • fileapi/FileList.h:

Store list of files as Refs, rather than RefPtrs.
Add direct accessor to the underlying Vector for faster iteration.
Add file(unsigned) function to allow direct indexing, rather than using
the DOM exposed item function which always does a length check.

  • Modules/entriesapi/HTMLInputElementEntriesAPI.cpp:

Remove unused RuntimeEnabledFeatures.h #include.
Use modern for loop and the new direct file vector access.

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneSerializer::write):
(WebCore::CloneDeserializer::readFile):
(WebCore::CloneDeserializer::readTerminal):

Remove unnecessary #includes, adopt auto, and use modern for-loop
for FileList.

  • dom/DataTransfer.cpp:

(WebCore::DataTransfer::files const):
(WebCore::DataTransfer::hasFileOfType):

Use auto.

(WebCore::DataTransfer::createForInputEvent):

Use initializer list for the typeToStringMap.

  • dom/DataTransferItemList.cpp:

(WebCore::DataTransferItemList::ensureItems const):

Use auto and modern for-loop for FileList.

  • html/FileInputType.cpp:

(WebCore::FileInputType::filesFromFormControlState):
(WebCore::FileInputType::saveFormControlState const):
(WebCore::FileInputType::appendFormData const):
(WebCore::FileInputType::handleDOMActivateEvent):
(WebCore::FileInputType::getTypeSpecificValue):
(WebCore::FileInputType::disabledAttributeChanged):
(WebCore::FileInputType::multipleAttributeChanged):
(WebCore::FileInputType::setFiles):
(WebCore::FileInputType::receiveDroppedFiles):
(WebCore::FileInputType::defaultToolTip const):

Adopt auto, brace-initialization, and modern for-loops.

  • html/FileListCreator.cpp:

(WebCore::appendDirectoryFiles):
(WebCore::FileListCreator::createFileList):

Update to work in terms of Vector<Ref<File>>.

  • html/FormController.h:

(WebCore::FormControlState::FormControlState):

Re-format existing constructors and add one that takes an r-value
Vector<String> to allow construction from a pre-created list (used
in FileInputType::saveFormControlState)

  • platform/DragData.h:
  • platform/gtk/DragDataGtk.cpp:

(WebCore::DragData::asFilenames const):

  • platform/mac/DragDataMac.mm:

(WebCore::DragData::asFilenames const):

  • platform/win/DragDataWin.cpp:

(WebCore::DragData::asFilenames const):

Convert asFilenames to return, rather than take, a Vector<String>.

9:15 AM Changeset in webkit [222024] by jmarcell@apple.com
  • 8 edits
    2 adds in branches/safari-604-branch

Cherry-pick r222008. rdar://problem/34426473

9:15 AM Changeset in webkit [222023] by jmarcell@apple.com
  • 3 edits
    2 adds in branches/safari-604-branch

Cherry-pick r222005. rdar://problem/34426487

9:15 AM Changeset in webkit [222022] by jmarcell@apple.com
  • 2 edits in branches/safari-604-branch/Source/WebCore

Cherry-pick r221968. rdar://problem/34169683

9:09 AM Changeset in webkit [222021] by Ryan Haddad
  • 1 edit
    1 add in trunk/LayoutTests

Rebaseline fast/forms/append-children-during-form-submission.html for iOS.

Unreviewed test gardening.

  • platform/ios/fast/forms/append-children-during-form-submission-expected.txt: Added.
8:37 AM Changeset in webkit [222020] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[Harfbuzz] Wrong offset returned by HarfBuzzShaper::offsetForPosition() when target point is at the middle of a character
https://bugs.webkit.org/show_bug.cgi?id=176897

Reviewed by Michael Catanzaro.

We should include the character when the point is greater than the center of the character.

Fixes: fast/multicol/hit-test-end-of-column-with-line-height.html

fast/multicol/newmulticol/compare-with-old-impl/hit-test-end-of-column-with-line-height.html

  • platform/graphics/harfbuzz/HarfBuzzShaper.cpp:

(WebCore::HarfBuzzShaper::HarfBuzzRun::characterIndexForXPosition):

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

Mark svg/as-image/svg-image-with-data-uri-use-data-uri.svg as flaky.
https://bugs.webkit.org/show_bug.cgi?id=176901

Unreviewed test gardening.

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

Fix typo in entries-api test names.

Unreviewed test gardening.

  • platform/win/TestExpectations:
4:17 AM Changeset in webkit [222017] by Yusuke Suzuki
  • 21 edits
    1 add in trunk

[JSC] Add PrivateSymbolMode::{Include,Exclude} for PropertyNameArray
https://bugs.webkit.org/show_bug.cgi?id=176867

Reviewed by Sam Weinig.

JSTests:

  • microbenchmarks/object-get-own-property-symbols.js: Added.

(test):

Source/JavaScriptCore:

We rarely require private symbols when enumerating property names.
This patch adds PrivateSymbolMode::{Include,Exclude}. If PrivateSymbolMode::Exclude
is specified, PropertyNameArray does not include private symbols.
This removes many ad-hoc Identifier::isPrivateName() in enumeration operations.

One additional good thing is that we do not need to filter private symbols out from PropertyNameArray.
It allows us to use Object.keys()'s fast path for Object.getOwnPropertySymbols.

object-get-own-property-symbols 48.6275+-1.0021 38.1846+-1.7934 definitely 1.2735x faster

  • API/JSObjectRef.cpp:

(JSObjectCopyPropertyNames):

  • bindings/ScriptValue.cpp:

(Inspector::jsToInspectorValue):

  • bytecode/ObjectAllocationProfile.h:

(JSC::ObjectAllocationProfile::possibleDefaultPropertyCount):

  • runtime/EnumerationMode.h:
  • runtime/IntlObject.cpp:

(JSC::supportedLocales):

  • runtime/JSONObject.cpp:

(JSC::Stringifier::Stringifier):
(JSC::Stringifier::Holder::appendNextProperty):
(JSC::Walker::walk):

  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::JSPropertyNameEnumerator::create):

  • runtime/JSPropertyNameEnumerator.h:

(JSC::propertyNameEnumerator):

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorGetOwnPropertyDescriptors):
(JSC::objectConstructorAssign):
(JSC::objectConstructorValues):
(JSC::defineProperties):
(JSC::setIntegrityLevel):
(JSC::testIntegrityLevel):
(JSC::ownPropertyKeys):

  • runtime/PropertyNameArray.h:

(JSC::PropertyNameArray::PropertyNameArray):
(JSC::PropertyNameArray::propertyNameMode const):
(JSC::PropertyNameArray::privateSymbolMode const):
(JSC::PropertyNameArray::addUncheckedInternal):
(JSC::PropertyNameArray::addUnchecked):
(JSC::PropertyNameArray::add):
(JSC::PropertyNameArray::isUidMatchedToTypeMode):
(JSC::PropertyNameArray::includeSymbolProperties const):
(JSC::PropertyNameArray::includeStringProperties const):
(JSC::PropertyNameArray::mode const): Deleted.

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::performGetOwnPropertyNames):

Source/WebCore:

  • bindings/js/JSDOMConvertRecord.h:
  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::serialize):

  • bridge/NP_jsobject.cpp:

(_NPN_Enumerate):

Source/WebKit:

  • WebProcess/Plugins/Netscape/NPJSObject.cpp:

(WebKit::NPJSObject::enumerate):

Source/WebKitLegacy/mac:

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::NetscapePluginInstanceProxy::enumerate):

2:22 AM Changeset in webkit [222016] by rniwa@webkit.org
  • 1 edit
    2 copies in trunk/LayoutTests

Reverted r222014, and added El Capitan specific result for fast/forms/append-children-during-form-submission.html

  • fast/forms/append-children-during-form-submission-expected.txt: Reverted r222014.
  • platform/mac-elcapitan/fast/forms/append-children-during-form-submission-expected.txt: Added.
12:57 AM Changeset in webkit [222015] by commit-queue@webkit.org
  • 19 edits
    15 adds in trunk

Web Inspector: Timeline should show when events preventDefault() was called on an event or not
https://bugs.webkit.org/show_bug.cgi?id=176824
<rdar://problem/34290931>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-09-14
Reviewed by Devin Rousso.

Source/WebCore:

Tests: inspector/timeline/timeline-event-CancelAnimationFrame.html

inspector/timeline/timeline-event-EventDispatch.html
inspector/timeline/timeline-event-FireAnimationFrame.html
inspector/timeline/timeline-event-RequestAnimationFrame.html
inspector/timeline/timeline-event-TimerFire.html
inspector/timeline/timeline-event-TimerInstall.html
inspector/timeline/timeline-event-TimerRemove.html

  • dom/EventTarget.cpp:

(WebCore::EventTarget::fireEventListeners):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::dispatchEvent):
Include defaultPrevented when notifying inspector.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didDispatchEventImpl):
(WebCore::InspectorInstrumentation::didDispatchEventOnWindowImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didDispatchEvent):
(WebCore::InspectorInstrumentation::didDispatchEventOnWindow):
Pass defaultPrevented on to agent.

  • inspector/InspectorTimelineAgent.cpp:

(WebCore::InspectorTimelineAgent::didDispatchEvent):
(WebCore::InspectorTimelineAgent::didLayout):
(WebCore::InspectorTimelineAgent::didPaint):

  • inspector/InspectorTimelineAgent.h:
  • inspector/TimelineRecordFactory.cpp:

(WebCore::TimelineRecordFactory::appendLayoutRoot):
(WebCore::TimelineRecordFactory::appendDidDispatchEventData):

  • inspector/TimelineRecordFactory.h:

Append a boolean defaultPrevented property on the EventDispatch timeline record's data.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:

New string.

  • UserInterface/Controllers/TimelineManager.js:

(WI.TimelineManager.prototype._processRecord):
Include the whole data object as extra details.

  • UserInterface/Models/ScriptTimelineRecord.js:

(WI.ScriptTimelineRecord):
(WI.ScriptTimelineRecord.prototype.get extraDetails):
Wholesale copy of the extra data instead of just a single property.

  • UserInterface/Views/ScriptDetailsTimelineView.js:

(WI.ScriptDetailsTimelineView):
Give the name column more initial space, there is still extra space
after this adjustment but name is comfortably larger (and the most
likely to be expanded).

  • UserInterface/Views/ScriptTimelineDataGridNode.js:

(WI.ScriptTimelineDataGridNode.prototype.get subtitle):
Include "default prevented" as the event's subtitle if it was prevented.

  • UserInterface/Protocol/InspectorBackend.js:

(InspectorBackend.Agent.prototype.dispatchEvent):
(InspectorBackend.Agent):

  • UserInterface/Test.html:
  • UserInterface/Test/Test.js:

(WI.loaded):
Add the ScriptProfilerObserver to tests since it is on by default for Timelines.

LayoutTests:

  • inspector/timeline/resources/timeline-event-utilities.js: Added.

(TestPage.registerInitializer.window.captureTimelineWithScript):
(TestPage.registerInitializer):
(finishRecording):
Helper code for creating a recording from a function.

  • inspector/timeline/timeline-event-CancelAnimationFrame-expected.txt: Added.
  • inspector/timeline/timeline-event-CancelAnimationFrame.html: Added.
  • inspector/timeline/timeline-event-EventDispatch-expected.txt: Added.
  • inspector/timeline/timeline-event-EventDispatch.html: Added.
  • inspector/timeline/timeline-event-FireAnimationFrame-expected.txt: Added.
  • inspector/timeline/timeline-event-FireAnimationFrame.html: Added.
  • inspector/timeline/timeline-event-RequestAnimationFrame-expected.txt: Added.
  • inspector/timeline/timeline-event-RequestAnimationFrame.html: Added.
  • inspector/timeline/timeline-event-TimerFire-expected.txt: Added.
  • inspector/timeline/timeline-event-TimerFire.html: Added.
  • inspector/timeline/timeline-event-TimerInstall-expected.txt: Added.
  • inspector/timeline/timeline-event-TimerInstall.html: Added.
  • inspector/timeline/timeline-event-TimerRemove-expected.txt: Added.
  • inspector/timeline/timeline-event-TimerRemove.html: Added.

Tests for different, specific, Timeline domain EventTypes.
This includes EventDispatch with its new "defaultPrevented" details data.

12:37 AM Changeset in webkit [222014] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

Rebaseline a test after r222005.

  • fast/forms/append-children-during-form-submission-expected.txt:
12:01 AM Changeset in webkit [222013] by commit-queue@webkit.org
  • 12 edits
    1 add in trunk

Introduce the option to mark an HTML element as having AutoFill available.
https://bugs.webkit.org/show_bug.cgi?id=176710

Patch by Maureen Daum <mdaum@apple.com> on 2017-09-14
Reviewed by Alex Christensen.

Source/WebCore:

Introduce the option to mark an HTML element as having AutoFill available. Accessibility
can use this property when deciding whether to announce that the focused field offers
AutoFill.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::isValueAutofillAvailable const):
Check if the field is explicitly marked as having AutoFill available.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::HTMLInputElement):

  • html/HTMLInputElement.h:

(WebCore::HTMLInputElement::isAutoFillAvailable const):
(WebCore::HTMLInputElement::setAutoFillAvailable):

Source/WebKit:

Introduce the option to mark an HTML element as having AutoFill available. Accessibility
can use this property when deciding whether to announce that the focused field offers
AutoFill.

  • WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:

(WKBundleNodeHandleGetHTMLInputElementAutoFillAvailable):
(WKBundleNodeHandleSetHTMLInputElementAutoFillAvailable):

  • WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h:
  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:

(WebKit::InjectedBundleNodeHandle::isAutoFillAvailable const):
(WebKit::InjectedBundleNodeHandle::setAutoFillAvailable):

  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:

Tools:

Add an API test that verifies after we mark a field as having AutoFill available,
Accessibility also considers it to have AutoFill available.

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

Create an input element, mark it as having AutoFill available, then focus it so that
we can get the accessibility information for it. Ask accessibility whether it considers
the field to have AutoFill available, and pick the alert message based on that.
(-[AutoFillAvailable webProcessPlugIn:didCreateBrowserContextController:]):

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:

(TEST):
(-[AutoFillAvailableDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
Verify that we get the alert message indicating that accessibility indeed considers
the input element as having AutoFill available after we explicitly marked it as so.

Sep 13, 2017:

11:57 PM Changeset in webkit [222012] by commit-queue@webkit.org
  • 5 edits
    1 add in trunk/Source/WebCore

[Curl] Move response related features into ResourceResponse
https://bugs.webkit.org/show_bug.cgi?id=174654

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-09-13
Reviewed by Alex Christensen.

  • platform/Curl.cmake:
  • platform/network/curl/ResourceHandleCurlDelegate.cpp:

(WebCore::ResourceHandleCurlDelegate::didReceiveAllHeaders):
(WebCore::ResourceHandleCurlDelegate::didReceiveHeader):
(WebCore::isHttpRedirect): Deleted.
(WebCore::isHttpAuthentication): Deleted.
(WebCore::isHttpNotModified): Deleted.
(WebCore::isAppendableHeader): Deleted.
(WebCore::ResourceHandleCurlDelegate::didReceiveHeaderLine): Deleted.

  • platform/network/curl/ResourceHandleCurlDelegate.h:
  • platform/network/curl/ResourceResponse.h:

(WebCore::ResourceResponse::platformSuggestedFilename const): Deleted.

  • platform/network/curl/ResourceResponseCurl.cpp: Added.

(WebCore::ResourceResponse::isAppendableHeader):
(WebCore::ResourceResponse::appendHTTPHeaderField):
(WebCore::ResourceResponse::setStatusLine):
(WebCore::ResourceResponse::platformSuggestedFilename const):
(WebCore::ResourceResponse::isRedirection const):
(WebCore::ResourceResponse::isNotModified const):
(WebCore::ResourceResponse::isUnauthorized const):

11:19 PM Changeset in webkit [222011] by don.olmstead@sony.com
  • 2 edits in trunk

[CMake] Detect harfbuzz without pkgconfig
https://bugs.webkit.org/show_bug.cgi?id=176886

Reviewed by Michael Catanzaro.

  • Source/cmake/FindHarfBuzz.cmake:
11:10 PM Changeset in webkit [222010] by rniwa@webkit.org
  • 3 edits
    1 move in trunk/LayoutTests

Fix a typo in the directory name: editing/pasteboard/enties-api.

Rubber-stamped by Wenson Hsieh.

  • editing/pasteboard/entries-api: Renamed from LayoutTests/editing/pasteboard/enties-api.
  • platform/win/TestExpectations:
  • platform/wk2/TestExpectations:
9:21 PM Changeset in webkit [222009] by mark.lam@apple.com
  • 39 edits
    1 delete in trunk

Rolling out r221832: Regresses Speedometer by ~4% and Dromaeo CSS YUI by ~20%.
https://bugs.webkit.org/show_bug.cgi?id=176888
<rdar://problem/34381832>

Not reviewed.

JSTests:

  • stress/op_mod-ConstVar.js:
  • stress/op_mod-VarConst.js:
  • stress/op_mod-VarVar.js:

Source/JavaScriptCore:

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/MacroAssembler.cpp:

(JSC::stdFunctionCallback):

  • assembler/MacroAssemblerPrinter.cpp:

(JSC::Printer::printCallback):

  • assembler/ProbeContext.h:

(JSC::Probe:: const):
(JSC::Probe::Context::Context):
(JSC::Probe::Context::gpr):
(JSC::Probe::Context::spr):
(JSC::Probe::Context::fpr):
(JSC::Probe::Context::gprName):
(JSC::Probe::Context::sprName):
(JSC::Probe::Context::fprName):
(JSC::Probe::Context::pc):
(JSC::Probe::Context::fp):
(JSC::Probe::Context::sp):
(JSC::Probe::CPUState::gpr const): Deleted.
(JSC::Probe::CPUState::spr const): Deleted.
(JSC::Probe::Context::arg): Deleted.
(JSC::Probe::Context::gpr const): Deleted.
(JSC::Probe::Context::spr const): Deleted.
(JSC::Probe::Context::fpr const): Deleted.

  • assembler/ProbeFrame.h: Removed.
  • assembler/ProbeStack.cpp:

(JSC::Probe::Page::Page):

  • assembler/ProbeStack.h:

(JSC::Probe::Page::get):
(JSC::Probe::Page::set):
(JSC::Probe::Page::physicalAddressFor):
(JSC::Probe::Stack::lowWatermark):
(JSC::Probe::Stack::get):
(JSC::Probe::Stack::set):

  • bytecode/ArithProfile.cpp:
  • bytecode/ArithProfile.h:
  • bytecode/ArrayProfile.h:

(JSC::ArrayProfile::observeArrayMode): Deleted.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::updateOSRExitCounterAndCheckIfNeedToReoptimize): Deleted.

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::addressOfOSRExitCounter):

  • bytecode/ExecutionCounter.h:

(JSC::ExecutionCounter::hasCrossedThreshold const): Deleted.
(JSC::ExecutionCounter::setNewThresholdForOSRExit): Deleted.

  • bytecode/MethodOfGettingAValueProfile.cpp:

(JSC::MethodOfGettingAValueProfile::reportValue): Deleted.

  • bytecode/MethodOfGettingAValueProfile.h:
  • dfg/DFGDriver.cpp:

(JSC::DFG::compileImpl):

  • dfg/DFGJITCode.cpp:

(JSC::DFG::JITCode::findPC):

  • dfg/DFGJITCode.h:
  • dfg/DFGJITCompiler.cpp:

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

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::setPatchableCodeOffset):
(JSC::DFG::OSRExit::getPatchableCodeOffsetAsJump const):
(JSC::DFG::OSRExit::codeLocationForRepatch const):
(JSC::DFG::OSRExit::correctJump):
(JSC::DFG::OSRExit::emitRestoreArguments):
(JSC::DFG::OSRExit::compileOSRExit):
(JSC::DFG::OSRExit::compileExit):
(JSC::DFG::OSRExit::debugOperationPrintSpeculationFailure):
(JSC::DFG::jsValueFor): Deleted.
(JSC::DFG::restoreCalleeSavesFor): Deleted.
(JSC::DFG::saveCalleeSavesFor): Deleted.
(JSC::DFG::restoreCalleeSavesFromVMEntryFrameCalleeSavesBuffer): Deleted.
(JSC::DFG::copyCalleeSavesToVMEntryFrameCalleeSavesBuffer): Deleted.
(JSC::DFG::saveOrCopyCalleeSavesFor): Deleted.
(JSC::DFG::createDirectArgumentsDuringExit): Deleted.
(JSC::DFG::createClonedArgumentsDuringExit): Deleted.
(JSC::DFG::emitRestoreArguments): Deleted.
(JSC::DFG::OSRExit::executeOSRExit): Deleted.
(JSC::DFG::reifyInlinedCallFrames): Deleted.
(JSC::DFG::adjustAndJumpToTarget): Deleted.
(JSC::DFG::printOSRExit): Deleted.

  • dfg/DFGOSRExit.h:

(JSC::DFG::OSRExitState::OSRExitState): Deleted.

  • dfg/DFGOSRExitCompilerCommon.cpp:
  • dfg/DFGOSRExitCompilerCommon.h:
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGThunks.cpp:

(JSC::DFG::osrExitGenerationThunkGenerator):
(JSC::DFG::osrExitThunkGenerator): Deleted.

  • dfg/DFGThunks.h:
  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::debugCall):

  • jit/AssemblyHelpers.h:
  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • profiler/ProfilerOSRExit.h:

(JSC::Profiler::OSRExit::incCount): Deleted.

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:
  • runtime/VM.h:
8:48 PM Changeset in webkit [222008] by Alan Bujtas
  • 8 edits
    2 adds in trunk

Switch multicolumn's spanner map from raw over to weak pointers.
https://bugs.webkit.org/show_bug.cgi?id=176367
<rdar://problem/34254896>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/multicol/spanner-crash-when-adding-summary.html

  • rendering/RenderMultiColumnFlowThread.cpp:

(WebCore::RenderMultiColumnFlowThread::evacuateAndDestroy):
(WebCore::RenderMultiColumnFlowThread::flowThreadDescendantInserted):
(WebCore::RenderMultiColumnFlowThread::handleSpannerRemoval):

  • rendering/RenderMultiColumnFlowThread.h:
  • rendering/RenderMultiColumnSet.cpp:

(WebCore::RenderMultiColumnSet::firstRendererInFlowThread const):
(WebCore::RenderMultiColumnSet::lastRendererInFlowThread const):

  • rendering/RenderMultiColumnSpannerPlaceholder.cpp:

(WebCore::RenderMultiColumnSpannerPlaceholder::RenderMultiColumnSpannerPlaceholder):

  • rendering/RenderMultiColumnSpannerPlaceholder.h:

LayoutTests:

  • fast/multicol/spanner-crash-when-adding-summary-expected.txt: Added.
  • fast/multicol/spanner-crash-when-adding-summary.html: Added.
8:32 PM Changeset in webkit [222007] by Yusuke Suzuki
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Move class/struct used in other class' member out of anonymous namespace
https://bugs.webkit.org/show_bug.cgi?id=176876

Reviewed by Saam Barati.

GCC warns if a class has a base or field whose type uses the anonymous namespace
and it is defined in an included file. This is because this possibly violates
one definition rule (ODR): if an included file has the anonymous namespace, each
translation unit creates its private anonymous namespace. Thus, each type
inside the anonymous namespace becomes different in each translation unit if
the file is included in multiple translation units.

While the current use in JSC is not violating ODR since these cpp files are included
only once for unified sources, specifying -Wno-subobject-linkage could miss
the actual bugs. So, in this patch, we just move related classes/structs out of
the anonymous namespace.

  • dfg/DFGIntegerCheckCombiningPhase.cpp:

(JSC::DFG::IntegerCheckCombiningPhase::RangeKey::addition):
(JSC::DFG::IntegerCheckCombiningPhase::RangeKey::arrayBounds):
(JSC::DFG::IntegerCheckCombiningPhase::RangeKey::operator! const):
(JSC::DFG::IntegerCheckCombiningPhase::RangeKey::hash const):
(JSC::DFG::IntegerCheckCombiningPhase::RangeKey::operator== const):
(JSC::DFG::IntegerCheckCombiningPhase::RangeKey::dump const):
(JSC::DFG::IntegerCheckCombiningPhase::RangeKeyAndAddend::RangeKeyAndAddend):
(JSC::DFG::IntegerCheckCombiningPhase::RangeKeyAndAddend::operator! const):
(JSC::DFG::IntegerCheckCombiningPhase::RangeKeyAndAddend::dump const):
(JSC::DFG::IntegerCheckCombiningPhase::Range::dump const):

  • dfg/DFGLICMPhase.cpp:
8:12 PM Changeset in webkit [222006] by wilander@apple.com
  • 27 edits
    23 adds in trunk

Introduce Storage Access API (document parts) as an experimental feature
https://bugs.webkit.org/show_bug.cgi?id=175759
<rdar://problem/34414107>

Reviewed by Alex Christensen.

Source/WebCore:

Storage Access API is an experimental feature which allows cross-origin,
sandboxed iframes to request access to their first-party storage (as
opposed to partitioned storage). This might be restricted to cookies or
might cover all stateful mechanisms.

It introduces the following three developer-facing things:

  • A new readonly attribute, document.hasStorageAccess.
  • A new function, document.requestStorageAccess().
  • A new iframe sandbox token, allow-storage-access-by-user-activation.

Tests: http/tests/storageAccess/request-and-deny-storage-access-cross-origin-iframe.html

http/tests/storageAccess/request-and-deny-storage-access-cross-origin-sandboxed-iframe.html
http/tests/storageAccess/request-and-grant-storage-access-cross-origin-iframe.html
http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe.html
http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-with-unique-origin.html
http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-without-allow-token.html
http/tests/storageAccess/request-storage-access-same-origin-iframe.html
http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe-without-allow-token.html
http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe.html
http/tests/storageAccess/request-storage-access-top-frame.html

  • dom/Document.cpp:

(WebCore::Document::requestStorageAccess):

  • dom/Document.h:

(WebCore::Document::hasStorageAccess const):
(WebCore::Document::setUserGrantsStorageAccessOverride):

See comments on WebCore::Internals below.

  • dom/Document.idl:
  • dom/SecurityContext.cpp:

(WebCore::SecurityContext::isSupportedSandboxPolicy):
(WebCore::SecurityContext::parseSandboxPolicy):

Support for allow-storage-access-by-user-activation.

  • dom/SecurityContext.h:
  • loader/ResourceLoadObserver.cpp:

(WebCore::ResourceLoadObserver::registerStorageAccess):

Newly granted storage access is reported to
WebCore::ResourceLoadObserver.

  • loader/ResourceLoadObserver.h:
  • loader/ResourceLoadStatistics.cpp:

(WebCore::encodeHashSet):
(WebCore::ResourceLoadStatistics::encode const):
(WebCore::decodeHashSet):
(WebCore::ResourceLoadStatistics::decode):
(WebCore::appendHashSet):
(WebCore::ResourceLoadStatistics::toString const):
(WebCore::mergeHashSet):
(WebCore::ResourceLoadStatistics::merge):

Storage of the new type of data.

  • loader/ResourceLoadStatistics.h:
  • page/Settings.in:
  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setUserGrantsStorageAccess):

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

Added setUserGrantsStorageAccess(). It is used to
override the eventSender's keyboard input which
always results in a cancel action on the confirm()
dialog.

Source/WebKit:

Storage Access API is an experimental feature which allows cross-origin,
sandboxed iframes to request access to their first-party storage (as
opposed to partitioned storage). This might be restricted to cookies or
might cover all stateful mechanisms.

It introduces the following three developer-facing things:

  • A new readonly attribute, document.hasStorageAccess.
  • A new function, document.requestStorageAccess().
  • A new iframe sandbox token, allow-storage-access-by-user-activation.
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
(IPC::ArgumentCoder<ResourceLoadStatistics>::decode):

Storage handling of the new type of data.

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetStorageAccessAPIEnabled):
(WKPreferencesGetStorageAccessAPIEnabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

Bumped the model version from 9 to 10.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

Turns the feature on for tests.

LayoutTests:

Storage Access API is an experimental feature which allows cross-origin,
sandboxed iframes to request access to their first-party storage (as
opposed to partitioned storage). This might be restricted to cookies or
might cover all stateful mechanisms.

It introduces the following three developer-facing things:

  • A new readonly attribute, document.hasStorageAccess.
  • A new function, document.requestStorageAccess().
  • A new iframe sandbox token, allow-storage-access-by-user-activation.
  • TestExpectations:
  • http/tests/storageAccess: Added.
  • http/tests/storageAccess/request-and-deny-storage-access-cross-origin-iframe-expected.txt: Added.
  • http/tests/storageAccess/request-and-deny-storage-access-cross-origin-iframe.html: Added.
  • http/tests/storageAccess/request-and-deny-storage-access-cross-origin-sandboxed-iframe-expected.txt: Added.
  • http/tests/storageAccess/request-and-deny-storage-access-cross-origin-sandboxed-iframe.html: Added.
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-iframe-expected.txt: Added.
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-iframe.html: Added.
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-expected.txt: Added.
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe.html: Added.
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-with-unique-origin-expected.txt: Added.
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-with-unique-origin.html: Added.
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-without-allow-token-expected.txt: Added.
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-without-allow-token.html: Added.
  • http/tests/storageAccess/request-storage-access-same-origin-iframe-expected.txt: Added.
  • http/tests/storageAccess/request-storage-access-same-origin-iframe.html: Added.
  • http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe-expected.txt: Added.
  • http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe-without-allow-token-expected.txt: Added.
  • http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe-without-allow-token.html: Added.
  • http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe.html: Added.
  • http/tests/storageAccess/request-storage-access-top-frame-expected.txt: Added.
  • http/tests/storageAccess/request-storage-access-top-frame.html: Added.
  • http/tests/storageAccess/resources: Added.
  • http/tests/storageAccess/resources/request-storage-access-iframe.html: Added.
  • platform/mac-wk2/TestExpectations:

New test cases that require a user gesture marked as [ Pass ].
Also removed reference to (now closed) https://bugs.webkit.org/show_bug.cgi?id=175170.

  • platform/wk2/TestExpectations:

New test case request-storage-access-top-frame.html marked as [ Pass ].

6:49 PM Changeset in webkit [222005] by Wenson Hsieh
  • 3 edits
    2 adds in trunk

Submitting a form can cause HTMLFormElement's associated elements vector to be mutated during iteration
https://bugs.webkit.org/show_bug.cgi?id=176368
<rdar://problem/34254998>

Reviewed by Ryosuke Niwa.

Source/WebCore:

In the process of iterating over form.associatedElements() during form submission in FormSubmission::create, the
page may cause us to clobber the vector of FormAssociatedElements* we're currently iterating over by inserting
new form controls beneath the form element we're in the process of submitting. This happens because
FormSubmission::create calls HTMLTextAreaElement::appendFormData, which requires layout to be up to date, which
in turn makes us updateLayout() and set focus, which fires a change event, upon which the page's JavaScript
inserts additonal DOM nodes into the form, modifying the vector of associated elements.

To mitigate this, instead of iterating over HTMLFormElement::associatedElements(), which returns a reference to
the HTMLFormElement's actual m_associatedElements vector, we iterate over a new vector of
Ref<FormAssociatedElement>s created from m_associatedElements.

This patch also removes an event dispatch assertion added in r212026. This assertion was added to catch any
other events dispatched in this scope, since dispatching events there would have had security implications, but
after making iteration over associated elements robust, this NoEventDispatchAssertion is no longer useful.

Test: fast/forms/append-children-during-form-submission.html

  • loader/FormSubmission.cpp:

(WebCore::FormSubmission::create):

LayoutTests:

Adds a new test to make sure we don't crash when mutating a form's associated elements during form submission.

  • fast/forms/append-children-during-form-submission-expected.txt: Added.
  • fast/forms/append-children-during-form-submission.html: Added.
6:44 PM Changeset in webkit [222004] by aestes@apple.com
  • 2 edits in trunk/Source/WebKit

[Apple Pay] Consider phoneticName when encoding ContactFields
https://bugs.webkit.org/show_bug.cgi?id=176885
<rdar://problem/34176419>

Reviewed by Tim Horton.

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<ApplePaySessionPaymentRequest::ContactFields>::encode):
(IPC::ArgumentCoder<ApplePaySessionPaymentRequest::ContactFields>::decode):

6:30 PM WebKitGTK/2.16.x edited by clopez@igalia.com
(diff)
5:32 PM Changeset in webkit [222003] by webkit@devinrousso.com
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: allow recordings to be saved via ⌘-S in the Recording tab
https://bugs.webkit.org/show_bug.cgi?id=175284

Reviewed by Matt Baker.

  • UserInterface/Views/RecordingContentView.js:

(WI.RecordingContentView.prototype.get supportsSave):
(WI.RecordingContentView.prototype.get saveData):

  • UserInterface/Views/RecordingNavigationSidebarPanel.js:

(WI.RecordingNavigationSidebarPanel.prototype._exportNavigationItemClicked):
Use the current content view's saveData when exporting.

4:50 PM Changeset in webkit [222002] by webkit@devinrousso.com
  • 13 edits
    2 adds in trunk

Web Inspector: Event Listeners section does not update when listeners are added/removed
https://bugs.webkit.org/show_bug.cgi?id=170570
<rdar://problem/31501645>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

  • inspector/protocol/DOM.json:

Add two new events: "didAddEventListener" and "willRemoveEventListener". These events do not
contain any information about the event listeners that were added/removed. They serve more
as indications that something has changed, and to refetch the data again via getEventListenersForNode.

Source/WebCore:

Test: inspector/dom/event-listener-add-remove.html

  • dom/EventTarget.cpp:

(WebCore::EventTarget::setAttributeEventListener):
Fire willRemoveEventListener/didAddEventListener events when an attribute event listener is
replaced by another event listener.

  • inspector/InspectorDOMAgent.h:
  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::didAddEventListener):
(WebCore::InspectorDOMAgent::willRemoveEventListener):
Dispatch an event to the inspector frontend whenever an event listener is added/removed.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didAddEventListenerImpl):
(WebCore::InspectorInstrumentation::willRemoveEventListenerImpl):
Tie into existing instrumentation points for adding/removing event listeners.

Source/WebInspectorUI:

  • UserInterface/Protocol/DOMObserver.js:

(WI.DOMObserver.prototype.didAddEventListener):
(WI.DOMObserver.prototype.willRemoveEventListener):

  • UserInterface/Controllers/DOMTreeManager.js:

(WI.DOMTreeManager.prototype.didAddEventListener):
(WI.DOMTreeManager.prototype.willRemoveEventListener):

  • UserInterface/Models/DOMNode.js:

Add "EventListenersChanged" event. Fired when an event listener is added or removed.

  • UserInterface/Views/DOMNodeDetailsSidebarPanel.js:

(WI.DOMNodeDetailsSidebarPanel.prototype.addEventListeners):
(WI.DOMNodeDetailsSidebarPanel.prototype.removeEventListeners):
(WI.DOMNodeDetailsSidebarPanel.prototype._eventListenersChanged):
Refresh the event listeners section whenever a node's event listeners change.

LayoutTests:

  • inspector/dom/event-listener-add-remove-expected.txt: Added.
  • inspector/dom/event-listener-add-remove.html: Added.
4:46 PM Changeset in webkit [222001] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Sort by size issues with Cookies and ApplicationCache DataGrids
https://bugs.webkit.org/show_bug.cgi?id=176879
<rdar://problem/34237096>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-09-13
Reviewed by Matt Baker.

  • UserInterface/Views/ApplicationCacheFrameContentView.js:

(WI.ApplicationCacheFrameContentView.prototype._sortDataGrid):
(WI.ApplicationCacheFrameContentView.prototype._populateDataGrid):
This uses very dumb DataGridNodes with a pure data object. In that
object size is a bytes string not a number. Include the number size
in this data object that can be used during sorting.

  • UserInterface/Views/CookieStorageContentView.js:

(WI.CookieStorageContentView.prototype._rebuildTable):
Simplify creation. Also don't reset sort options. Note that here the
DataGridNodes have access to the Cookie object and can already sort size
using the cookie's size (a number) and not the data's size (string).

  • UserInterface/Views/DataGrid.js:

(WI.DataGrid.prototype.sortNodes):
(WI.DataGrid.prototype._sortNodesCallback):
If sortNodes was called twice, it would defer the sort and actually
do the sort with the first comparator and not the latest, preferred
comparator. Make it use the latest comparator.

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

Mark storage/indexeddb/modern/idbtransaction-objectstore-failures.html as flaky on Windows.
https://bugs.webkit.org/show_bug.cgi?id=176880

Unreviewed test gardening.

  • platform/win/TestExpectations:
4:33 PM Changeset in webkit [221999] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[Curl] Bug fix for synchronous transfer
https://bugs.webkit.org/show_bug.cgi?id=176552

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-09-13
Reviewed by Alex Christensen.

ResourceHandleInternal::m_delegate is null when transfer is synchronous. It should be set ResourceHandleCurlDelegate.
Also the callback functions called when transfer is completed is wrong.

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::platformLoadResourceSynchronously):

  • platform/network/curl/ResourceHandleCurlDelegate.cpp:

(WebCore::ResourceHandleCurlDelegate::dispatchSynchronousJob):
(WebCore::ResourceHandleCurlDelegate::notifyFinish):
(WebCore::ResourceHandleCurlDelegate::notifyFail):
(WebCore::ResourceHandleCurlDelegate::didReceiveHeader):
(WebCore::ResourceHandleCurlDelegate::didReceiveData):
(WebCore::ResourceHandleCurlDelegate::willSendData):

4:20 PM Changeset in webkit [221998] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Redesign: display @media section headers
https://bugs.webkit.org/show_bug.cgi?id=176289
<rdar://problem/34228389>

Reviewed by Devin Rousso.

Prepend CSS media query selectors to every matching rule.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:

(.spreadsheet-css-declaration .media-label):

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:

(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._createMediaHeader):
Don't localize "@media" since it's CSS code.
Don't display "all" or "screen" media query selectors. One of the goals of the
Styles sidebar redesign is to fit more data.

3:47 PM Changeset in webkit [221997] by Matt Lewis
  • 26 edits
    21 deletes in trunk

Unreviewed, rolling out r221976.

The test introduced was flaky from point of addition.

Reverted changeset:

"Introduce Storage Access API (document parts) as an
experimental feature"
https://bugs.webkit.org/show_bug.cgi?id=175759
http://trac.webkit.org/changeset/221976

3:00 PM Changeset in webkit [221996] by commit-queue@webkit.org
  • 6 edits
    2 adds in trunk

Followup (r221805): Address comments and add more tests
https://bugs.webkit.org/show_bug.cgi?id=176732

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-09-13
Reviewed by Darin Adler.

Source/WebCore:

Test: http/tests/images/decode-slow-load-static-image.html

Code clean up and adding a new test to ensure multiple decode() promises
can be resolved or rejected simultaneously without any issues.

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::decode):
(WebCore::ImageLoader::decodeError):

  • loader/ImageLoader.h:
  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::decode):
(WebCore::BitmapImage::callDecodingCallbacks):

  • platform/graphics/BitmapImage.h:

LayoutTests:

  • http/tests/images/decode-slow-load-static-image-expected.txt: Added.
  • http/tests/images/decode-slow-load-static-image.html: Added.
1:56 PM Changeset in webkit [221995] by commit-queue@webkit.org
  • 17 edits in trunk

Internals clearCacheStorageMemoryRepresentation should return a Promise
https://bugs.webkit.org/show_bug.cgi?id=176818

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

Source/WebCore:

No observable change of behavior.

  • Modules/cache/DOMCacheEngine.h:
  • testing/Internals.cpp:

(WebCore::Internals::clearCacheStorageMemoryRepresentation): Returning a promise when clearing is completed.

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

Source/WebKit:

Adding a completion handler to clearMemoryRepresentation.

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::clearMemoryRepresentation):

  • NetworkProcess/cache/CacheStorageEngine.h:
  • NetworkProcess/cache/CacheStorageEngineConnection.cpp:

(WebKit::CacheStorageEngineConnection::clearMemoryRepresentation):

  • NetworkProcess/cache/CacheStorageEngineConnection.h:
  • NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
  • WebProcess/Cache/WebCacheStorageConnection.cpp:

(WebKit::WebCacheStorageConnection::clearMemoryRepresentation):
(WebKit::WebCacheStorageConnection::clearMemoryRepresentationCompleted):

  • WebProcess/Cache/WebCacheStorageConnection.h:
  • WebProcess/Cache/WebCacheStorageConnection.messages.in:

LayoutTests:

Updating tests to interact with the caches after the clearCacheStorageMemoryRepresentation promise is completed.

  • http/tests/cache-storage/cache-origins.https.html:
  • http/tests/cache-storage/cache-persistency.https.html:
1:55 PM Changeset in webkit [221994] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Fixed expectations of imported/w3c/web-platform-tests/html/webappapis/timers/type-long-setinterval.html.

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:48 PM Changeset in webkit [221993] by Nikita Vasilyev
  • 11 edits in trunk

Web Inspector: Frontend should be made to expect and handle disabled properties
https://bugs.webkit.org/show_bug.cgi?id=166787
<rdar://problem/34379593>

Reviewed by Joseph Pecoraro.

Source/WebCore:

Include disabled (commented out) CSS properties in the payload.

Tests: inspector/css/css-property.html

inspector/css/matched-style-properties.html

  • inspector/InspectorStyleSheet.cpp:

(WebCore::InspectorStyle::populateAllProperties const):
(WebCore::InspectorStyle::styleWithProperties const):

Source/WebInspectorUI:

This change introduces WI.CSSStyleDeclaration.prototype.allProperties getter,
that includes both enabled and disabled (commented out) CSS properties.

The existing WI.CSSStyleDeclaration.prototype.properties getter only includes enabled CSS properties,
same as before the backend change.

There is no behaviour change in the current styles sidebar. The new redesigned styles sidebar will
use disabled properties and display them as commented out.

  • UserInterface/Models/CSSProperty.js:

(WI.CSSProperty.prototype.get attached):
Rename enabled to attached, as it didn't correspond to _enabled property. Attached means that the property
is enabled and has a ownerStyle with a set index (unless it's a computed style, where index is not applicable).

(WI.CSSProperty.prototype.get enabled):

  • UserInterface/Models/CSSStyleDeclaration.js:

(WI.CSSStyleDeclaration.prototype.get allProperties):
Add allProperties getter that will be used in the new styles sidebar.

  • UserInterface/Models/DOMNodeStyles.js:

(WI.DOMNodeStyles.prototype._markOverriddenProperties):

  • UserInterface/Views/CSSStyleDeclarationTextEditor.js:

(WI.CSSStyleDeclarationTextEditor.prototype.highlightProperty.propertiesMatch):
Rename "enabled" to "attached" without any behavior change.

LayoutTests:

Add test cases for disabled (commented out) CSS properties.

  • inspector/css/css-property-expected.txt:
  • inspector/css/css-property.html:

Add test cases for previously untested enabled and newly added attached getters.

  • inspector/css/matched-style-properties.html:
1:43 PM Changeset in webkit [221992] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Test gardening
https://bugs.webkit.org/show_bug.cgi?id=176871

Patch by Alicia Boya García <aboya@igalia.com> on 2017-09-13
Reviewed by Michael Catanzaro.

  • platform/gtk/TestExpectations:
1:39 PM Changeset in webkit [221991] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline http/tests/loading/state-object-security-exception.html after r221978.
https://bugs.webkit.org/show_bug.cgi?id=176730

Unreviewed test gardening.

  • http/tests/loading/state-object-security-exception-expected.txt:
1:39 PM WebKitGTK/2.18.x edited by clopez@igalia.com
(diff)
1:24 PM Changeset in webkit [221990] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Escape in global search field should clear it
https://bugs.webkit.org/show_bug.cgi?id=176764

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-09-13
Reviewed by Timothy Hatcher.

  • UserInterface/Views/QuickConsole.js:

(WI.QuickConsole.prototype._toggleOrFocus):
Don't implicitly prevent default. So if we didn't cause an action we
can let the default system action happen.

  • UserInterface/Views/SearchBar.js:

(WI.SearchBar):
Remove unused keyboard shortcuts.

1:17 PM Changeset in webkit [221989] by clopez@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK] Fails to build because 'Float32Array' has not been declared in AudioContext.h
https://bugs.webkit.org/show_bug.cgi?id=176870

Reviewed by Konstantin Tokarev.

Add missing include of Float32Array.h

No new tests, its a build fix.

  • Modules/webaudio/AudioContext.h:
1:04 PM Changeset in webkit [221988] by jmarcell@apple.com
  • 7 edits in trunk/Source

Versioning.

1:03 PM Changeset in webkit [221987] by jmarcell@apple.com
  • 1 copy in tags/Safari-605.1.6

Tag Safari-605.1.6.

1:02 PM Changeset in webkit [221986] by aestes@apple.com
  • 17 edits in trunk/Source

[CF] Upstream CFNetwork-related WebKitSystemInterface functions
https://bugs.webkit.org/show_bug.cgi?id=176729

Reviewed by Alex Christensen.

Source/WebCore:

  • platform/ios/WebCoreSystemInterfaceIOS.mm:
  • platform/mac/PublicSuffixMac.mm:

(WebCore::isPublicSuffix):

  • platform/mac/WebCoreSystemInterface.h:
  • platform/mac/WebCoreSystemInterface.mm:
  • platform/network/cf/ResourceRequestCFNet.cpp:

(WebCore::ResourceRequest::doUpdatePlatformRequest):
(WebCore::ResourceRequest::doUpdateResourceRequest):

  • platform/network/cf/SocketStreamHandleImplCFNet.cpp:

(WebCore::setCONNECTProxyForStream):
(WebCore::SocketStreamHandleImpl::createStreams):
(WebCore::setCONNECTProxyAuthorizationForStream):
(WebCore::SocketStreamHandleImpl::addCONNECTCredentials):
(WebCore::copyCONNECTProxyResponse):
(WebCore::SocketStreamHandleImpl::readStreamCallback):
(WebCore::SocketStreamHandleImpl::writeStreamCallback):

  • platform/network/cocoa/ResourceRequestCocoa.mm:

(WebCore::ResourceRequest::doUpdateResourceRequest):
(WebCore::ResourceRequest::doUpdatePlatformRequest):

Source/WebCore/PAL:

  • pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::createSerializableRepresentation):
(IPC::dictionaryValueOfType):
(IPC::createArchiveList):
(IPC::createCFURLRequestFromSerializableRepresentation):
(IPC::createNSURLRequestFromSerializableRepresentation):
(IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
(IPC::ArgumentCoder<ResourceRequest>::decodePlatformData):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::legacyPlatformDefaultCacheStorageDirectory):
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory):

  • WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:

(InitWebCoreSystemInterface):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebSystemInterface.mm:

(InitWebCoreSystemInterface):

  • WebView/WebView.mm:

(+[WebView _setCacheModel:]):

12:54 PM Changeset in webkit [221985] by Lucas Forschler
  • 2 edits in trunk/Tools

Compress spindumps on client side before packaging into layout test results zip (mac & ios)
https://bugs.webkit.org/show_bug.cgi?id=176853

Reviewed by Aakash Jain.

  • BuildSlaveSupport/test-result-archive:

(main):
(gzip_file): use gzip to compress a file, removing original
(compress_spindumps): find and compress spindumps matching a filter
(archive_test_results): refactor to snake_case
(archiveTestResults): Deleted.

12:38 PM WebKitGTK/Gardening/Calendar edited by aboya@igalia.com
(diff)
11:45 AM Changeset in webkit [221984] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Followup rebaseline after r221973.

Unreviewed test gardening.

  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
11:41 AM Changeset in webkit [221983] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark http/tests/xmlhttprequest/workers/xmlhttprequest-file-not-found.html as a flaky crash on Windows.
https://bugs.webkit.org/show_bug.cgi?id=176866

Unreviewed test gardening.

  • platform/win/TestExpectations:
11:38 AM Changeset in webkit [221982] by achristensen@apple.com
  • 12 edits in trunk

Add WKUIDelegatePrivate equivalent of WKPageUIClient's setIsResizable, getWindowFrame, and setWindowFrame
https://bugs.webkit.org/show_bug.cgi?id=176857
<rdar://problem/29270035>

Reviewed by Tim Horton.

Source/WebKit:

isResizable is unreachable code because nothing sends Messages::WebPageProxy::GetIsResizable, so I removed it.

  • UIProcess/API/APIUIClient.h:

(API::UIClient::setStatusBarIsVisible):
(API::UIClient::isResizable): Deleted.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/API/glib/WebKitUIClient.cpp:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::setIsResizable):
(WebKit::UIDelegate::UIClient::setWindowFrame):
(WebKit::UIDelegate::UIClient::windowFrame):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::getIsResizable): Deleted.

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

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:

(-[ModalDelegate _webViewRunModal:]):
(-[ModalDelegate _webView:setResizable:]):
(-[WindowFrameDelegate _webView:setWindowFrame:]):
(-[WindowFrameDelegate _webView:getWindowFrameWithCompletionHandler:]):
(-[WindowFrameDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TEST):
(-[ResizableDelegate _webView:setResizable:]):
(-[ResizableDelegate _webView:getIsResizableWithCompletionHandler:]):
(-[ResizableDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):

11:25 AM Changeset in webkit [221981] by Ryan Haddad
  • 4 edits in trunk/JSTests

Skip 3 op_mod tests on Debug JSC bots.
https://bugs.webkit.org/show_bug.cgi?id=176630

Unreviewed test gardening.

  • stress/op_mod-ConstVar.js:
  • stress/op_mod-VarConst.js:
  • stress/op_mod-VarVar.js:
11:20 AM Changeset in webkit [221980] by Antti Koivisto
  • 19 edits in trunk/Source

Make more of the CSS animation system internals element based
https://bugs.webkit.org/show_bug.cgi?id=176832

Reviewed by Zalan Bujtas.

CSS animations animate element style. Continue moving away from renderers in the animation code.

Also do some general modernization.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::computeRenderStyleForProperty):

  • page/animation/AnimationBase.cpp:

(WebCore::AnimationBase::AnimationBase):

  • page/animation/AnimationBase.h:
  • page/animation/CSSAnimationController.cpp:

(WebCore::CSSAnimationControllerPrivate::ensureCompositeAnimation):
(WebCore::CSSAnimationControllerPrivate::clear):
(WebCore::CSSAnimationControllerPrivate::updateAnimations):
(WebCore::CSSAnimationControllerPrivate::updateAnimationTimerForElement):
(WebCore::CSSAnimationControllerPrivate::isRunningAnimationOnRenderer const):
(WebCore::CSSAnimationControllerPrivate::isRunningAcceleratedAnimationOnRenderer const):
(WebCore::CSSAnimationControllerPrivate::pauseAnimationAtTime):
(WebCore::CSSAnimationControllerPrivate::pauseTransitionAtTime):
(WebCore::CSSAnimationControllerPrivate::animatedStyleForElement):
(WebCore::CSSAnimationControllerPrivate::computeExtentOfAnimation const):
(WebCore::CSSAnimationController::cancelAnimations):
(WebCore::CSSAnimationController::updateAnimations):
(WebCore::CSSAnimationController::animatedStyleForRenderer):
(WebCore::CSSAnimationController::computeExtentOfAnimation const):
(WebCore::CSSAnimationController::pauseAnimationAtTime):
(WebCore::CSSAnimationController::pauseTransitionAtTime):
(WebCore::CSSAnimationControllerPrivate::updateAnimationTimerForRenderer): Deleted.
(WebCore::CSSAnimationControllerPrivate::getAnimatedStyleForRenderer): Deleted.
(WebCore::CSSAnimationController::getAnimatedStyleForRenderer): Deleted.

  • page/animation/CSSAnimationController.h:
  • page/animation/CSSAnimationControllerPrivate.h:
  • page/animation/CompositeAnimation.cpp:

(WebCore::CompositeAnimation::~CompositeAnimation):
(WebCore::CompositeAnimation::clearElement):
(WebCore::CompositeAnimation::updateTransitions):
(WebCore::CompositeAnimation::updateKeyframeAnimations):
(WebCore::CompositeAnimation::animate):
(WebCore::CompositeAnimation::clearRenderer): Deleted.

  • page/animation/CompositeAnimation.h:
  • page/animation/ImplicitAnimation.cpp:

(WebCore::ImplicitAnimation::ImplicitAnimation):
(WebCore::ImplicitAnimation::animate):

  • page/animation/ImplicitAnimation.h:

(WebCore::ImplicitAnimation::create):

  • page/animation/KeyframeAnimation.cpp:

(WebCore::KeyframeAnimation::KeyframeAnimation):
(WebCore::KeyframeAnimation::animate):

  • page/animation/KeyframeAnimation.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::willBeDestroyed):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::currentTransform const):

  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::createRenderer):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::createAnimatedElementUpdate):

  • testing/Internals.cpp:

(WebCore::Internals::pauseAnimationAtTimeOnElement):
(WebCore::Internals::pauseAnimationAtTimeOnPseudoElement):
(WebCore::Internals::pauseTransitionAtTimeOnElement):
(WebCore::Internals::pauseTransitionAtTimeOnPseudoElement):

11:15 AM Changeset in webkit [221979] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked svg/animations/smil-leak-dynamically-added-element-instances.svg as flaky on macOS WK1.
https://bugs.webkit.org/show_bug.cgi?id=175867

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
11:06 AM Changeset in webkit [221978] by dbates@webkit.org
  • 6 edits
    3 adds in trunk

Make history.pushState()/replaceState() more closely aligned to the HTML standard
https://bugs.webkit.org/show_bug.cgi?id=176730
<rdar://problem/33839265>

Reviewed by Alex Christensen.

Source/WebCore:

Update history.pushState()/replaceState() to more closely align with the algorithm
specified in <https://html.spec.whatwg.org/multipage/history.html#dom-history-pushstate-2> (9 September 2017).

Test: http/tests/security/history-pushState-replaceState-from-sandboxed-iframe.html

  • page/History.cpp:

(WebCore::History::stateObjectAdded):

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::extractInnerURL): Use URL constructor that takes a base URL as opposed
to using the special ParsedURLString-variant because the latter can only be used to parse a string
returned from URL::string(). And the extracted inner URL does not meet this criterion. Using the
ParsedURLString-variant of the URL constructor with a string that is not the result of URL::string()
will cause an assertion failure in a debug build.

LayoutTests:

  • http/tests/security/history-pushState-replaceState-from-sandboxed-iframe-expected.txt: Added.
  • http/tests/security/history-pushState-replaceState-from-sandboxed-iframe.html: Added.
  • http/tests/security/history-username-password-expected.txt:
  • http/tests/security/history-username-password.html:
  • http/tests/security/resources/history-pushState-replaceState-from-sandboxed-iframe.html: Added.
10:50 AM Changeset in webkit [221977] by commit-queue@webkit.org
  • 6 edits in trunk

Add a lambda-based map for Vectors
https://bugs.webkit.org/show_bug.cgi?id=176487

Patch by Youenn Fablet <youenn@apple.com> on 2017-09-13
Reviewed by Darin Adler.

Source/WebKit:

  • NetworkProcess/cache/CacheStorageEngineCaches.cpp:

(WebKit::CacheStorage::Caches::readCachesFromDisk):

Source/WTF:

This helper routine allows refactoring the reserveInitialCapacity/uncheckedAppend pattern, the mapper between source and destination item being a lambda.

  • wtf/Vector.h:

(WTF::Mapper::transform):
(WTF::Mapper::map):
(WTF::map):

Tools:

  • TestWebKitAPI/Tests/WTF/Vector.cpp:

(TestWebKitAPI::TEST):

10:47 AM Changeset in webkit [221976] by wilander@apple.com
  • 26 edits
    21 adds in trunk

Introduce Storage Access API (document parts) as an experimental feature
https://bugs.webkit.org/show_bug.cgi?id=175759
<rdar://problem/33666847>

Reviewed by Alex Christensen.

Source/WebCore:

Storage Access API is an experimental feature which allows cross-origin,
sandboxed iframes to request access to their first-party storage (as
opposed to partitioned storage). This might be restricted to cookies or
might cover all stateful mechanisms.

It introduces the following three developer-facing things:

  • A new readonly attribute, document.hasStorageAccess.
  • A new function, document.requestStorageAccess().
  • A new iframe sandbox token, allow-storage-access-by-user-activation.

Tests: http/tests/loading/resourceLoadStatistics/request-and-deny-storage-access-cross-origin-iframe.html

http/tests/loading/resourceLoadStatistics/request-and-deny-storage-access-cross-origin-sandboxed-iframe.html
http/tests/loading/resourceLoadStatistics/request-and-grant-storage-access-cross-origin-iframe.html
http/tests/loading/resourceLoadStatistics/request-and-grant-storage-access-cross-origin-sandboxed-iframe.html
http/tests/loading/resourceLoadStatistics/request-storage-access-cross-origin-sandboxed-iframe-with-unique-origin.html
http/tests/loading/resourceLoadStatistics/request-storage-access-cross-origin-sandboxed-iframe-without-allow-token.html
http/tests/loading/resourceLoadStatistics/request-storage-access-same-origin-iframe.html
http/tests/loading/resourceLoadStatistics/request-storage-access-same-origin-sandboxed-iframe-without-allow-token.html
http/tests/loading/resourceLoadStatistics/request-storage-access-same-origin-sandboxed-iframe.html
http/tests/loading/resourceLoadStatistics/request-storage-access-top-frame.html

  • dom/Document.cpp:

(WebCore::Document::requestStorageAccess):

  • dom/Document.h:

(WebCore::Document::hasStorageAccess const):
(WebCore::Document::setUserGrantsStorageAccessOverride):

See comments on WebCore::Internals below.

  • dom/Document.idl:
  • dom/SecurityContext.cpp:

(WebCore::SecurityContext::isSupportedSandboxPolicy):
(WebCore::SecurityContext::parseSandboxPolicy):

Support for allow-storage-access-by-user-activation.

  • dom/SecurityContext.h:
  • loader/ResourceLoadObserver.cpp:

(WebCore::ResourceLoadObserver::registerStorageAccess):

Newly granted storage access is reported to
WebCore::ResourceLoadObserver.

  • loader/ResourceLoadObserver.h:
  • loader/ResourceLoadStatistics.cpp:

(WebCore::encodeHashSet):
(WebCore::ResourceLoadStatistics::encode const):
(WebCore::decodeHashSet):
(WebCore::ResourceLoadStatistics::decode):
(WebCore::appendHashSet):
(WebCore::ResourceLoadStatistics::toString const):
(WebCore::mergeHashSet):
(WebCore::ResourceLoadStatistics::merge):

Storage of the new type of data.

  • loader/ResourceLoadStatistics.h:
  • page/Settings.in:
  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setUserGrantsStorageAccess):

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

Added setUserGrantsStorageAccess(). It is used to
override the eventSender's keyboard input which
always results in a cancel action on the confirm()
dialog.

Source/WebKit:

Storage Access API is an experimental feature which allows cross-origin,
sandboxed iframes to request access to their first-party storage (as
opposed to partitioned storage). This might be restricted to cookies or
might cover all stateful mechanisms.

It introduces the following three developer-facing things:

  • A new readonly attribute, document.hasStorageAccess.
  • A new function, document.requestStorageAccess().
  • A new iframe sandbox token, allow-storage-access-by-user-activation.
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
(IPC::ArgumentCoder<ResourceLoadStatistics>::decode):

Storage handling of the new type of data.

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetStorageAccessAPIEnabled):
(WKPreferencesGetStorageAccessAPIEnabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

Bumped the model version from 9 to 10.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

Turns the feature on for tests.

LayoutTests:

Storage Access API is an experimental feature which allows cross-origin,
sandboxed iframes to request access to their first-party storage (as
opposed to partitioned storage). This might be restricted to cookies or
might cover all stateful mechanisms.

It introduces the following three developer-facing things:

  • A new readonly attribute, document.hasStorageAccess.
  • A new function, document.requestStorageAccess().
  • A new iframe sandbox token, allow-storage-access-by-user-activation.
  • http/tests/loading/resourceLoadStatistics/request-and-deny-storage-access-cross-origin-iframe-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/request-and-deny-storage-access-cross-origin-iframe.html: Added.
  • http/tests/loading/resourceLoadStatistics/request-and-deny-storage-access-cross-origin-sandboxed-iframe-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/request-and-deny-storage-access-cross-origin-sandboxed-iframe.html: Added.
  • http/tests/loading/resourceLoadStatistics/request-and-grant-storage-access-cross-origin-iframe-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/request-and-grant-storage-access-cross-origin-iframe.html: Added.
  • http/tests/loading/resourceLoadStatistics/request-and-grant-storage-access-cross-origin-sandboxed-iframe-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/request-and-grant-storage-access-cross-origin-sandboxed-iframe.html: Added.
  • http/tests/loading/resourceLoadStatistics/request-storage-access-cross-origin-sandboxed-iframe-with-unique-origin-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/request-storage-access-cross-origin-sandboxed-iframe-with-unique-origin.html: Added.
  • http/tests/loading/resourceLoadStatistics/request-storage-access-cross-origin-sandboxed-iframe-without-allow-token-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/request-storage-access-cross-origin-sandboxed-iframe-without-allow-token.html: Added.
  • http/tests/loading/resourceLoadStatistics/request-storage-access-same-origin-iframe-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/request-storage-access-same-origin-iframe.html: Added.
  • http/tests/loading/resourceLoadStatistics/request-storage-access-same-origin-sandboxed-iframe-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/request-storage-access-same-origin-sandboxed-iframe-without-allow-token-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/request-storage-access-same-origin-sandboxed-iframe-without-allow-token.html: Added.
  • http/tests/loading/resourceLoadStatistics/request-storage-access-same-origin-sandboxed-iframe.html: Added.
  • http/tests/loading/resourceLoadStatistics/request-storage-access-top-frame-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/request-storage-access-top-frame.html: Added.
  • http/tests/loading/resourceLoadStatistics/resources/request-storage-access-iframe.html: Added.
  • platform/mac-wk2/TestExpectations:

New test cases that require a user gesture marked as [ Pass ].
Also removed reference to (now closed) https://bugs.webkit.org/show_bug.cgi?id=175170.

  • platform/wk2/TestExpectations:

New test case request-storage-access-top-frame.html marked as [ Pass ].

10:46 AM Changeset in webkit [221975] by pvollan@apple.com
  • 2 edits in trunk/Tools

[Win] DRT option --gc-between-tests is not implemented.
https://bugs.webkit.org/show_bug.cgi?id=176849

Reviewed by Brent Fulgham.

Perform GC after the test if this option is enabled. This patch also set the initial value of the flag
to true, in order to catch GC related issues in the test in which they occur.

  • DumpRenderTree/win/DumpRenderTree.cpp:

(runTest):

10:14 AM Changeset in webkit [221974] by Carlos Garcia Campos
  • 51 edits
    1 delete in trunk

[HarfBuzz] Wrong offset returned by HarfBuzzShaper::offsetForPosition in some cases
https://bugs.webkit.org/show_bug.cgi?id=176848

Reviewed by Michael Catanzaro.

Source/WebCore:

This patch rewrites HarfBuzzShaper::HarfBuzzRun::characterIndexForXPosition() to make it simpler and ensure we
return the right offset in all the cases, also honoring now the includePartialGlyphs parameter that we were
ignoring in FontCascade::offsetForPositionForComplexText().

Fixes several tests that started to fail after r221909.

  • platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:

(WebCore::FontCascade::offsetForPositionForComplexText const):

  • platform/graphics/harfbuzz/HarfBuzzShaper.cpp:

(WebCore::HarfBuzzShaper::HarfBuzzRun::characterIndexForXPosition):
(WebCore::HarfBuzzShaper::offsetForPosition):

  • platform/graphics/harfbuzz/HarfBuzzShaper.h:

LayoutTests:

Rebaseline several tests where we are now getting results similar to the mac ones.

  • platform/gtk/editing/execCommand/findString-2-expected.txt:
  • platform/gtk/editing/selection/14971-expected.png:
  • platform/gtk/editing/selection/14971-expected.txt:
  • platform/gtk/editing/selection/4895428-2-expected.png:
  • platform/gtk/editing/selection/4895428-2-expected.txt:
  • platform/gtk/editing/selection/5232159-expected.png:
  • platform/gtk/editing/selection/5232159-expected.txt:
  • platform/gtk/editing/selection/collapse-selection-in-bidi-expected.txt:
  • platform/gtk/editing/selection/drag-select-1-expected.png:
  • platform/gtk/editing/selection/drag-select-1-expected.txt:
  • platform/gtk/editing/selection/editable-links-expected.png:
  • platform/gtk/editing/selection/editable-links-expected.txt:
  • platform/gtk/editing/selection/fake-doubleclick-expected.txt:
  • platform/gtk/editing/selection/fake-drag-expected.txt:
  • platform/gtk/editing/selection/select-across-readonly-input-1-expected.png:
  • platform/gtk/editing/selection/select-across-readonly-input-1-expected.txt:
  • platform/gtk/editing/selection/select-across-readonly-input-2-expected.png:
  • platform/gtk/editing/selection/select-across-readonly-input-2-expected.txt:
  • platform/gtk/editing/selection/select-across-readonly-input-3-expected.png:
  • platform/gtk/editing/selection/select-across-readonly-input-3-expected.txt:
  • platform/gtk/editing/selection/select-across-readonly-input-4-expected.png:
  • platform/gtk/editing/selection/select-across-readonly-input-4-expected.txt:
  • platform/gtk/editing/selection/select-across-readonly-input-5-expected.png:
  • platform/gtk/editing/selection/select-across-readonly-input-5-expected.txt:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-br-expected.png:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-br-expected.txt:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-p-expected.png:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-p-expected.txt:
  • platform/gtk/fast/css/text-overflow-ellipsis-text-align-center-expected.png:
  • platform/gtk/fast/css/text-overflow-ellipsis-text-align-center-expected.txt:
  • platform/gtk/fast/css/text-overflow-ellipsis-text-align-left-expected.png:
  • platform/gtk/fast/css/text-overflow-ellipsis-text-align-left-expected.txt:
  • platform/gtk/fast/css/text-overflow-ellipsis-text-align-right-expected.png:
  • platform/gtk/fast/css/text-overflow-ellipsis-text-align-right-expected.txt:
  • platform/gtk/fast/repaint/japanese-rl-selection-repaint-expected.png:
  • platform/gtk/fast/repaint/japanese-rl-selection-repaint-expected.txt:
  • platform/gtk/fast/repaint/repaint-across-writing-mode-boundary-expected.png:
  • platform/gtk/fast/repaint/repaint-across-writing-mode-boundary-expected.txt:
  • platform/gtk/fast/repaint/selection-rl-expected.png:
  • platform/gtk/fast/repaint/selection-rl-expected.txt:
  • platform/gtk/fast/text/atsui-rtl-override-selection-expected.png:
  • platform/gtk/fast/text/atsui-rtl-override-selection-expected.txt:
  • platform/gtk/fast/text/in-rendered-text-rtl-expected.txt:
  • platform/gtk/svg/custom/foreignObject-crash-on-hover-expected.txt:
  • platform/gtk/svg/text/select-text-svgfont-expected.txt: Removed.
  • platform/gtk/transitions/svg-text-shadow-transition-expected.png:
  • platform/gtk/transitions/svg-text-shadow-transition-expected.txt:
10:08 AM Changeset in webkit [221973] by Matt Lewis
  • 4 edits in trunk/LayoutTests

Rebaseline of js/dom/global-constructors-attributes.html.

Unreviewed test gardening.

  • platform/mac-elcapitan-wk2/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-sierra-wk2/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
9:23 AM Changeset in webkit [221972] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

Initialize InternalSettings member variable.
https://bugs.webkit.org/show_bug.cgi?id=176838

Reviewed by Brent Fulgham.

Initialize the m_webVREnabled member in the constructor.

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):

9:03 AM Changeset in webkit [221971] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Make WebGLRenderingContextBase::TypedList::data() const-correct.
https://bugs.webkit.org/show_bug.cgi?id=176833

Patch by Ms2ger <Ms2ger@igalia.com> on 2017-09-13
Reviewed by Sam Weinig.

No change of behavior.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::validateUniformMatrixParameters):

  • html/canvas/WebGLRenderingContextBase.h:

(WebCore::WebGLRenderingContextBase::TypedList::data const):

  • platform/graphics/GraphicsContext3D.h:
  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::GraphicsContext3D::uniform1fv):
(WebCore::GraphicsContext3D::uniform2fv):
(WebCore::GraphicsContext3D::uniform3fv):
(WebCore::GraphicsContext3D::uniform4fv):
(WebCore::GraphicsContext3D::uniform1iv):
(WebCore::GraphicsContext3D::uniform2iv):
(WebCore::GraphicsContext3D::uniform3iv):
(WebCore::GraphicsContext3D::uniform4iv):
(WebCore::GraphicsContext3D::uniformMatrix2fv):
(WebCore::GraphicsContext3D::uniformMatrix3fv):
(WebCore::GraphicsContext3D::uniformMatrix4fv):
(WebCore::GraphicsContext3D::vertexAttrib1fv):
(WebCore::GraphicsContext3D::vertexAttrib2fv):
(WebCore::GraphicsContext3D::vertexAttrib3fv):
(WebCore::GraphicsContext3D::vertexAttrib4fv):

8:48 AM Changeset in webkit [221970] by Yusuke Suzuki
  • 3 edits
    1 add in trunk

[JSC] Fix Array allocation in Object.keys
https://bugs.webkit.org/show_bug.cgi?id=176826

Reviewed by Saam Barati.

JSTests:

  • stress/object-own-property-keys.js: Added.

(shouldBe):

Source/JavaScriptCore:

When isHavingABadTime() is true, array allocation does not become ArrayWithContiguous.
We check isHavingABadTime() in ownPropertyKeys fast path.
And we also ensures that ownPropertyKeys uses putDirect operation instead of put by a test.

  • runtime/ObjectConstructor.cpp:

(JSC::ownPropertyKeys):

8:31 AM Changeset in webkit [221969] by weinig@apple.com
  • 6 edits
    2 deletes in trunk

Remove CanvasRenderingContext2D.commit(), it is a no-op and not part the standard
https://bugs.webkit.org/show_bug.cgi?id=176821

Reviewed by Darin Adler.

Source/WebCore:

  • html/canvas/CanvasRenderingContext2D.h:
  • html/canvas/CanvasRenderingContext2D.idl:


Remove the commit operation. It is no longer part the standard (it was
moved to OffscreenCanvasRenderingContext2D) and it was a no-op.

LayoutTests:

  • fast/canvas/commit-expected.txt: Removed.
  • fast/canvas/commit.html: Removed.
  • inspector/canvas/recording-2d-expected.txt:
  • inspector/canvas/recording-2d.html:


Remove CanvasRenderingContext2D.commit() from test and update result.

8:02 AM Changeset in webkit [221968] by mrajca@apple.com
  • 2 edits in trunk/Source/WebCore

Ensure the user interacted with the page before setting m_userHasInteractedWithMediaElement
https://bugs.webkit.org/show_bug.cgi?id=176816

Reviewed by Eric Carlson.

Currently, when the user presses a keyboard shortcut in the client to reload a page, that may
get registered as a user gesture on the reloaded page. Before setting the
m_userHasInteractedWithMediaElement flag, we should check if a user gesture was actually handled
by checking the userDidInteractWithPage flag. In case of key events that aren't handled by the
page, this will be set to false by EventHandler:

If the key event was not handled, do not treat it as user interaction with the page.
if (topDocument && !wasHandled)

topDocument->setUserDidInteractWithPage(savedUserDidInteractWithPage);

We need to revisit this in the future in webkit.org/b/176817 and ensure user gesture tokens
don't carry over across reloads of the page.

Tests: I wasn't able to trigger the pathological scenario this aims to fix with a test that calls
window.location.reload() from a synthetic keyDown event.

  • dom/Document.cpp:

(WebCore::Document::noteUserInteractionWithMediaElement):

4:47 AM Changeset in webkit [221967] by commit-queue@webkit.org
  • 7 edits in trunk

Disallow passing null values to various WebGL2 methods.
https://bugs.webkit.org/show_bug.cgi?id=176829

Patch by Ms2ger <Ms2ger@igalia.com> on 2017-09-13
Reviewed by Yusuke Suzuki.

This matches the specification as well as Gecko and Chromium.

Source/WebCore:

Test: fast/canvas/webgl/webgl2/bindings.html

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::beginQuery):
(WebCore::WebGL2RenderingContext::getQueryParameter):
(WebCore::WebGL2RenderingContext::samplerParameteri):
(WebCore::WebGL2RenderingContext::samplerParameterf):
(WebCore::WebGL2RenderingContext::getSamplerParameter):
(WebCore::WebGL2RenderingContext::clientWaitSync):
(WebCore::WebGL2RenderingContext::waitSync):
(WebCore::WebGL2RenderingContext::getSyncParameter):
(WebCore::WebGL2RenderingContext::transformFeedbackVaryings):
(WebCore::WebGL2RenderingContext::getTransformFeedbackVarying):
(WebCore::WebGL2RenderingContext::getUniformIndices):
(WebCore::WebGL2RenderingContext::getUniformBlockIndex):
(WebCore::WebGL2RenderingContext::getActiveUniformBlockParameter):
(WebCore::WebGL2RenderingContext::getActiveUniformBlockName):
(WebCore::WebGL2RenderingContext::uniformBlockBinding):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGL2RenderingContext.idl:

LayoutTests:

  • fast/canvas/webgl/webgl2/bindings-expected.txt:
  • fast/canvas/webgl/webgl2/bindings.html:
4:17 AM Changeset in webkit [221966] by svillar@igalia.com
  • 17 edits
    43 adds in trunk

[WebVR] Add IDLs and stubs
https://bugs.webkit.org/show_bug.cgi?id=174202

Reviewed by Dean Jackson.

Source/WebCore:

Adding the complete set of IDLs for the WebVR 1.1 spec including the interface stubs which
currently do nothing.

Tests: webvr/webvr-disabled.html

webvr/webvr-enabled.html

  • CMakeLists.txt:
  • DerivedSources.make:
  • Modules/webvr/DOMWindowWebVR.idl: Added.
  • Modules/webvr/GamepadWebVR.cpp: Added.

(WebCore::GamepadWebVR::GamepadWebVR):
(WebCore::GamepadWebVR::~GamepadWebVR):
(WebCore::GamepadWebVR::displayId):

  • Modules/webvr/GamepadWebVR.h: Added.
  • Modules/webvr/GamepadWebVR.idl: Added.
  • Modules/webvr/NavigatorWebVR.cpp: Added.

(WebCore::NavigatorWebVR::getVRDisplays):
(WebCore::NavigatorWebVR::activeVRDisplays):
(WebCore::NavigatorWebVR::vrEnabled):

  • Modules/webvr/NavigatorWebVR.h: Added.
  • Modules/webvr/NavigatorWebVR.idl: Added.
  • Modules/webvr/VRDisplay.cpp: Added.

(WebCore::VRDisplay::create):
(WebCore::VRDisplay::VRDisplay):
(WebCore::VRDisplay::isConnected const):
(WebCore::VRDisplay::isPresenting const):
(WebCore::VRDisplay::capabilities const):
(WebCore::VRDisplay::stageParameters const):
(WebCore::VRDisplay::getEyeParameters const):
(WebCore::VRDisplay::displayId const):
(WebCore::VRDisplay::displayName const):
(WebCore::VRDisplay::getFrameData const):
(WebCore::VRDisplay::getPose const):
(WebCore::VRDisplay::resetPose):
(WebCore::VRDisplay::depthNear const):
(WebCore::VRDisplay::setDepthNear):
(WebCore::VRDisplay::depthFar const):
(WebCore::VRDisplay::setDepthFar):
(WebCore::VRDisplay::requestAnimationFrame):
(WebCore::VRDisplay::cancelAnimationFrame):
(WebCore::VRDisplay::requestPresent):
(WebCore::VRDisplay::exitPresent):
(WebCore::VRDisplay::getLayers const):
(WebCore::VRDisplay::submitFrame):
(WebCore::VRDisplay::hasPendingActivity const):
(WebCore::VRDisplay::activeDOMObjectName const):
(WebCore::VRDisplay::canSuspendForDocumentSuspension const):
(WebCore::VRDisplay::stop):

  • Modules/webvr/VRDisplay.h: Added.
  • Modules/webvr/VRDisplay.idl: Added.
  • Modules/webvr/VRDisplayCapabilities.cpp: Added.

(WebCore::VRDisplayCapabilities::hasPosition const):
(WebCore::VRDisplayCapabilities::hasOrientation const):
(WebCore::VRDisplayCapabilities::hasExternalDisplay const):
(WebCore::VRDisplayCapabilities::canPresent const):
(WebCore::VRDisplayCapabilities::maxLayer const):

  • Modules/webvr/VRDisplayCapabilities.h: Added.

(WebCore::VRDisplayCapabilities::create):

  • Modules/webvr/VRDisplayCapabilities.idl: Added.
  • Modules/webvr/VRDisplayEvent.cpp: Added.

(WebCore::VRDisplayEvent::VRDisplayEvent):
(WebCore::VRDisplayEvent::display const):
(WebCore::VRDisplayEvent::reason const):
(WebCore::VRDisplayEvent::eventInterface const):

  • Modules/webvr/VRDisplayEvent.h: Added.
  • Modules/webvr/VRDisplayEvent.idl: Added.
  • Modules/webvr/VRDisplayEventReason.h: Added.
  • Modules/webvr/VRDisplayEventReason.idl: Added.
  • Modules/webvr/VREye.h: Added.
  • Modules/webvr/VREye.idl: Added.
  • Modules/webvr/VREyeParameters.cpp: Added.

(WebCore::VREyeParameters::VREyeParameters):
(WebCore::VREyeParameters::offset const):
(WebCore::VREyeParameters::fieldOfView const):
(WebCore::VREyeParameters::renderWidth const):
(WebCore::VREyeParameters::renderHeight const):

  • Modules/webvr/VREyeParameters.h: Added.

(WebCore::VREyeParameters::create):

  • Modules/webvr/VREyeParameters.idl: Added.
  • Modules/webvr/VRFieldOfView.cpp: Added.

(WebCore::VRFieldOfView::upDegrees const):
(WebCore::VRFieldOfView::rightDegrees const):
(WebCore::VRFieldOfView::downDegrees const):
(WebCore::VRFieldOfView::leftDegrees const):

  • Modules/webvr/VRFieldOfView.h: Added.

(WebCore::VRFieldOfView::create):

  • Modules/webvr/VRFieldOfView.idl: Added.
  • Modules/webvr/VRFrameData.cpp: Added.

(WebCore::VRFrameData::VRFrameData):
(WebCore::VRFrameData::timestamp const):
(WebCore::VRFrameData::leftProjectionMatrix const):
(WebCore::VRFrameData::leftViewMatrix const):
(WebCore::VRFrameData::rightProjectionMatrix const):
(WebCore::VRFrameData::rightViewMatrix const):
(WebCore::VRFrameData::pose const):

  • Modules/webvr/VRFrameData.h: Added.

(WebCore::VRFrameData::create):

  • Modules/webvr/VRFrameData.idl: Added.
  • Modules/webvr/VRLayerInit.h: Added.
  • Modules/webvr/VRLayerInit.idl: Added.
  • Modules/webvr/VRPose.cpp: Added.

(WebCore::VRPose::position const):
(WebCore::VRPose::linearVelocity const):
(WebCore::VRPose::linearAcceleration const):
(WebCore::VRPose::orientation const):
(WebCore::VRPose::angularVelocity const):
(WebCore::VRPose::angularAcceleration const):

  • Modules/webvr/VRPose.h: Added.

(WebCore::VRPose::create):

  • Modules/webvr/VRPose.idl: Added.
  • Modules/webvr/VRStageParameters.cpp: Added.

(WebCore::VRStageParameters::sittingToStandingTransform const):
(WebCore::VRStageParameters::sizeX const):
(WebCore::VRStageParameters::sizeZ const):

  • Modules/webvr/VRStageParameters.h: Added.

(WebCore::VRStageParameters::create):

  • Modules/webvr/VRStageParameters.idl: Added.
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • dom/EventNames.h:
  • dom/EventNames.in:
  • dom/EventTargetFactory.in:
  • features.json:
  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setWebVREnabled):
(WebCore::RuntimeEnabledFeatures::webVREnabled const):

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setWebVREnabled):

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

Source/WebKit:

  • Shared/WebPreferencesDefinitions.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

LayoutTests:

New tests to verify that WebVR is properly enabled/disabled at runtime.

  • webvr/webvr-disabled-expected.txt: Added.
  • webvr/webvr-disabled.html: Added.
  • webvr/webvr-enabled-expected.txt: Added.
  • webvr/webvr-enabled.html: Added.
1:04 AM Changeset in webkit [221965] by commit-queue@webkit.org
  • 7 edits in trunk

Update the type of the texture argument to framebufferTextureLayer().
https://bugs.webkit.org/show_bug.cgi?id=176785

Patch by Ms2ger <Ms2ger@igalia.com> on 2017-09-13
Reviewed by Yusuke Suzuki.

This matches the specification as well as Gecko and Chromium.

Source/WebCore:

Also move getInternalformatParameter() to the position it has in the
specification, for easier comparison.

Test: fast/canvas/webgl/webgl2/bindings.html

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::framebufferTextureLayer):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGL2RenderingContext.idl:

LayoutTests:

  • fast/canvas/webgl/webgl2/bindings-expected.txt:
  • fast/canvas/webgl/webgl2/bindings.html:
1:03 AM Changeset in webkit [221964] by jmarcell@apple.com
  • 6 edits in branches/safari-604-branch

Cherry-pick r221917. rdar://problem/34404461

1:02 AM Changeset in webkit [221963] by jmarcell@apple.com
  • 4 edits in branches/safari-604-branch

Cherry-pick r221906. rdar://problem/34404478

1:02 AM Changeset in webkit [221962] by jmarcell@apple.com
  • 3 edits
    1 add in branches/safari-604-branch

Cherry-pick r221711. rdar://problem/34404472

12:37 AM Changeset in webkit [221961] by zandobersek@gmail.com
  • 22 edits in trunk

[EME] Implement CDMInstanceClearKey::updateLicense()
https://bugs.webkit.org/show_bug.cgi?id=176791

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Implement the updateLicense() method for CDMInstanceClearKey.
The response data is parsed as JSON, matching that agains either
'license' or 'license release acknowledgement' formats (depending
on either 'keys' or 'kids' object keys being present). If any
format is recognized, appropriate steps are taken.

In case of the 'license' format, the passed-in keys are matched
against existing ones. If some keys have changed or have been
newly introduced, the key information is sorted by key ID size
and data to enforce order. After that the KeyStatusVector object
is constructed, containing key ID and status information for all
the keys associated with this session. Finally callback is
dispatched, signalling a successful operation and passing the
KeyStatusVector, if any, back to the caller.

In case of the 'license release acknowledgement' format, the
session data for this session ID is removed from the ClearKey state
singleton. The callback is dispatched signalling the session closure
and successfull completion of the operation.

Finally, if no format is deduced, the callback is again dispatched,
but now signalling an operation failure.

No new tests -- expectations for the relevant tests are updated
to reflect the introduced changes.

  • platform/encryptedmedia/clearkey/CDMClearKey.cpp:

(WebCore::ClearKeyState::keys):
(WebCore::ClearKeyState::singleton):
(WebCore::parseLicenseFormat):
(WebCore::parseLicenseReleaseAcknowledgementFormat):
(WebCore::CDMInstanceClearKey::updateLicense):

LayoutTests:

Update WPE baselines of the EME ClearKey tests.

  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-events-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-keystatuses-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-keystatuses-multiple-sessions-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-sources-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-events-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-readyState-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multisession-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-playback-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-resetting-src-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-update-disallowed-input-expected.txt:
12:17 AM Changeset in webkit [221960] by rniwa@webkit.org
  • 14 edits
    4 adds in trunk/Source

Refactor WebContentReader out of EditorMac and EditorIOS
https://bugs.webkit.org/show_bug.cgi?id=176770

Reviewed by Sam Weinig.

Source/WebCore:

Extracted WebContentReader.h, WebContentReaderMac.mm, and WebContentIOS.mm from Pasteboard.h,
EditorMac.mm, and EditorIOS.mm respectively.

Also moved createFragmentAndAddResources from EditorCocoa.mm to WebContentReaderCocoa.mm
and createFragmentForImageAndURL and createFragmentForImageResourceAndAddResource to markup.cpp.

  • Configurations/WebCore.xcconfig:
  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • editing/Editor.cpp:

(WebCore::Editor::createFragmentForImageAndURL): Deleted.

  • editing/Editor.h:
  • editing/WebContentReader.h: Added.
  • editing/cocoa/EditorCocoa.mm:

(WebCore::Editor::replaceSelectionWithAttributedString):
(WebCore::Editor::createFragment): Deleted.
(WebCore::Editor::createFragmentForImageResourceAndAddResource): Deleted.
(WebCore::Editor::createFragmentAndAddResources): Deleted.

  • editing/cocoa/WebContentReaderCocoa.mm: Added.

(WebCore::createFragmentForImageResourceAndAddResource):
(WebCore::createFragment):
(WebCore::createFragmentAndAddResources):

  • editing/ios/EditorIOS.mm:

(WebCore::Editor::WebContentReader): Moved to WebContentReaderIOS.mm.

  • editing/ios/WebContentReaderIOS.mm: Added.

(WebCore::WebContentReader::addFragment):
(WebCore::WebContentReader::readWebArchive):
(WebCore::WebContentReader::readFilenames):
(WebCore::WebContentReader::readHTML):
(WebCore::WebContentReader::readRTFD):
(WebCore::WebContentReader::readRTF):
(WebCore::WebContentReader::readImage):
(WebCore::WebContentReader::readURL):
(WebCore::WebContentReader::readPlainText):

  • editing/mac/EditorMac.mm:

(WebCore::Editor::WebContentReader): Moved to WebContentReaderMac.mm.

  • editing/mac/WebContentReaderMac.mm: Added.

(WebCore::WebContentReader::readWebArchive):
(WebCore::WebContentReader::readFilenames):
(WebCore::WebContentReader::readHTML):
(WebCore::WebContentReader::readRTFD):
(WebCore::WebContentReader::readRTF):
(WebCore::WebContentReader::readImage):
(WebCore::WebContentReader::readURL):
(WebCore::WebContentReader::readPlainText):

  • editing/markup.cpp:

(WebCore::createFragmentForImageAndURL):
(WebCore::createFragmentForImageResourceAndAddResource):

  • editing/markup.h:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebEditorClient.mm:
12:02 AM Changeset in webkit [221959] by Yusuke Suzuki
  • 42 edits
    1 add in trunk

[DFG] Optimize WeakMap::get by adding intrinsic and fixup
https://bugs.webkit.org/show_bug.cgi?id=176010

Reviewed by Filip Pizlo.

JSTests:

  • microbenchmarks/weak-map-key.js: Added.

(assert):
(objectKey):
(let.start.Date.now):

Source/JavaScriptCore:

It reveals that Ember.js consumes 3.8% of execution time for WeakMap#get.
It is used for meta property for objects (see peekMeta function in Ember.js).

This patch optimizes WeakMap#get.

  1. We use inlineGet to inline WeakMap#get operation in the native function.

Since this native function itself is very small, we should inline HashMap#get
entirely in this function.

  1. We add JSWeakMapType and JSWeakSetType. This allows us to perform isJSWeakMap()

very fast. And this patch wires this to DFG and FTL to add WeakMapObjectUse and WeakSetObjectUse
to drop unnecessary type checking. We add fixup rules for WeakMapGet DFG node by using WeakMapObjectUse,
ObjectUse, and Int32Use.

  1. We add intrinsic for WeakMap#get, and handle it in DFG and FTL. We use MapHash to

calculate hash value for the key's Object and use this hash value to look up value from
JSWeakMap's HashMap. Currently, we just call the operationWeakMapGet function in DFG and FTL.
It is worth considering that implementing this operation entirely in JIT, like GetMapBucket.
But anyway, the current one already optimizes the performance, so we leave this for the subsequent
patches.

We currently do not implement any other intrinsics (like, WeakMap#has, WeakSet) because they are
not used in Ember.js right now.

This patch optimizes WeakMap#get by 50%.

baseline patched

weak-map-key 88.6456+-3.9564 59.1502+-2.2406 definitely 1.4987x faster

  • bytecode/DirectEvalCodeCache.h:

(JSC::DirectEvalCodeCache::tryGet):

  • bytecode/SpeculatedType.cpp:

(JSC::dumpSpeculation):
(JSC::speculationFromClassInfo):
(JSC::speculationFromJSType):
(JSC::speculationFromString):

  • bytecode/SpeculatedType.h:
  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGHeapLocation.cpp:

(WTF::printInternal):

  • dfg/DFGHeapLocation.h:
  • dfg/DFGNode.h:

(JSC::DFG::Node::hasHeapPrediction):

  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::SafeToExecuteEdge::operator()):
(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::speculateWeakMapObject):
(JSC::DFG::SpeculativeJIT::speculateWeakSetObject):
(JSC::DFG::SpeculativeJIT::speculate):
(JSC::DFG::SpeculativeJIT::compileWeakMapGet):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGUseKind.cpp:

(WTF::printInternal):

  • dfg/DFGUseKind.h:

(JSC::DFG::typeFilterFor):
(JSC::DFG::isCell):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileWeakMapGet):
(JSC::FTL::DFG::LowerDFGToB3::lowWeakMapObject):
(JSC::FTL::DFG::LowerDFGToB3::lowWeakSetObject):
(JSC::FTL::DFG::LowerDFGToB3::speculate):
(JSC::FTL::DFG::LowerDFGToB3::speculateWeakMapObject):
(JSC::FTL::DFG::LowerDFGToB3::speculateWeakSetObject):

  • jit/JITOperations.h:
  • runtime/HashMapImpl.h:

(JSC::WeakMapHash::hash):
(JSC::WeakMapHash::equal):

  • runtime/Intrinsic.cpp:

(JSC::intrinsicName):

  • runtime/Intrinsic.h:
  • runtime/JSType.h:
  • runtime/JSWeakMap.h:

(JSC::isJSWeakMap):

  • runtime/JSWeakSet.h:

(JSC::isJSWeakSet):

  • runtime/WeakMapBase.cpp:

(JSC::WeakMapBase::get):

  • runtime/WeakMapBase.h:

(JSC::WeakMapBase::HashTranslator::hash):
(JSC::WeakMapBase::HashTranslator::equal):
(JSC::WeakMapBase::inlineGet):

  • runtime/WeakMapPrototype.cpp:

(JSC::WeakMapPrototype::finishCreation):
(JSC::getWeakMap):
(JSC::protoFuncWeakMapGet):

  • runtime/WeakSetPrototype.cpp:

(JSC::getWeakSet):

Source/WebCore:

  • platform/network/curl/CurlJobManager.cpp:

(WebCore::CurlJobList::finishJobs):

Source/WTF:

Add inlineGet method with HashTranslator.

  • wtf/HashMap.h:

(WTF::X>::inlineGet const):
(WTF::MappedTraits>::inlineGet const):
(WTF::MappedTraits>::fastGet const): Deleted.

  • wtf/LoggingHashMap.h:
Note: See TracTimeline for information about the timeline view.