Timeline



Feb 21, 2020:

7:43 PM Changeset in webkit [257185] by Kate Cheney
  • 49 edits
    5 adds in trunk

App-bound domains should have separate Network Sessions
https://bugs.webkit.org/show_bug.cgi?id=208026
<rdar://problem/59434006>

Reviewed by Brent Fulgham.

Source/WebKit:

Tests: http/tests/in-app-browser-privacy/app-bound-domain.html

http/tests/in-app-browser-privacy/switch-session-on-navigation-to-app-bound-domain.html

Supports network session switching for navigations to app-bound
domains. This requires updating the WebPage when a navigation occurs
to check whether it is to an app-bound destination. In case of a
process swap, this has to be done both in PolicyDecisionSender and
in the ProvisionalPageProxy::loadData and ProvisionalPageProxy::loadRequest
functions.

This patch also must send the In-App Browser privacy flag to the
Network process.

  • NetworkProcess/NetworkDataTask.cpp:

(WebKit::NetworkDataTask::create):

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

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

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

(WebKit::NetworkResourceLoader::startNetworkLoad):

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

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
Passes the isNavigatingToAppBoundDomain flag to the NetworkSession.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::hasAppBoundSession const):
(WebKit::NetworkProcess::setInAppBrowserPrivacyEnabled):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::hasAppBoundSession const):
(WebKit::NetworkSession::setInAppBrowserPrivacyEnabled):

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreHasAppBoundSession):
(WKWebsiteDataStoreSetInAppBrowserPrivacyEnabled):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _getWebViewCategoryFor:completionHandler:]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::hasAppBoundSession):
(WebKit::NetworkProcessProxy::setInAppBrowserPrivacyEnabled):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::hasAppBoundSession const):
(WebKit::WebsiteDataStore::setInAppBrowserPrivacyEnabled):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

A large portion of this patch is three functions for testing, one sets
the in-app browser privacy flag for the test case, one checks for an app-bound session, and one
checks to make sure the category was correctly set to app-bound domain.

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:

Passes the In-app browser privacy flag value from NSUserDefaults to the network session.

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

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
(WebKit::NetworkSessionCocoa::sessionWrapperForTask):
(WebKit::NetworkSessionCocoa::appBoundSession):
(WebKit::NetworkSessionCocoa::hasAppBoundSession const):
(WebKit::NetworkSessionCocoa::invalidateAndCancel):
(WebKit::NetworkSessionCocoa::clearCredentials):
Creates a new session (or returns the existing app-bound session) if
the navigation is app-bound. This is the main change in this patch.

  • Shared/LoadParameters.cpp:

(WebKit::LoadParameters::encode const):
(WebKit::LoadParameters::decode):

  • Shared/LoadParameters.h:
  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::loadData):
(WebKit::ProvisionalPageProxy::loadRequest):
(WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionSync):

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

(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::loadRequestWithNavigationShared):
(WebKit::WebPageProxy::loadData):
(WebKit::WebPageProxy::loadDataWithNavigationShared):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadRequest):
(WebKit::WebPage::loadDataImpl):
(WebKit::WebPage::loadData):
(WebKit::WebPage::loadAlternateHTML):
In the case of a process swap, we must add the
isNavigatingToAppBoundDomain boolean in LoadParameters to ensure it gets sent to
the new WebPage via the ProvisionalPageProxy.

(WebKit::WebPageProxy::PolicyDecisionSender::send):
Fixes a capitalization error.

(WebKit::WebPageProxy::isAppBoundDomain):
(WebKit::WebPageProxy::setIsNavigatingToAppBoundDomain):

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::isNavigatingToAppBoundDomain):
These functions determine if the category is app-bound and update the
isNavigatingToAppBoundDomain boolean accordingly.

  • Shared/PolicyDecision.h:

(WebKit::PolicyDecision::encode const):
(WebKit::PolicyDecision::decode):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::continueNavigationInNewProcess):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNavigationActionSyncShared):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponseShared):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
For a non-process swap case, we can send the
isNavigatingToAppBoundDomain value in the
PolicyDecision struct.

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
Sends the isNavigatingToAppBoundDomain boolean to the NetworkProcess
with the NetworkResourceLoadParameters.

(WebKit::WebPage::didReceivePolicyDecision):
(WebKit::WebPage::setIsNavigatingToAppBoundDomain):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::isNavigatingToAppBoundDomain):
The boolean value for isNavigatingToAppBoundDomain is stored
in the webPage so WebLoaderStrategy can access it to send to the
NetworkProcess.

Tools:

This patch is mostly test infrastructure involving 3 functions.
One sets in-app browser privacy as enabled in the network process
manually for the test. One ensures that setting the WebView category
works properly, and the last one checks for an app-bound session for
an app-bound navigation.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessageToPage):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::getWebViewCategory):
(WTR::TestRunner::callDidReceiveWebViewCategoryCallback):
(WTR::TestRunner::hasAppBoundSession):
(WTR::TestRunner::setInAppBrowserPrivacyEnabled):
(WTR::TestRunner::callDidSetInAppBrowserPrivacyEnabledCallback):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::ensureViewSupportsOptionsForTest):
Clearing the bundleID should happen right before setting a new one,
otherwise it clears the ID after it is set and returns a null ID.

(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::getWebViewCategory):
(WTR::InAppBrowserPrivacyCallbackContext::InAppBrowserPrivacyCallbackContext):
(WTR::inAppBrowserPrivacyBooleanResultCallback):
(WTR::inAppBrowserPrivacyVoidResultCallback):
(WTR::TestController::hasAppBoundSession):
(WTR::TestController::setInAppBrowserPrivacyEnabled):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
(WTR::TestInvocation::didSetInAppBrowserPrivacyEnabled):
(WTR::TestInvocation::didReceivePrevalentDomains):
(WTR::TestInvocation::didReceiveWebViewCategory):

  • WebKitTestRunner/TestInvocation.h:
  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::getWebViewCategory):

LayoutTests:

Added two tests. One to test the proper categorization of app-bound
navigation, and one to check that switching sessions occurs when
navigating to an app-bound domain.

Since these tests use ITP to set user interaction, they should only
be run on iOS and mac-wk2.

  • TestExpectations:
  • http/tests/in-app-browser-privacy/app-bound-domain-expected.txt: Added.
  • http/tests/in-app-browser-privacy/app-bound-domain.html: Added.
  • http/tests/in-app-browser-privacy/switch-session-on-navigation-to-app-bound-domain-expected.txt: Added.
  • http/tests/in-app-browser-privacy/switch-session-on-navigation-to-app-bound-domain.html: Added.
  • platform/ios/TestExpectations:
  • platform/mac-wk2/TestExpectations:
5:05 PM Changeset in webkit [257184] by Russell Epstein
  • 1 copy in tags/Safari-610.1.4

Tag Safari-610.1.4.

5:00 PM Changeset in webkit [257183] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.111.2

Tag Safari-609.1.20.111.2.

4:40 PM Changeset in webkit [257182] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iOS wk2 ] http/tests/workers/service/Client-properties-auxiliary.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=208081

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
4:16 PM Changeset in webkit [257181] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac Debug ] legacy-animation-engine/animations/animation-welcome-safari.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208077

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:49 PM Changeset in webkit [257180] by Kocsen Chung
  • 1 copy in tags/Safari-609.1.20.100.2

Tag Safari-609.1.20.100.2.

3:25 PM Changeset in webkit [257179] by Kocsen Chung
  • 2 edits in branches/safari-609.1.20.100-branch/Source/WebKit

Cherry-pick r257013. rdar://problem/59614284

Crash in WebPageProxy::didStartProvisionalLoadForFrameShared
https://bugs.webkit.org/show_bug.cgi?id=207973

Reviewed by Chris Dumez.

Use RefPtr to store Frame*.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):

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

3:13 PM Changeset in webkit [257178] by Kocsen Chung
  • 1 edit in branches/safari-609.1.20.100-branch/Source/WebKitLegacy/mac/WebView/WebPreferences.mm

Apply patch. rdar://problem/59652987

3:05 PM Changeset in webkit [257177] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.0.3

Tag Safari-609.1.20.0.3.

3:00 PM Changeset in webkit [257176] by Alan Coon
  • 8 edits in branches/safari-609.1.20.100-branch/Source

Versioning.

2:59 PM Changeset in webkit [257175] by Russell Epstein
  • 2 edits in branches/safari-609-branch/Source/WebKit

Apply patch. rdar://problem/59680475

2:59 PM Changeset in webkit [257174] by Russell Epstein
  • 23 edits
    3 adds in branches/safari-609-branch

Apply patch. rdar://problem/59654268

2:58 PM Changeset in webkit [257173] by Russell Epstein
  • 3 edits in branches/safari-609-branch/Source/JavaScriptCore

Cherry-pick r257134. rdar://problem/59676907

Make support for bytecode caching more robust against file corruption.
https://bugs.webkit.org/show_bug.cgi?id=207972
<rdar://problem/59260595>

Reviewed by Yusuke Suzuki.

If a bytecode cache file is corrupted, we currently will always crash every time
we try to read it (in perpetuity as long as the corrupted cache file continues to
exist on disk). To guard against this, we'll harden the bytecode caching mechanism
as follows:

  1. Modify the writeCache operation to always write the cache file in a transactional manner i.e. we'll first write to a .tmp file, and then rename the .tmp file to the cache file only if the entire file has been written in completeness.

This ensures that we won't get corrupted cache files due to interrupted writes.

  1. Modify the writeCache operation to also compute a SHA1 hash of the cache file and append the hash at end of the file. Modify the readCache operation to first authenticate the SHA1 hash before allowing the cache file to be used. If the hash does not match, the file is bad, and we'll just delete it.

This ensures that we won't be crashing while decoding a corrupted cache file.

Manually tested with the following scenarios and ensuring that the client recovers
with no crashes:

  1. no cache file on disk.
  2. a 0-sized cache file on a disk.
  3. a truncated cache file on disk.
  4. a corrupted cache file on disk.
  5. an uncorrupted cache file on disk.

Also added some static_asserts in CachedTypes.cpp to document some invariants that
the pre-existing code is dependent on.

  • API/JSScript.mm: (-[JSScript readCache]): (-[JSScript writeCache:]):
  • runtime/CachedTypes.cpp:

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

2:58 PM Changeset in webkit [257172] by Russell Epstein
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r257106. rdar://problem/59676866

Add fidelity.com to the desktop class quirks list
https://bugs.webkit.org/show_bug.cgi?id=208037
<rdar://problem/59480381>

Reviewed by Brent Fulgham.

No new tests. This patch just adds a domain name to a quirks function.

  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::desktopClassBrowsingRecommendedForRequest):

fidelity.com and its subdomains now return false.

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

2:58 PM Changeset in webkit [257171] by Russell Epstein
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r257103. rdar://problem/59676889

WebIDBServer resume should return early if suspend does not happen
https://bugs.webkit.org/show_bug.cgi?id=208027
<rdar://problem/59617654>

Reviewed by Geoffrey Garen.

We should not try releasing a lock that is not held.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp: (WebKit::WebIDBServer::resume):

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

2:58 PM Changeset in webkit [257170] by Russell Epstein
  • 5 edits in branches/safari-609-branch

Cherry-pick r257089. rdar://problem/59676923

NetworkCache should use 4KB threshold for mmap-ed files instead of 16KB
https://bugs.webkit.org/show_bug.cgi?id=207882

Reviewed by Alex Christensen.

Source/WebKit:

We found that a lot of Vectors in Membuster is holding resource content. This is because we have 16KB threshold for mmap-ed files.
If a file is smaller than 16KB, it is copied to Vector instead. But this is costly in terms of memory. If we use mmap-ed files,
it becomes named-pages instead of anonymous-pages. File-backed non-dirty named-pages have a lot of benefit.

  1. The application is offering a hint that pages are file-backed. This means that OS can purge them at any time since the content can be recovered from the disk. This is cheaper than swapping / compressing anonymous pages since just discarding works.
  2. The application is offering a hint that pages have spatial locality. Purging pages in one named-pages region is better compared to purging the same # of anonymous pages randomly. Anonymous pages are split by malloc implementation and access pattern of pages in one VA is random. On the other hand, named-pages are accessed together because it is file, and file typically has sequential locality. And recovery of named pages are also cheap compared to anonymous pages since OS can prefetch pages once access happens because of sequential locality of files. This tendency makes OS like purging named pages instead of anonymous pages. In WebKit use case, this works perfectly. CachedResource typically has decoded content. So typically WebProcess does not access SharedBuffer after the content is decoded.

This patch reduces the threshold from 16KB to page size (4KB in macOS, 16KB in iOS). This is pre-2015 behavior.
This offers 2.56% progression with 98% probability in Membuster.

  • NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::maximumInlineBodySize): (WebKit::NetworkCache::estimateRecordsSize): (WebKit::NetworkCache::Storage::shouldStoreBodyAsBlob):

LayoutTests:

The test is assuming that 12KB file is served via non-mmap-file.
This assumption is flaky and broken by this change. For now, we pick smaller
file to meet this assumption.

  • http/tests/inspector/network/resource-sizes-disk-cache-expected.txt:
  • http/tests/inspector/network/resource-sizes-disk-cache.html:

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

2:58 PM Changeset in webkit [257169] by Russell Epstein
  • 4 edits in branches/safari-609-branch

Cherry-pick r257077. rdar://problem/59676879

REGRESSION (r255677): Reloading tab with beforeunload prompt closes tab when asking to stay on page
https://bugs.webkit.org/show_bug.cgi?id=208015
<rdar://problem/59591630>

Reviewed by Geoffrey Garen.

Source/WebKit:

Make sure we only restart the tryClose timer after the beforeunload prompt if the timer was actually
active before the prompt (i.e. tryClose was actually called). On Reload, tryClose is not called
but beforeunload prompt may still happen.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ModalAlerts.mm: (TEST):

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

2:58 PM Changeset in webkit [257168] by Russell Epstein
  • 10 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r256967. rdar://problem/59654609

Regression(r247567) HTTP Disk cache capacity is no longer set
https://bugs.webkit.org/show_bug.cgi?id=207959
<rdar://problem/59603972>

Reviewed by Alex Christensen.

NetworkProcess::initializeNetworkProcess() was setting the cache model, which
would iterate over all network sessions to update their network cache capacity.
The issue was that network sessions were not constructed yet at this point.
When the network session(s) would get created later on, they would construct
their NetworkCache and it would use the default capacity (i.e.
std::numeric_limits<size_t>::max()).

To make this safer, I have moved the capacity computation to the Cache::open()
method and now pass the capacity when constructing the network cache storage.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::initializeNetworkProcess): (WebKit::NetworkProcess::setCacheModelSynchronouslyForTesting): (WebKit::NetworkProcess::setCacheModel):
  • NetworkProcess/NetworkProcess.h: (WebKit::NetworkProcess::cacheModel const):
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/cache/CacheStorageEngineCaches.cpp: (WebKit::CacheStorage::Caches::initialize):
  • NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::computeCapacity): (WebKit::NetworkCache::Cache::open): (WebKit::NetworkCache::Cache::capacity const): (WebKit::NetworkCache::Cache::updateCapacity): (WebKit::NetworkCache::Cache::setCapacity): Deleted.
  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::open): (WebKit::NetworkCache::Storage::Storage): (WebKit::NetworkCache::Storage::setCapacity):
  • NetworkProcess/cache/NetworkCacheStorage.h:
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::setCacheModel):

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

2:58 PM Changeset in webkit [257167] by Russell Epstein
  • 6 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r256881. rdar://problem/59654577

Drop getSandboxExtensionsForBlobFiles() as it is dead code
https://bugs.webkit.org/show_bug.cgi?id=207909
<rdar://problem/59562180>

Reviewed by Per Arne Vollan.

  • NetworkProcess/NetworkProcess.cpp:
  • NetworkProcess/NetworkProcess.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:
  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:

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

2:58 PM Changeset in webkit [257166] by Russell Epstein
  • 3 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r256857. rdar://problem/59654279

NetworkDataTask should not expect its session wrapper to be always live
https://bugs.webkit.org/show_bug.cgi?id=207903
rdar://problem/59291486

Reviewed by Alex Christensen.

NetworkDataTaskCocoa should take a weak pointer to its session wrapper.
If the session wrapper is still valid, then we can remove the task from the session wrapper map.
We cannot guarantee session wrapper is valid since NetworkDataTask is ref counted.

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

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

2:58 PM Changeset in webkit [257165] by Russell Epstein
  • 3 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r256856. rdar://problem/59654783

MediaSource.isTypeSupported() says "video/mp4;codecs=\"avc3.42C015\"" is not supported, but it is
https://bugs.webkit.org/show_bug.cgi?id=207622

Reviewed by Eric Carlson.

Revert the behavior change of MediaPlayerPrivateMediaSourceAVFObjC::supportsType() in r253952.

  • platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm: (WebCore::AVAssetMIMETypeCache::canDecodeExtendedType):

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

2:58 PM Changeset in webkit [257164] by Russell Epstein
  • 1 edit in branches/safari-609-branch/Source/JavaScriptCore/runtime/JSCJSValue.h

Apply patch. rdar://problem/59654701

2:34 PM Changeset in webkit [257163] by Alan Coon
  • 2 edits in branches/safari-609.1.20.111-branch/Source/WebKit

Apply patch. rdar://problem/59680470

2:25 PM Changeset in webkit [257162] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

Remove telemetry from sandbox rules needed for basic WebKit logging
https://bugs.webkit.org/show_bug.cgi?id=208073
<rdar://problem/59658551>

Reviewed by Per Arne Vollan.

Now that we see the specific uses for the 'kern.osversion' sysctl and the need
for network-outbound connections for syslog, we can remove the telemetry.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
1:42 PM Changeset in webkit [257161] by Jonathan Bedard
  • 15 edits in trunk/Tools

Build DumpRenderTree and WebKitTestRunner for macCatalyst
https://bugs.webkit.org/show_bug.cgi?id=208068
<rdar://problem/59676596>

Reviewed by Tim Horton.

  • DumpRenderTree/ios/TextInputControllerIOS.m: Import WebKitLegacy explicitly.
  • DumpRenderTree/mac/Configurations/Base.xcconfig: Use cocoatouch instead of SDK.
  • DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig: Ditto.
  • DumpRenderTree/mac/Configurations/DumpRenderTreeApp.xcconfig: Ditto.
  • DumpRenderTree/mac/Configurations/DumpRenderTreeLibrary.xcconfig: Ditto.
  • DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig: Ditto.
  • DumpRenderTree/mac/EditingDelegate.mm: Import WebKitLegacy explicitly.
  • DumpRenderTree/mac/EventSendingController.h: Ditto.
  • DumpRenderTree/mac/ObjCPlugin.m: Ditto.
  • DumpRenderTree/mac/ResourceLoadDelegate.mm: Ditto.
  • Makefile: Add DumpRenderTree and WebKitTestRunner.
  • WebKitTestRunner/Configurations/Base.xcconfig: Use cocoatouch instead of SDK.
  • WebKitTestRunner/Configurations/InjectedBundle.xcconfig: Ditto.
  • WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig: Ditto.
1:39 PM Changeset in webkit [257160] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Remove an unused local variable after r256808
https://bugs.webkit.org/show_bug.cgi?id=208072

Reviewed by Chris Dumez.

Remove scriptsToExecuteSoon.

  • dom/ScriptRunner.cpp:

(WebCore::ScriptRunner::timerFired):

1:36 PM Changeset in webkit [257159] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iOS ] imported/w3c/web-platform-tests/IndexedDB/key-generators/reading-autoincrement-indexes-cursors.any.serviceworker.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=206934

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
1:19 PM Changeset in webkit [257158] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

REGRESSION (r255533) Null Deref of _sessionWrapper under [WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]
https://bugs.webkit.org/show_bug.cgi?id=208029
<rdar://problem/59404381>

Reviewed by Tim Horton.

r255533 started dereferencing _sessionWrapper without null check in didReceiveChallenge. All other delegates in this file null check
_sessionWrapper before using it because it is a weak pointer. Add a null check to avoid crashing.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate sessionFromTask:]):

1:12 PM Changeset in webkit [257157] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Add build step to Validate ChangeLog for commit-queue
https://bugs.webkit.org/show_bug.cgi?id=208064

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(ValidateChangeLogAndReviewer): Build step to validate ChangeLog.
(ValidateChangeLogAndReviewer.start):
(ValidateChangeLogAndReviewer.evaluateCommand): If the validation fails, comment on bug and mark patch as cq-.
(SetCommitQueueMinusFlagOnPatch.start): End the build (after marking the patch cq-) if build_finish_summary property is set.

12:26 PM Changeset in webkit [257156] by commit-queue@webkit.org
  • 12 edits
    3 copies in trunk

Create a new ImageBuffer type for drawing on a DisplayList
https://bugs.webkit.org/show_bug.cgi?id=207109

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

Source/WebCore:

DisplayList::ImageBuffer inherits ConcreteImageBuffer and DrawingContext.
The drawing context will be the context of DrawingContext. The operations
of ConcreteImageBuffer will have to ensure the recorded display-list is
replayed back before getting the pixels of the ImageBufferBackend.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createContext2d):
(WebCore::HTMLCanvasElement::setUsesDisplayListDrawing):
(WebCore::HTMLCanvasElement::setTracksDisplayListReplay):
(WebCore::HTMLCanvasElement::displayListAsText const):
(WebCore::HTMLCanvasElement::replayDisplayListAsText const):
All the DisplayList operations will be routed to the DrawingContext of
the ImageBuffer.

(WebCore::HTMLCanvasElement::createImageBuffer const):
createImageBuffer() can decide the ImageBuffer type based on the settings
and the size of the canvas.

  • html/HTMLCanvasElement.h:
  • platform/graphics/ConcreteImageBuffer.h:

(WebCore::ConcreteImageBuffer::create):
The type of the ImageBuffer will be passed to this function such that
it can create instances of derived classes.

  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::create):
Create ImageBuffers which record the drawing commands to DisplayLists before
committing them to the back-ends.

  • platform/graphics/ImageBuffer.h:

(WebCore::ImageBuffer::drawingContext):
(WebCore::ImageBuffer::flushDrawingContext):
Add virtual methods to support DisplayList in ImageBuffer.

  • platform/graphics/PlatformImageBuffer.h:
  • platform/graphics/RenderingMode.h:

Add DisplayList types to RenderingMode and define platform types for
DisplayList ImageBuffers.

  • platform/graphics/displaylists/DisplayListDrawingContext.cpp: Added.

(WebCore::DisplayList::DrawingContext::DrawingContext):
(WebCore::DisplayList::DrawingContext::setTracksDisplayListReplay):
(WebCore::DisplayList::DrawingContext::replayDisplayList):

  • platform/graphics/displaylists/DisplayListDrawingContext.h: Added.

(WebCore::DisplayList::DrawingContext::context const):
(WebCore::DisplayList::DrawingContext::displayList):
(WebCore::DisplayList::DrawingContext::displayList const):
(WebCore::DisplayList::DrawingContext::replayedDisplayList const):
DisplayList::DrawingContext holds a recording and an optional replaying
back DisplayLists. It also provides a recording GraphicsContext.

  • platform/graphics/displaylists/DisplayListImageBuffer.h: Added.

(WebCore::DisplayList::ImageBuffer::create):
(WebCore::DisplayList::ImageBuffer::ImageBuffer):
(WebCore::DisplayList::ImageBuffer::~ImageBuffer):
Drawing commands will be recorded first because context() is overridden
to return the GraphicsContext of DrawingContext. These drawing commands
will be flushed before getting the pixels of the back-end because
flushDrawingContext() is overridden to replay back the recorded DisplayList
to the GraphicsContext of the back-end.

LayoutTests:

The extra commands are recorded by CanvasBase::setImageBuffer() which
used to issue these GraphicsContext commands directly to the backend.
With this patch, DisplayList::ImageBuffer does not allow access to the
backend context. So all the GraphicsContext commands has to be recorded.

  • displaylists/canvas-display-list-expected.txt:
12:23 PM Changeset in webkit [257155] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Address post-review feedback in webkit.org/b/207352
https://bugs.webkit.org/show_bug.cgi?id=207352

Reviewed by Brian Weinstein.

Use m_mainFrame instead of going through Page, and also append the string "\n\n" instead of appending the
newline character twice.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::getContentsAsString):

11:58 AM Changeset in webkit [257154] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r256764?) [ Mac wk1 Release ] legacy-animation-engine/fast/animation/animation-mixed-transform-crash.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208019

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
11:42 AM Changeset in webkit [257153] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit

[Media in GPU process] Synchronize the properties of video layers in the GPU process with the hosting layer in the web process
https://bugs.webkit.org/show_bug.cgi?id=206132

Patch by Peng Liu <Peng Liu> on 2020-02-21
Reviewed by Eric Carlson.

A follow-up patch to fix Catalyst/watchOS/tvOS build failures related to unified build.

  • WebProcess/GPU/media/cocoa/VideoLayerRemoteCocoa.h:
11:33 AM Changeset in webkit [257152] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] webgpu/whlsl/nested-loop.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207117

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:21 AM Changeset in webkit [257151] by pvollan@apple.com
  • 4 edits in trunk/Source/WebKit

[iOS] Issue extension of CoreMedia service to the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=208066
<rdar://problem/35864528>

Reviewed by Geoffrey Garen.

This service should also be added to the sandbox of the GPU process.

No new tests, covered by existing tests.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::mediaRelatedMachServices):

11:03 AM Changeset in webkit [257150] by Wenson Hsieh
  • 11 edits in trunk/Source

[macOS] Large form controls are rendered at the wrong NSControlSize
https://bugs.webkit.org/show_bug.cgi?id=208043
<rdar://problem/59659134>

Reviewed by Tim Horton.

Source/WebCore:

When painting form controls that are larger than a certain threshold (for the most part, 21px), use
NSControlSizeLarge instead of NSControlSizeRegular. This makes us choose a more appropriate appearance when
painting native large form controls, as long as the system supports it. Note that not all the metrics for
NSControlSizeLarge form controls are finalized, as noted in the per-method comments below.

With this patch alone, there is no change in behavior yet; in the near future, these changes will be covered by
new platform-specific baselines.

  • platform/PopupMenuStyle.h: Add a new PopupMenuSizeLarge that corresponds to a popup that has NSControlSizeLarge.
  • platform/mac/ThemeMac.h: Add a helper to check (at runtime) whether the new large form control size is enabled.
  • platform/mac/ThemeMac.mm:

(WebCore::controlSizeForFont): Add a new font size breakpoint, for which we use NSControlSizeLarge instead of
NSControlSizeRegular.

(WebCore::sizeFromNSControlSize):
(WebCore::sizeFromFont):
(WebCore::controlSizeFromPixelSize):
(WebCore::setControlSize):
(WebCore::checkboxSizes): Reflect the fact that checkboxes with NSControlSizeLarge are 16 by 16.
(WebCore::checkboxMargins): Just match NSControlSizeRegular margins for now. These seem incorrect already, even
for NSControlSizeRegular in macOS 10.15.

(WebCore::radioSizes): Reflect the fact that radio buttons with NSControlSizeLarge are 16 by 16, and
NSControlSizeRegular radio buttons are 14 by 14.

(WebCore::radioMargins): Just match NSControlSizeRegular margins for now. These seem incorrect already, even for
NSControlSizeRegular in macOS 10.15.

(WebCore::buttonSizes): Reflect the fact that buttons with NSControlSizeLarge are 28px tall.
(WebCore::buttonMargins): Just match NSControlSizeRegular margins for now, and add a FIXME about updating them.
(WebCore::setUpButtonCell):
(WebCore::stepperSizes): NSControlSizeLarge matches NSControlSizeRegular at the moment.
(WebCore::stepperControlSizeForFont): Add a new font size breakpoint for using NSControlSizeLarge.

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::controlSizeForFont const):
(WebCore::RenderThemeMac::controlSizeForCell const):
(WebCore::RenderThemeMac::controlSizeForSystemFont const):
(WebCore::RenderThemeMac::popupButtonMargins const):
(WebCore::RenderThemeMac::popupButtonSizes const):
(WebCore::RenderThemeMac::popupButtonPadding const):

NSControlSizeLarge metrics for popup buttons cannot be determined yet.

(WebCore::RenderThemeMac::progressBarSizes const):
(WebCore::RenderThemeMac::progressBarMargins const):
(WebCore::RenderThemeMac::paintProgressBar):

NSControlSizeLarge matches NSControlSizeRegular at the moment.

(WebCore::menuListButtonSizes):
(WebCore::RenderThemeMac::popupMenuSize const):
(WebCore::RenderThemeMac::menuListSizes const):
(WebCore::RenderThemeMac::searchFieldSizes const):
(WebCore::RenderThemeMac::cancelButtonSizes const):
(WebCore::RenderThemeMac::resultsButtonSizes const):

Search field results and cancel buttons have the same size in NSControlSizeLarge as in NSControlSizeRegular.

Source/WebCore/PAL:

Import NSAppearance_Private.h in this SPI header. See WebCore ChangeLog for more details.

  • pal/spi/mac/NSAppearanceSPI.h:

Source/WebKit:

See WebCore ChangeLog for more details.

  • UIProcess/mac/WebPopupMenuProxyMac.mm:

(WebKit::WebPopupMenuProxyMac::showPopupMenu):

Source/WebKitLegacy/mac:

See WebCore ChangeLog for more details.

  • WebCoreSupport/PopupMenuMac.mm:

(PopupMenuMac::show):

10:52 AM Changeset in webkit [257149] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk1 Debug ] legacy-animation-engine/animations/animation-direction-normal.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208065

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
10:39 AM Changeset in webkit [257148] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Remove WebPageProxy::machSendRightCallback as it is dead code
https://bugs.webkit.org/show_bug.cgi?id=208057
<rdar://problem/59658805>

Reviewed by Geoffrey Garen.

  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
10:24 AM Changeset in webkit [257147] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Add build step to set cq- flag on bugzilla patch
https://bugs.webkit.org/show_bug.cgi?id=208021

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(BugzillaMixin.set_cq_minus_flag_on_patch):
(SetCommitQueueMinusFlagOnPatch):
(SetCommitQueueMinusFlagOnPatch.start):
(SetCommitQueueMinusFlagOnPatch.getResultSummary):

10:23 AM Changeset in webkit [257146] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] http/wpt/fetch/disable-speculative-for-reload.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208062

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
10:18 AM Changeset in webkit [257145] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Remove WebPasteBoardProxy::PasteboardCopy as it is dead code
https://bugs.webkit.org/show_bug.cgi?id=208058
<rdar://problem/59658727>

Reviewed by Geoffrey Garen.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
  • UIProcess/WebPasteboardProxy.h:
  • UIProcess/WebPasteboardProxy.messages.in:
10:08 AM Changeset in webkit [257144] by Matt Lewis
  • 6 edits in trunk/Tools

Stub repositories fail to upload some results due to missing head svn revision
https://bugs.webkit.org/show_bug.cgi?id=207684

Reviewed by Jonathan Bedard.

  • Scripts/webkitpy/common/host_mock.py: Added in call for creating stub repo checkout information for upload tests.

(MockHost.init):

  • Scripts/webkitpy/layout_tests/models/test_run_results.py:

(summarize_results): Changed call to head_svn_revision to port.commits_for_upload() to bring

  • Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py:

(SummarizedResultsTest.setUp): Added in new required parameter for testing.

  • Scripts/webkitpy/port/base.py:

(Port.commits_for_upload): Removed the forced movement up the systems tree that prevented us
from using mock SCMs and more

  • Scripts/webkitpy/port/test.py: Added function to make the checkout_information.json for upload testing.
10:03 AM Changeset in webkit [257143] by dbates@webkit.org
  • 3 edits in trunk/Source/WebKitLegacy/mac

[iOS][Legacy WebKit] Expose SPI for Page::revealCurrentSelection()
https://bugs.webkit.org/show_bug.cgi?id=207960
<rdar://problem/59604163>

Reviewed by Wenson Hsieh.

Together with <https://bugs.webkit.org/show_bug.cgi?id=207955> this allows a client to reveal
the current selection when it's ready to do so.

  • WebView/WebView.mm:

(-[WebView revealCurrentSelection]): Added.

  • WebView/WebViewPrivate.h:
9:51 AM Changeset in webkit [257142] by Antti Koivisto
  • 3 edits in trunk/Source/WTF

REGRESSION(r257072): MotionMark | Mac | -10%
https://bugs.webkit.org/show_bug.cgi?id=208054
<rdar://problem/59664582>

Reviewed by Geoffrey Garen.

With rAF and slow scripts, suspended functions may pile up in RunLoop because every cycle does a rendering update.

  • wtf/RunLoop.cpp:

(WTF::RunLoop::performWork):
(WTF::RunLoop::suspendFunctionDispatchForCurrentCycle):

Don't suspend if there are already pending suspended functions.

  • wtf/RunLoop.h:
9:47 AM Changeset in webkit [257141] by Diego Pino Garcia
  • 2 edits in trunk/Tools

[JSCOnly] Add --verbose flag when running JavaScriptCore tests
https://bugs.webkit.org/show_bug.cgi?id=208051

Reviewed by Carlos Alberto Lopez Perez.

Verbose flag prints out each test name executed. Without this flag
stdout prints out one or two periods.

  • BuildSlaveSupport/build.webkit.org-config/steps.py:

(RunJavaScriptCoreTests.start):

9:26 AM Changeset in webkit [257140] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mojave ] webaudio/audioparam-exponentialRampToValueAtTime.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=208061

Unreviewed test gardening.

  • platform/mac/TestExpectations:
9:22 AM Changeset in webkit [257139] by commit-queue@webkit.org
  • 4 edits in trunk

[WPE][GTK] googleapis.com is a public suffix, defeating isGoogle() check in UserAgentQuirks.cpp
https://bugs.webkit.org/show_bug.cgi?id=207984

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-02-21
Reviewed by Daniel Bates.

Source/WebCore:

Fix the check for googleapis.com. Since it's now a public suffix, we can no longer check the
URL's base domain here. Instead, we can check endsWith().

I considered switching to endsWith() for all the checks in this file, to make our user agent
quirks robust to future changes in the public suffix list, but checking the base domain is
nicer and it seems unnecessary. We can continue to adjust our quirks in the future as
necessary.

The public suffix list:
https://github.com/publicsuffix/list/blob/7922d7c20e246552be418e8f72e577899fd30d99/public_suffix_list.dat#L11922

  • platform/UserAgentQuirks.cpp:

(WebCore::isGoogle):

Tools:

  • TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST):

9:21 AM Changeset in webkit [257138] by Simon Fraser
  • 9 edits
    2 adds in trunk

[Web Animations] Repeated animations on pseudo elements will fail to run after a while
https://bugs.webkit.org/show_bug.cgi?id=207993
Source/WebCore:

<rdar://problem/59428472>

Reviewed by Zalan Bujtas.

We failed to clear PseudoElement* from AnimationTimeline's various HashMaps on destruction,
causing animations to fail to run when those pointer addresses were reused.

Make DeclarativeAnimation::owningElement() be a WeakPtr<>.

Test: animations/many-pseudo-animations.html

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::willDestoryRendererForElement):
(WebCore::AnimationTimeline::elementWasRemoved):

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

(WebCore::DeclarativeAnimation::DeclarativeAnimation):
(WebCore::DeclarativeAnimation::enqueueDOMEvent):

  • animation/DeclarativeAnimation.h:

(WebCore::DeclarativeAnimation::owningElement const):

  • dom/Element.cpp:

(WebCore::Element::removedFromAncestor):

  • dom/PseudoElement.cpp:

(WebCore::PseudoElement::clearHostElement):

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::tearDownRenderers):

LayoutTests:

Reviewed by Zalan Bujtas.

  • animations/many-pseudo-animations-expected.txt: Added.
  • animations/many-pseudo-animations.html: Added.
9:06 AM Changeset in webkit [257137] by commit-queue@webkit.org
  • 36 edits
    1 copy
    2 moves
    54 adds in trunk/LayoutTests

Update WPT tests for Intersection Observer
https://bugs.webkit.org/show_bug.cgi?id=208053

Patch by Frederic Wang <fwang@igalia.com> on 2020-02-21
Reviewed by Daniel Bates.

LayoutTests/imported/w3c:

  • web-platform-tests/intersection-observer/bounding-box.html:
  • web-platform-tests/intersection-observer/client-rect.html:
  • web-platform-tests/intersection-observer/containing-block.html:
  • web-platform-tests/intersection-observer/cross-origin-iframe.sub-expected.txt: Added.
  • web-platform-tests/intersection-observer/cross-origin-iframe.sub.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/intersection-observer/cross-origin-iframe.html.
  • web-platform-tests/intersection-observer/disconnect.html:
  • web-platform-tests/intersection-observer/display-none.html:
  • web-platform-tests/intersection-observer/document-scrolling-element-root-expected.txt: Added.
  • web-platform-tests/intersection-observer/document-scrolling-element-root.html: Added.
  • web-platform-tests/intersection-observer/edge-inclusive-intersection.html:
  • web-platform-tests/intersection-observer/empty-root-margin.html:
  • web-platform-tests/intersection-observer/iframe-no-root-with-wrapping-scroller-expected.txt: Added.
  • web-platform-tests/intersection-observer/iframe-no-root-with-wrapping-scroller.html: Copied from LayoutTests/imported/w3c/web-platform-tests/intersection-observer/iframe-no-root.html.
  • web-platform-tests/intersection-observer/iframe-no-root.html:
  • web-platform-tests/intersection-observer/initial-observation-with-threshold.html:
  • web-platform-tests/intersection-observer/inline-client-rect.html:
  • web-platform-tests/intersection-observer/isIntersecting-change-events.html:
  • web-platform-tests/intersection-observer/isIntersecting-threshold-expected.txt: Added.
  • web-platform-tests/intersection-observer/isIntersecting-threshold.html: Added.
  • web-platform-tests/intersection-observer/multiple-targets.html:
  • web-platform-tests/intersection-observer/multiple-thresholds.html:
  • web-platform-tests/intersection-observer/nested-cross-origin-iframe.sub-expected.txt: Added.
  • web-platform-tests/intersection-observer/nested-cross-origin-iframe.sub.html: Added.
  • web-platform-tests/intersection-observer/observer-attributes.html:
  • web-platform-tests/intersection-observer/observer-exceptions.html:
  • web-platform-tests/intersection-observer/observer-in-iframe.html:
  • web-platform-tests/intersection-observer/observer-without-js-reference.html:
  • web-platform-tests/intersection-observer/remove-element.html:
  • web-platform-tests/intersection-observer/resources/cross-origin-child-iframe.sub.html: Added.
  • web-platform-tests/intersection-observer/resources/cross-origin-subframe.html:
  • web-platform-tests/intersection-observer/resources/intersection-observer-test-utils.js:

(waitForNotification):
(waitForFrame):
(runTestCycle):
(checkJsonEntry):

  • web-platform-tests/intersection-observer/resources/nested-cross-origin-child-iframe.sub.html: Added.
  • web-platform-tests/intersection-observer/resources/nested-cross-origin-grand-child-iframe.html: Added.
  • web-platform-tests/intersection-observer/resources/same-origin-grand-child-iframe.html: Added.
  • web-platform-tests/intersection-observer/resources/scaled-target-subframe.html: Added.
  • web-platform-tests/intersection-observer/resources/v2-subframe.html: Added.
  • web-platform-tests/intersection-observer/resources/w3c-import.log:
  • web-platform-tests/intersection-observer/root-margin-rounding-expected.txt: Added.
  • web-platform-tests/intersection-observer/root-margin-rounding.html: Added.
  • web-platform-tests/intersection-observer/root-margin.html:
  • web-platform-tests/intersection-observer/rtl-clipped-root-expected.txt: Added.
  • web-platform-tests/intersection-observer/rtl-clipped-root.html: Added.
  • web-platform-tests/intersection-observer/same-document-no-root.html:
  • web-platform-tests/intersection-observer/same-document-root.html:
  • web-platform-tests/intersection-observer/same-document-zero-size-target.html:
  • web-platform-tests/intersection-observer/same-origin-grand-child-iframe.sub-expected.txt: Added.
  • web-platform-tests/intersection-observer/same-origin-grand-child-iframe.sub.html: Added.
  • web-platform-tests/intersection-observer/shadow-content.html:
  • web-platform-tests/intersection-observer/target-in-different-window.html:
  • web-platform-tests/intersection-observer/text-target.html:
  • web-platform-tests/intersection-observer/timestamp.html:
  • web-platform-tests/intersection-observer/unclipped-root.html:
  • web-platform-tests/intersection-observer/v2/animated-occlusion-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/animated-occlusion.html: Added.
  • web-platform-tests/intersection-observer/v2/blur-filter-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/blur-filter.html: Added.
  • web-platform-tests/intersection-observer/v2/box-shadow-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/box-shadow.html: Added.
  • web-platform-tests/intersection-observer/v2/cross-origin-effects.sub-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/cross-origin-occlusion.sub-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/delay-test-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/delay-test.html: Added.
  • web-platform-tests/intersection-observer/v2/drop-shadow-filter-vertical-rl-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/drop-shadow-filter-vertical-rl.html: Added.
  • web-platform-tests/intersection-observer/v2/iframe-target-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/iframe-target.html: Added.
  • web-platform-tests/intersection-observer/v2/inline-occlusion-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/inline-occlusion.html: Added.
  • web-platform-tests/intersection-observer/v2/position-relative-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/position-relative.html: Added.
  • web-platform-tests/intersection-observer/v2/scaled-target-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/scaled-target.html: Added.
  • web-platform-tests/intersection-observer/v2/simple-effects-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/simple-effects.html: Added.
  • web-platform-tests/intersection-observer/v2/simple-occlusion-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/simple-occlusion-svg-foreign-object-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/simple-occlusion-svg-foreign-object.html: Added.
  • web-platform-tests/intersection-observer/v2/simple-occlusion.html: Added.
  • web-platform-tests/intersection-observer/v2/text-editor-occlusion-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/text-editor-occlusion.html: Added.
  • web-platform-tests/intersection-observer/v2/text-shadow-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/text-shadow.html: Added.
  • web-platform-tests/intersection-observer/v2/w3c-import.log: Added.
  • web-platform-tests/intersection-observer/w3c-import.log:
  • web-platform-tests/intersection-observer/zero-area-element-hidden.html:
  • web-platform-tests/intersection-observer/zero-area-element-visible.html:
  • web-platform-tests/intersection-observer/v2/cross-origin-effects.sub.html: Added.
  • web-platform-tests/intersection-observer/v2/cross-origin-occlusion.sub.html: Added.

LayoutTests:

Add iOS expectations and skip new tests timing out.

  • TestExpectations:
  • platform/ios/imported/w3c/web-platform-tests/intersection-observer/cross-origin-iframe.sub-expected.txt: Added.
  • platform/ios/imported/w3c/web-platform-tests/intersection-observer/iframe-no-root-with-wrapping-scroller-expected.txt: Added.
  • platform/ios/imported/w3c/web-platform-tests/intersection-observer/nested-cross-origin-iframe.sub-expected.txt: Remamed from platform/ios/imported/w3c/web-platform-tests/intersection-observer/nested-cross-origin-iframe.sub.txt.
8:43 AM Changeset in webkit [257136] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk1 Debug ] legacy-animation-engine/compositing/transitions/add-remove-transition.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208059

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
8:27 AM Changeset in webkit [257135] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Fix media related sandbox issues in the GPU process
https://bugs.webkit.org/show_bug.cgi?id=208033

Reviewed by Eric Carlson.

The mach lookup sandbox extension to 'com.apple.tccd' needs to be created with the method SandboxExtension::createHandleForMachLookup.
The file read-write sandbox extension to the media cache directory needs to be created with the parent folder of the actual cache folder,
since the media frameworks also seem to access files there.

No new tests, covered by existing tests.

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::singleton):
(WebKit::gpuProcessSessionParameters):

8:20 AM Changeset in webkit [257134] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Make support for bytecode caching more robust against file corruption.
https://bugs.webkit.org/show_bug.cgi?id=207972
<rdar://problem/59260595>

Reviewed by Yusuke Suzuki.

If a bytecode cache file is corrupted, we currently will always crash every time
we try to read it (in perpetuity as long as the corrupted cache file continues to
exist on disk). To guard against this, we'll harden the bytecode caching mechanism
as follows:

  1. Modify the writeCache operation to always write the cache file in a transactional manner i.e. we'll first write to a .tmp file, and then rename the .tmp file to the cache file only if the entire file has been written in completeness.

This ensures that we won't get corrupted cache files due to interrupted writes.

  1. Modify the writeCache operation to also compute a SHA1 hash of the cache file and append the hash at end of the file. Modify the readCache operation to first authenticate the SHA1 hash before allowing the cache file to be used. If the hash does not match, the file is bad, and we'll just delete it.

This ensures that we won't be crashing while decoding a corrupted cache file.

Manually tested with the following scenarios and ensuring that the client recovers
with no crashes:

  1. no cache file on disk.
  2. a 0-sized cache file on a disk.
  3. a truncated cache file on disk.
  4. a corrupted cache file on disk.
  5. an uncorrupted cache file on disk.

Also added some static_asserts in CachedTypes.cpp to document some invariants that
the pre-existing code is dependent on.

  • API/JSScript.mm:

(-[JSScript readCache]):
(-[JSScript writeCache:]):

  • runtime/CachedTypes.cpp:
4:38 AM Changeset in webkit [257133] by Lauro Moura
  • 2 edits in trunk/Source/WebCore

[GStreamer] TextCombinerGStreamer is failing to compile with Gst1.14
https://bugs.webkit.org/show_bug.cgi?id=208041

Reviewed by Xabier Rodriguez-Calvar.

Replace usage of gst_clear_object and gst_clear_tag_list with previous
*_unref functions. The clear versions were added in 1.16 while Ubuntu
18.04 (current LTS) and Debian stable uses 1.14.

  • platform/graphics/gstreamer/TextCombinerGStreamer.cpp:

(webkitTextCombinerPadDispose):

3:22 AM Changeset in webkit [257132] by clopez@igalia.com
  • 16 edits in trunk

Value sanitization for input[type=text] should not truncate a value at a control character
https://bugs.webkit.org/show_bug.cgi?id=207900

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline the tests. Below its a summary of the number of FAIL and PASS lines changed for each test:

  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-csiso2022jp-expected.txt: FAIL from 7312 to 374 PASS from 17 to 6955
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han-expected.txt: FAIL from 21216 to 477 PASS from 53 to 20792
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-hangul-expected.txt: FAIL from 11155 to 0 PASS from 28 to 11183
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-misc-expected.txt: FAIL from 3422 to 46 PASS from 9 to 3385
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-expected.txt: FAIL from 7375 to 374 PASS from 17 to 7018
  • web-platform-tests/html/semantics/forms/the-input-element/valueMode-expected.txt: FAIL from 20 to 10 PASS from 22 to 32

Source/WebCore:

Stop truncating value at a control character. The new behavior is compatible with Chrome and Firefox.
Inspired on Chromium patch https://codereview.chromium.org/189843008

Covered by existing tests: affected layout tests are modified to reflect the new behaviour.
This improves WPT pass-rate in around 49K new subtest passes for Japanesse encoding tests.

  • html/TextFieldInputType.cpp:

(WebCore::limitLength):

LayoutTests:

Update layout tests to reflect the new behaviour.

  • fast/forms/input-value-sanitization-expected.txt:
  • fast/forms/input-value-sanitization.html:
  • fast/forms/paste-multiline-text-input.html:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/valueMode-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/valueMode-expected.txt:
  • platform/mac/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/valueMode-expected.txt:
2:26 AM Changeset in webkit [257131] by Carlos Garcia Campos
  • 5 edits
    2 adds in trunk/Source/WebCore

[WPE] Use custom theme style for media controls
https://bugs.webkit.org/show_bug.cgi?id=208002

Reviewed by Adrian Perez de Castro.

Add mediaControlsAdwaita.css and mediaControlsAdwaita.js. The style is based on GTK port with a few differences:

  • Adwaita icons are included in the css.
  • All buttons have effects for hover, pressed and disabled states.
  • Mute and fullscreen (only for videos) buttons are always visible, but disabled when not available to avoid the dancing when they are shown.
  • Media duration is always shown too (for non-live streams), being 00:00 and disabled when unknown, for the same reason.
  • Timeline and volume sliders are smaller and their thumbs are circled instead of rounded rectangles.
  • Slider thumbs also have effects for hover, pressed and disabled states.
  • Modules/mediacontrols/mediaControlsAdwaita.css: Added.

(audio::-webkit-media-controls-panel.hidden,):
(body:-webkit-full-page-media):
(audio):
(audio:-webkit-full-page-media,):
(audio:-webkit-full-page-media::-webkit-media-controls-panel,):
(::-webkit-media-controls):
(audio::-webkit-media-controls-enclosure,):
(video::-webkit-media-controls-enclosure):
(audio::-webkit-media-controls-panel,):
(video::-webkit-media-controls-panel):
(video::-webkit-media-controls-panel div.mute-box,):
(audio::-webkit-media-controls-panel div.mute-box.hidden,):
(audio::-webkit-media-controls-mute-button,):
(audio::-webkit-media-controls-mute-button.muted,):
(audio::-webkit-media-controls-play-button,):
(audio::-webkit-media-controls-play-button.paused,):
(audio::-webkit-media-controls-current-time-display,):
(audio::-webkit-media-controls-current-time-display.no-duration,):
(audio::-webkit-media-controls-current-time-display.hidden,):
(audio::-webkit-media-controls-timeline,):
(input[type="range"][disabled]::-webkit-media-slider-thumb,):
(audio::-webkit-media-controls-timeline.hidden,):
(audio::-webkit-media-controls-volume-slider-container,):
(audio::-webkit-media-controls-volume-slider-container.hiding,):
(audio::-webkit-media-controls-volume-slider-container.down,):
(audio::-webkit-media-controls-panel .hiding.down,):
(audio::-webkit-media-controls-volume-slider,):
(audio::-webkit-media-controls-volume-slider-container input[type="range"]::-webkit-media-slider-container > div,):
(input[type="range"]::-webkit-media-slider-container):
(input[type="range"]::-webkit-media-slider-container > div):
(input[type="range"]::-webkit-media-slider-thumb):
(audio::-webkit-media-controls-toggle-closed-captions-button,):
(audio::-webkit-media-controls-toggle-closed-captions-button.hidden,):
(video::-webkit-media-controls-closed-captions-container):
(video::-webkit-media-controls-closed-captions-container.out):
(video::-webkit-media-controls-closed-captions-container.hidden):
(video::-webkit-media-controls-closed-captions-container h3):
(video::-webkit-media-controls-closed-captions-container ul):
(video::-webkit-media-controls-closed-captions-container li):
(video::-webkit-media-controls-closed-captions-container li.selected):
(audio::-webkit-media-controls-fullscreen-button,):
(audio::-webkit-media-controls-fullscreen-button.hidden,):
(audio::-webkit-media-controls-panel button:hover,):
(audio::-webkit-media-controls-panel button:active,):
(audio::-webkit-media-controls-panel button[disabled],):

  • Modules/mediacontrols/mediaControlsAdwaita.js: Added.

(createControls):
(ControllerAdwaita):
(contains):
(ControllerAdwaita.prototype.createControls):
(ControllerAdwaita.prototype.configureInlineControls):
(ControllerAdwaita.prototype.shouldHaveControls):
(ControllerAdwaita.prototype.reconnectControls):
(ControllerAdwaita.prototype.setStatusHidden):
(ControllerAdwaita.prototype.updateTime):
(ControllerAdwaita.prototype.handleTimeUpdate):
(ControllerAdwaita.prototype.updateHasAudio):
(ControllerAdwaita.prototype.handleMuteButtonMouseOver):
(ControllerAdwaita.prototype.handleVolumeBoxMouseOut):
(ControllerAdwaita.prototype.removeControls):
(ControllerAdwaita.prototype.addControls):
(ControllerAdwaita.prototype.updateFullscreenButton):
(ControllerAdwaita.prototype.updateReadyState):
(ControllerAdwaita.prototype.updateDuration):
(ControllerAdwaita.prototype.setIsLive):
(ControllerAdwaita.prototype.updatePlaying):
(ControllerAdwaita.prototype.updateProgress):
(ControllerAdwaita.prototype.handleCaptionButtonClicked):
(ControllerAdwaita.prototype.buildCaptionMenu):
(ControllerAdwaita.prototype.destroyCaptionMenu):
(ControllerAdwaita.prototype.showCaptionMenu):
(ControllerAdwaita.prototype.hideCaptionMenu):
(ControllerAdwaita.prototype.captionMenuTransitionEnd):
(ControllerAdwaita.prototype.handleCaptionButtonMouseOver):
(ControllerAdwaita.prototype.handleCaptionButtonShowMenu):
(ControllerAdwaita.prototype.handleCaptionButtonMouseOut):
(ControllerAdwaita.prototype.handleCaptionMouseOut):

  • Modules/mediacontrols/mediaControlsBase.js:
  • PlatformWPE.cmake:
  • platform/wpe/RenderThemeWPE.cpp:

(WebCore::RenderThemeWPE::extraMediaControlsStyleSheet):
(WebCore::RenderThemeWPE::mediaControlsScript):
(WebCore::RenderThemeWPE::paintMediaSliderTrack):
(WebCore::RenderThemeWPE::paintMediaVolumeSliderTrack):

  • platform/wpe/RenderThemeWPE.h:
2:16 AM Changeset in webkit [257130] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix for Windows ports

WebKitBuild\Release\WTF\Headers\wtf/RefPtr.h(44): error C2027: use of undefined type 'WebCore::ImageData'

RefPtr<ImageData> is used without defining ImageData.

  • platform/graphics/ConcreteImageBuffer.h: Added #include "ImageData.h".
12:26 AM Changeset in webkit [257129] by rniwa@webkit.org
  • 4 edits
    2 adds in trunk

Nullptr crash in RenderStyle::isFlippedBlocksWritingMode when fragment flow gains a new in-flow descendant
https://bugs.webkit.org/show_bug.cgi?id=207296
<rdar://problem/49687828>

Patch by Jack Lee <Jack Lee> on 2020-02-21
Reviewed by Antti Koivisto.

When a multi-column fragment flow gains a new in-flow descendant, we need to call
multiColumnDescendantInserted so RenderMultiColumnSet would be created for the new
descendant.

Source/WebCore:

Test: fast/multicol/fragflow-gains-new-in-flow-descendant-crash.html

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::childFlowStateChangesAndAffectsParentBlock):

LayoutTests:

  • TestExpectations:
  • fast/multicol/fragflow-gains-new-in-flow-descendant-crash-expected.txt: Added.
  • fast/multicol/fragflow-gains-new-in-flow-descendant-crash.html: Added.

Feb 20, 2020:

11:44 PM Changeset in webkit [257128] by commit-queue@webkit.org
  • 6 edits in trunk

[GTK] Improve user agent quirk for Google Docs and Google Drive
https://bugs.webkit.org/show_bug.cgi?id=206506

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-02-20
Reviewed by Carlos Garcia Campos.

Source/WebCore:

Stop using our macOS platform quirk for Google Docs and Google Drive. It is not successfully
suppressing the unsupported browser warnings that it was added to avoid. It is also
responsible for complaints from users who do not like seeing macOS-style shortcuts with
the Command key rather than Ctrl.

Replace it with a new Firefox browser quirk. We can avoid the unsupported browser warning in
Google Docs by using this quirk on accounts.youtube.com. There's no need for any other quirk
specific to Google Docs (although removing the macOS platform quirk means we'll instead
begin using the x86_64 Linux quirk that we send to other Google domains). Google Drive will
also use this new quirk.

Also, remove a stale comment instructing developers to test downloading the Hangouts browser
plugin. We no longer support NPAPI, so Google Hangouts is a lost cause until we get WebRTC
working.

  • platform/UserAgentQuirks.cpp:

(WebCore::urlRequiresFirefoxBrowser):
(WebCore::urlRequiresMacintoshPlatform):
(WebCore::urlRequiresLinuxDesktopPlatform):
(WebCore::UserAgentQuirks::quirksForURL):
(WebCore::UserAgentQuirks::stringForQuirk):

  • platform/UserAgentQuirks.h:
  • platform/glib/UserAgentGLib.cpp:

(WebCore::buildUserAgentString):

Tools:

  • TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:

(TestWebKitAPI::assertUserAgentForURLHasFirefoxBrowserQuirk):
(TestWebKitAPI::TEST):

10:57 PM Changeset in webkit [257127] by Peng Liu
  • 15 edits
    6 adds in trunk/Source

[Media in GPU process] Synchronize the properties of video layers in the GPU process with the hosting layer in the web process
https://bugs.webkit.org/show_bug.cgi?id=206132

Reviewed by Jer Noble.

Source/WebCore:

Update the name (for debugging) of the CALayer created by _web_renderLayerWithContextID (The CALayer will not be only used as video layers).
This patch also fixes the ordering issue related to VideoLayerManagerObjC.h and VideoLayerManagerObjC.mm in the Xcode project file.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/cocoa/WebCoreCALayerExtras.mm:

(+[CALayer _web_renderLayerWithContextID:]):

Source/WebCore/PAL:

Update the CAContext interface to expose currentContext for external builds.

  • pal/spi/cocoa/QuartzCoreSPI.h:

Source/WebKit:

MediaPlayerPrivateRemote creates WKVideoLayerRemote whose sublayer is created by LayerHostingContext::createPlatformLayerForHostingContext().
The WKVideoLayerRemote will be used by the renderer to manage the video element in the Web process. When its size is changed by the renderer,
it applies a transform without changing its actual size, and sends a message to MediaPlayerPrivateProxy in the GPU process
to change the size of the container layer. After that, WKVideoLayerRemote will set its size to the correct one in the Web process side.
We need to use a MachSendRight to synchronize the transactions in the Web process and the GPU process.

We have to use such a process to change the appearance of WKVideoLayerRemote in order to guarantee the smoothness when a user
change the size of a video element.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::load):
(WebKit::RemoteMediaPlayerProxy::prepareForPlayback):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerFirstVideoFrameAvailable):
(WebKit::RemoteMediaPlayerProxy::setVideoInlineSizeFenced):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerContentBoxRect const): Deleted.

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::prepareForPlayback):
(WebKit::MediaPlayerPrivateRemote::firstVideoFrameAvailable):
(WebKit::MediaPlayerPrivateRemote::platformLayer const):
(WebKit::MediaPlayerPrivateRemote::setVideoInlineSizeFenced):
(WebKit::MediaPlayerPrivateRemote::paint):
(WebKit::MediaPlayerPrivateRemote::paintCurrentFrameInContext):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/VideoLayerRemote.h: Added.
  • WebProcess/GPU/media/cocoa/VideoLayerRemoteCocoa.h: Added.
  • WebProcess/GPU/media/cocoa/VideoLayerRemoteCocoa.mm: Added.

(-[WKVideoLayerRemote init]):
(-[WKVideoLayerRemote dealloc]):
(-[WKVideoLayerRemote mediaPlayerPrivateRemote]):
(-[WKVideoLayerRemote setMediaPlayerPrivateRemote:]):
(-[WKVideoLayerRemote videoSublayer]):
(-[WKVideoLayerRemote setVideoSublayer:]):
(-[WKVideoLayerRemote layoutSublayers]):
(-[WKVideoLayerRemote resolveBounds]):
(WebKit::createVideoLayerRemote):

  • WebProcess/WebPage/ios/WebPageIOS.mm: Fixed a unified build failure.
7:40 PM Changeset in webkit [257126] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[First paint] Let optional style recalcs go through while in visually-non-empty state.
https://bugs.webkit.org/show_bug.cgi?id=208020
<rdar://problem/59636549>

Reviewed by Simon Fraser.

This is the final step to ensure we don't end up delaying the qualifiesAsVisuallyNonEmpty check when
the page happens to not trigger synchronous style recalcs.

Here is the optimized flow:
Optional style realc -> FrameView::styleAndRenderTreeDidChange -> qualifiesAsVisuallyNonEmpty -> Document::shouldScheduleLayout true.

This could be a slight regression in certain cases because now we let the optional style recalcs through and
only delay the redundant layouts (as opposed to delay both).

  • dom/Document.cpp:

(WebCore::Document::scheduleStyleRecalc):
(WebCore::Document::shouldScheduleLayout):

7:35 PM Changeset in webkit [257125] by eric.carlson@apple.com
  • 32 edits
    2 copies in trunk

Support in-band metadata cues when loading media in the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=207904
<rdar://problem/59561647>

Reviewed by Dean Jackson.

Source/WebCore:

No new tests, unskipped existing tests.

  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::selectMediaResource):
(WebCore::HTMLMediaElement::play):
(WebCore::HTMLMediaElement::mediaEngineWasUpdated):
(WebCore::HTMLMediaElement::mediaPlayerEngineUpdated):

  • html/track/InbandDataTextTrack.cpp:

(WebCore::InbandDataTextTrack::addDataCue):
(WebCore::InbandDataTextTrack::findIncompleteCue):
(WebCore::InbandDataTextTrack::updateDataCue):
(WebCore::InbandDataTextTrack::removeDataCue):
(WebCore::InbandDataTextTrack::removeCue):

  • html/track/InbandDataTextTrack.h:
  • html/track/TextTrack.cpp:

(WebCore::TextTrack::addCue):

  • html/track/TextTrack.h:

(WebCore::TextTrack::cuesInternal const):

  • html/track/TextTrackCue.cpp:

(WebCore::TextTrackCue::cueIndex const):

  • platform/SerializedPlatformDataCue.h:

(WebCore::SerializedPlatformDataCue::deserialize const):
(WebCore::SerializedPlatformDataCue::data const):
(WebCore::SerializedPlatformDataCue::isEqual const):
(WebCore::SerializedPlatformDataCue::platformType const):
(WebCore::SerializedPlatformDataCue::encodingRequiresPlatformData const):
(WebCore::SerializedPlatformDataCue::encodableValue const):

  • platform/graphics/MediaPlayer.cpp:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive):

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

(WebCore::SerializedPlatformDataCue::create):
(WebCore::SerializedPlatformDataCueMac::SerializedPlatformDataCueMac):
(WebCore::SerializedPlatformDataCueMac::~SerializedPlatformDataCueMac):
(WebCore::SerializedPlatformDataCueMac::isEqual const):
(WebCore::toSerializedPlatformDataCueMac):
(WebCore::SerializedPlatformDataCueMac::allowedClassesForNativeValues):
(WebCore::SerializedPlatformDataCueMac::encodableValue const):
(WebCore::jsValueWithAVMetadataItemInContext):
(WebCore::NSDictionaryWithAVMetadataItem):
(WebCore::SerializedPlatformDataCueMac::create): Deleted.

Source/WebKit:

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:
  • GPUProcess/media/RemoteTextTrackProxy.cpp:

(WebKit::RemoteTextTrackProxy::addDataCue):
(WebKit::RemoteTextTrackProxy::updateDataCue):
(WebKit::RemoteTextTrackProxy::removeDataCue):

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<WebCore::SerializedPlatformDataCueValue>::encode):
(IPC::ArgumentCoder<WebCore::SerializedPlatformDataCueValue>::decode):

  • Shared/WebCoreArgumentCoders.h:
  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::ArgumentCoder<WebCore::SerializedPlatformDataCueValue>::encodePlatformData):
(IPC::ArgumentCoder<WebCore::SerializedPlatformDataCueValue>::decodePlatformData):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote):
(WebKit::MediaPlayerPrivateRemote::setConfiguration):
(WebKit::MediaPlayerPrivateRemote::addDataCue):
(WebKit::MediaPlayerPrivateRemote::addDataCueWithType):
(WebKit::MediaPlayerPrivateRemote::updateDataCue):
(WebKit::MediaPlayerPrivateRemote::removeDataCue):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in:
  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::createRemoteMediaPlayer):

  • WebProcess/GPU/media/RemoteMediaPlayerManager.h:
  • WebProcess/GPU/media/TextTrackPrivateRemote.cpp:

(WebKit::TextTrackPrivateRemote::addGenericCue):
(WebKit::TextTrackPrivateRemote::updateGenericCue):
(WebKit::TextTrackPrivateRemote::removeGenericCue):
(WebKit::TextTrackPrivateRemote::parseWebVTTFileHeader):
(WebKit::TextTrackPrivateRemote::parseWebVTTCueData):
(WebKit::TextTrackPrivateRemote::parseWebVTTCueDataStruct):
(WebKit::TextTrackPrivateRemote::addDataCue):
(WebKit::TextTrackPrivateRemote::addDataCueWithType):
(WebKit::TextTrackPrivateRemote::updateDataCue):
(WebKit::TextTrackPrivateRemote::removeDataCue):

  • WebProcess/GPU/media/TextTrackPrivateRemote.h:

LayoutTests:

  • gpu-process/TestExpectations:
7:04 PM Changeset in webkit [257124] by Fujii Hironori
  • 3 edits in trunk/Tools

check-webkit-style: Check if *_EXPORT and *_EXPORT_PRIVATE macros are used under corresponding directories
https://bugs.webkit.org/show_bug.cgi?id=207380

Reviewed by Jonathan Bedard.

Added a new rule 'build/export_macro'.

Removed a obsolete rule 'readability/webkit_export' which was used
only by Chromium port (r148185).

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

(_FunctionState.export_macro):
(check_function_definition):
(_unix_path): Added.
(is_generated_file): Use _unix_path.
(check_has_config_header): Ditto.
(CppChecker):

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

(WebKitStyleTest.test_export_macro_check):
(WebKitStyleTest.test_webkit_export_check): Deleted.

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

Fix crash in Page::updateRendering when document has no domWindow
https://bugs.webkit.org/show_bug.cgi?id=207975
<rdar://56999099>

Patch by Sunny He <sunny_he@apple.com> on 2020-02-20
Reviewed by Ryosuke Niwa.

When a subframe is navigated, a new document is created and
the window is transfered asynchronously. It is possible to have
a call to updateRendering in the middle of this process, resulting
in an attempt to update a document with no window. Add a check for
this case and skip such documents.

No test, since this crash relies on sensitive timing that cannot be
consistently replicated in a test case.

  • page/Page.cpp:

(WebCore::Page::updateRendering):

6:47 PM Changeset in webkit [257122] by Alan Coon
  • 2 edits in branches/safari-609.1.20.0-branch/Source/WebKit

Cherry-pick r256933. rdar://problem/59618839

[iOS] Safari sometimes crashes under ViewGestureController::beginSwipeGesture
https://bugs.webkit.org/show_bug.cgi?id=207929
<rdar://problem/59493326>

Reviewed by Tim Horton.

Make ViewGestureController::beginSwipeGesture robust in the case where the target back/forward item no longer
exists. This means that a back/forward target item existed when UIKit called into us in canSwipeInDirection, but
this item was removed by the time beginSwipeGesture is called.

A couple of conditions could make this possible, such as handling incoming synchronous IPC in the UI process
that could change the back/forward list before sending outgoing IPC to the web process; alternately, an SPI
client could be overriding -_webViewDidBeginNavigationGesture: to run some logic that removes the would-be
target back/forward item.

To protect against these scenarios, null-check targetItem before attempting to dereference it; if it is null,
then reset some state that might've been set as a result of beginning the swipe (that is, m_activeGestureType
and m_currentGestureID) and then immediately bail before attempting to install the snapshot view and proceed
with the swipe.

  • UIProcess/ios/ViewGestureControllerIOS.mm: (WebKit::ViewGestureController::beginSwipeGesture):

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

6:33 PM Changeset in webkit [257121] by Russell Epstein
  • 15 edits in branches/safari-609.1.20.111-branch

Apply patch. rdar://problem/59576775

6:33 PM Changeset in webkit [257120] by Russell Epstein
  • 17 edits in branches/safari-609.1.20.111-branch/Source/WebCore

Apply patch. rdar://problem/59576779

6:33 PM Changeset in webkit [257119] by Russell Epstein
  • 2 edits in branches/safari-609.1.20.111-branch/Source/WebKit

Cherry-pick r256932. rdar://problem/59618840

Disable the process cache when process-per-tab is disabled in the debug menu
https://bugs.webkit.org/show_bug.cgi?id=207949
<rdar://problem/57094837>

Reviewed by Geoffrey Garen.

Disable the process cache when process-per-tab is disabled in the debug menu. The process cache is a
process-swap-on-navigation optimization and process-swap-on-navigation is already disabled when
process-per-tab is disabled. The process cache is not useful with such configuration and actually
leads to crashes too.

  • UIProcess/WebProcessCache.cpp: (WebKit::WebProcessCache::updateCapacity):

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

6:32 PM Changeset in webkit [257118] by Russell Epstein
  • 9 edits
    2 adds in branches/safari-609.1.20.111-branch

Cherry-pick r256859. rdar://problem/59612087

[macOS] Web process may crash under ServicesOverlayController::buildPotentialHighlightsIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=207899
<rdar://problem/55658207>

Reviewed by Tim Horton and Simon Fraser.

Source/WebCore:

Mitigates a null pointer crash in ServicesOverlayController::buildPotentialHighlightsIfNeeded(), wherein the
focused frame may not have a FrameView when the ServicesOverlayController's selection invalidation timer fires.
This is possible if, while being focused, the newly focused subframe is unparented and reparented, which causes
it to momentarily have a null view. During this time, if a selection change had occurred earlier in the runloop,
it will schedule the page overlay controller invalidation timer, which will fire and discover that the currently
focused frame no longer has a FrameView.

Test: editing/selection/selection-change-in-disconnected-frame-crash.html

  • page/mac/ServicesOverlayController.mm: (WebCore::ServicesOverlayController::buildSelectionHighlight):

Source/WebKit:

Add another missing null check on iOS, for the case where FrameView is null.

  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::platformEditorState const):

Tools:

Make it possible to run tests on macOS with services controls enabled, via a new TestOptions flag.

  • WebKitTestRunner/TestController.cpp: (WTR::updateTestOptionsFromTestHeader):
  • WebKitTestRunner/TestOptions.h: (WTR::TestOptions::hasSameInitializationOptions const):
  • WebKitTestRunner/cocoa/TestControllerCocoa.mm: (WTR::TestController::platformCreateWebView):

LayoutTests:

Add a new layout test to verify that we don't crash under this circumstance.

  • editing/selection/selection-change-in-disconnected-frame-crash-expected.txt: Added.
  • editing/selection/selection-change-in-disconnected-frame-crash.html: Added.

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

6:32 PM Changeset in webkit [257117] by Russell Epstein
  • 2 edits in branches/safari-609.1.20.111-branch/Source/WebKit

Cherry-pick r256790. rdar://problem/59575905

Data detectors do not trigger on macCatalyst
https://bugs.webkit.org/show_bug.cgi?id=207860
<rdar://problem/59038913>

Reviewed by Tim Horton.

The lookup gesture which run data detection needs touch information to function. Allow touches to be sent to the gesture.

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView gestureRecognizer:shouldReceiveTouch:]):

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

6:16 PM Changeset in webkit [257116] by Alan Coon
  • 1 edit in branches/safari-609.1.20.0-branch/Source/WebKitLegacy/mac/WebView/WebPreferences.mm

Apply fix. rdar://problem/59652987

6:13 PM Changeset in webkit [257115] by Alan Coon
  • 1 edit in branches/safari-609.1.20.111-branch/Source/WebKitLegacy/mac/WebView/WebPreferences.mm

Apply fix. rdar://problem/59652979

6:11 PM Changeset in webkit [257114] by Alan Coon
  • 1 edit in branches/safari-609-branch/Source/WebKitLegacy/mac/WebView/WebPreferences.mm

Apply fix. rdar://problem/59652984

6:07 PM Changeset in webkit [257113] by Alan Coon
  • 8 edits in branches/safari-609.1.20.111-branch/Source

Versioning.

6:06 PM Changeset in webkit [257112] by Alan Coon
  • 13 edits in branches/safari-609.1.20.0-branch

Revert r256995. rdar://problem/59478837

6:06 PM Changeset in webkit [257111] by Alan Coon
  • 4 edits in branches/safari-609.1.20.0-branch/Source/JavaScriptCore

Revert r256996. rdar://problem/59478911

6:06 PM Changeset in webkit [257110] by Alan Coon
  • 17 edits in branches/safari-609.1.20.0-branch/Source/WebCore

Apply patch. rdar://problem/59298138

Apply the second patch.

6:06 PM Changeset in webkit [257109] by Alan Coon
  • 2 edits in branches/safari-609.1.20.0-branch/Source/WebKit

Cherry-pick r257013. rdar://problem/59614284

Crash in WebPageProxy::didStartProvisionalLoadForFrameShared
https://bugs.webkit.org/show_bug.cgi?id=207973

Reviewed by Chris Dumez.

Use RefPtr to store Frame*.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):

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

5:40 PM Changeset in webkit [257108] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r256933. rdar://problem/59618836

[iOS] Safari sometimes crashes under ViewGestureController::beginSwipeGesture
https://bugs.webkit.org/show_bug.cgi?id=207929
<rdar://problem/59493326>

Reviewed by Tim Horton.

Make ViewGestureController::beginSwipeGesture robust in the case where the target back/forward item no longer
exists. This means that a back/forward target item existed when UIKit called into us in canSwipeInDirection, but
this item was removed by the time beginSwipeGesture is called.

A couple of conditions could make this possible, such as handling incoming synchronous IPC in the UI process
that could change the back/forward list before sending outgoing IPC to the web process; alternately, an SPI
client could be overriding -_webViewDidBeginNavigationGesture: to run some logic that removes the would-be
target back/forward item.

To protect against these scenarios, null-check targetItem before attempting to dereference it; if it is null,
then reset some state that might've been set as a result of beginning the swipe (that is, m_activeGestureType
and m_currentGestureID) and then immediately bail before attempting to install the snapshot view and proceed
with the swipe.

  • UIProcess/ios/ViewGestureControllerIOS.mm: (WebKit::ViewGestureController::beginSwipeGesture):

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

5:40 PM Changeset in webkit [257107] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r256932. rdar://problem/59618845

Disable the process cache when process-per-tab is disabled in the debug menu
https://bugs.webkit.org/show_bug.cgi?id=207949
<rdar://problem/57094837>

Reviewed by Geoffrey Garen.

Disable the process cache when process-per-tab is disabled in the debug menu. The process cache is a
process-swap-on-navigation optimization and process-swap-on-navigation is already disabled when
process-per-tab is disabled. The process cache is not useful with such configuration and actually
leads to crashes too.

  • UIProcess/WebProcessCache.cpp: (WebKit::WebProcessCache::updateCapacity):

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

5:25 PM Changeset in webkit [257106] by wilander@apple.com
  • 2 edits in trunk/Source/WebKit

Add fidelity.com to the desktop class quirks list
https://bugs.webkit.org/show_bug.cgi?id=208037
<rdar://problem/59480381>

Reviewed by Brent Fulgham.

No new tests. This patch just adds a domain name to a quirks function.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::desktopClassBrowsingRecommendedForRequest):

fidelity.com and its subdomains now return false.

4:41 PM Changeset in webkit [257105] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.111.1

Tag Safari-609.1.20.111.1.

4:39 PM Changeset in webkit [257104] by Alan Coon
  • 8 edits in branches/safari-609.1.20.111-branch/Source

Versioning.

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

WebIDBServer resume should return early if suspend does not happen
https://bugs.webkit.org/show_bug.cgi?id=208027
<rdar://problem/59617654>

Reviewed by Geoffrey Garen.

We should not try releasing a lock that is not held.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::WebIDBServer::resume):

4:15 PM Changeset in webkit [257102] by Alan Coon
  • 1 copy in branches/safari-609.1.20.111-branch

New branch.

4:12 PM Changeset in webkit [257101] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iOS wk2 ] http/wpt/cache-storage/cache-put-keys.https.any.worker.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208036

Unreviewed test gardening.

Removed the old slow expectation because it no longer appears to be relevant, added pass on failing.

  • platform/ios-simulator-wk2/TestExpectations:
3:45 PM Changeset in webkit [257100] by Kate Cheney
  • 2 edits in trunk/LayoutTests

(r256583) [ iOS ] http/tests/resourceLoadStatistics/prevalent-domains-per-page-database.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=207944
<rdar://problem/59592361>

Unreviewed test gardening.

  • platform/ios/TestExpectations:
3:39 PM Changeset in webkit [257099] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r256805?) [ Mojave wk2 Release ] webrtc/video-replace-muted-track.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=207941

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:25 PM Changeset in webkit [257098] by Alan Coon
  • 3 edits in branches/safari-609-branch/Source/WebCore

Unreviewed re-application of patch. rdar://problem/59611915

3:16 PM Changeset in webkit [257097] by Megan Gardner
  • 3 edits in trunk/Source/WebKitLegacy/mac

Expose caret color for clients
https://bugs.webkit.org/show_bug.cgi?id=207963
<rdar://problem/57383170>

Reviewed by Daniel Bates.

Expose caret color for clients to use.

  • WebView/WebFrame.mm:

(-[WebFrame textInsertionColor]):

  • WebView/WebFramePrivate.h:
3:12 PM Changeset in webkit [257096] by Fujii Hironori
  • 4 edits
    1 add in trunk/Tools

[Win][MiniBrowser] Add prettier toolbar button icons
https://bugs.webkit.org/show_bug.cgi?id=207999

Reviewed by Ross Kirsling.

Use a custom toolbar button icons instead of system stock icons.

Fixed a bug toolbar button dropdown arrows always looked being
hovered. TBSTYLE_FLAT should be given.

Removed the window border line of Progress Indicator.

  • MiniBrowser/win/MainWindow.cpp:

(MainWindow::createToolbar):

  • MiniBrowser/win/MiniBrowserLib.rc:
  • MiniBrowser/win/MiniBrowserLibResource.h:
  • MiniBrowser/win/toolbar.bmp: Added.
3:01 PM Changeset in webkit [257095] by Alan Coon
  • 8 edits in branches/safari-609.1.20.0-branch/Source

Versioning.

2:59 PM Changeset in webkit [257094] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[First paint] FrameView::loadProgressingStatusChanged should check m_firstVisuallyNonEmptyLayoutMilestoneIsPending
https://bugs.webkit.org/show_bug.cgi?id=208008
<rdar://problem/59630957>

Reviewed by Antti Koivisto.

If we haven't had a chance to issue a visually-non-empty milestone, we definitely need to check the content again when the load
is finally completed.

  • page/FrameView.cpp:

(WebCore::FrameView::loadProgressingStatusChanged):

2:54 PM Changeset in webkit [257093] by Alan Coon
  • 5 edits in branches/safari-609-branch/Source

Cherry-pick r256806. rdar://problem/59576023

Add and adopt HAVE(LOOKUP_GESTURE_RECOGNIZER)
https://bugs.webkit.org/show_bug.cgi?id=207876

Reviewed by Wenson Hsieh.

  • wtf/Platform.h:
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView setupInteraction]): (-[WKContentView cleanupInteraction]): (-[WKContentView _removeDefaultGestureRecognizers]): (-[WKContentView _addDefaultGestureRecognizers]): (-[WKContentView gestureRecognizer:shouldReceiveTouch:]): For symmetry's sake, introduce a HAVE for this gesture.

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

2:33 PM Changeset in webkit [257092] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.1.2

Tag Safari-609.1.20.1.2.

2:31 PM Changeset in webkit [257091] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Regression: fast/hidpi/image-* are failing consistently on iOS EWS
https://bugs.webkit.org/show_bug.cgi?id=207038#c8

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
2:31 PM Changeset in webkit [257090] by aboya@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Fix race in TextCombinerGStreamer
https://bugs.webkit.org/show_bug.cgi?id=208001

Reviewed by Xabier Rodriguez-Calvar.

TextCombinerGStreamer uses the CAPS event to determine whether adding
a webvttenc between the text track pad and the funnel element used to
be able to display several subtitles at the same time.

The way this was done previously had a race though: all text track
pads were preemptively linked directly to the funnel, only adding the
webvttenc element later in the middle when receiving the CAPS event.

When two or more text tracks were present, it wasn't infrequent that
one track had its CAPS event processed (causing the webvttenc element
to be added) and propagated (fixating the funnel caps) before another
track attempted caps negotiation. Because the pads were connected to
the funnel preemptively, and because without the webvttenc element the
caps of the text pad don't match the funnel's, this causes a caps
mismatch error, stopping playback completely. The CAPS event is
therefore never sent.

To avoid this race, we must avoid linking elements until we get the
CAPS events, when we actually know where we should link them to,
therefore avoiding early caps negotiation errors.

  • platform/graphics/gstreamer/TextCombinerGStreamer.cpp:

(webkitTextCombinerPadDispose):
(webkitTextCombinerPadEvent):
(webkitTextCombinerRequestNewPad):
(webkitTextCombinerReleasePad):
(webkit_text_combiner_class_init):
(webkitTextCombinerPadFinalize): Deleted.

2:23 PM Changeset in webkit [257089] by ysuzuki@apple.com
  • 5 edits in trunk

NetworkCache should use 4KB threshold for mmap-ed files instead of 16KB
https://bugs.webkit.org/show_bug.cgi?id=207882

Reviewed by Alex Christensen.

Source/WebKit:

We found that a lot of Vectors in Membuster is holding resource content. This is because we have 16KB threshold for mmap-ed files.
If a file is smaller than 16KB, it is copied to Vector instead. But this is costly in terms of memory. If we use mmap-ed files,
it becomes named-pages instead of anonymous-pages. File-backed non-dirty named-pages have a lot of benefit.

  1. The application is offering a hint that pages are file-backed. This means that OS can purge them at any time since the content can be recovered from the disk. This is cheaper than swapping / compressing anonymous pages since just discarding works.
  2. The application is offering a hint that pages have spatial locality. Purging pages in one named-pages region is better compared to purging the same # of anonymous pages randomly. Anonymous pages are split by malloc implementation and access pattern of pages in one VA is random. On the other hand, named-pages are accessed together because it is file, and file typically has sequential locality. And recovery of named pages are also cheap compared to anonymous pages since OS can prefetch pages once access happens because of sequential locality of files. This tendency makes OS like purging named pages instead of anonymous pages. In WebKit use case, this works perfectly. CachedResource typically has decoded content. So typically WebProcess does not access SharedBuffer after the content is decoded.

This patch reduces the threshold from 16KB to page size (4KB in macOS, 16KB in iOS). This is pre-2015 behavior.
This offers 2.56% progression with 98% probability in Membuster.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::maximumInlineBodySize):
(WebKit::NetworkCache::estimateRecordsSize):
(WebKit::NetworkCache::Storage::shouldStoreBodyAsBlob):

LayoutTests:

The test is assuming that 12KB file is served via non-mmap-file.
This assumption is flaky and broken by this change. For now, we pick smaller
file to meet this assumption.

  • http/tests/inspector/network/resource-sizes-disk-cache-expected.txt:
  • http/tests/inspector/network/resource-sizes-disk-cache.html:
2:21 PM Changeset in webkit [257088] by Alan Coon
  • 8 edits in branches/safari-609.1.20.1-branch/Source

Versioning.

2:13 PM Changeset in webkit [257087] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Update run-webkit-tests help description for skip-failing-tests
https://bugs.webkit.org/show_bug.cgi?id=208031

Reviewed by Alexey Proskuryakov.

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:
2:10 PM Changeset in webkit [257086] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac Debug wk2 ] ASSERTION FAILED: m_wasConstructedOnMainThread == isMainThread()
https://bugs.webkit.org/show_bug.cgi?id=207509

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
2:05 PM Changeset in webkit [257085] by jiewen_tan@apple.com
  • 16 edits
    1 delete in trunk

[WebAuthn] Replace DeviceIdentity.framework
https://bugs.webkit.org/show_bug.cgi?id=207985
<rdar://problem/59369223>

Reviewed by Brent Fulgham.

Source/WebKit:

This patch replaces the DeviceIdentity.framework with a new framework that better suits our needs.
The new experimental authentication logic is handled by WebKtAdditions. Please refer to the radar
for detailed information.

Besides the replacement, this patch also:
1) changes how user consent is obtained to avoid multiple prompts for biometric input.
2) removes keychain workarounds for DeviceIdentity given the credential private key is now under our possession.
3) removes everything that is related to DeviceIdentity.

Covered by new tests within existing test files.

  • Configurations/WebKit.xcconfig:
  • Platform/spi/Cocoa/DeviceIdentitySPI.h: Removed.
  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.h:
  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticatorInternal::toNSData):
(WebKit::LocalAuthenticator::makeCredential):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterUserConsented):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
(WebKit::LocalAuthenticator::getAssertion):
(WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented):

  • UIProcess/WebAuthentication/Cocoa/LocalConnection.h:
  • UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:

(WebKit::LocalConnection::createCredentialPrivateKey const):
(WebKit::LocalConnection::getAttestation const):

  • UIProcess/WebAuthentication/Cocoa/LocalService.mm:

(WebKit::LocalService::isAvailable):

  • UIProcess/WebAuthentication/Mock/MockLocalConnection.h:
  • UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:

(WebKit::MockLocalConnection::createCredentialPrivateKey const):
(WebKit::MockLocalConnection::getAttestation const):

  • WebKit.xcodeproj/project.pbxproj:

Source/WTF:

  • wtf/PlatformHave.h:

LayoutTests:

  • http/wpt/webauthn/public-key-credential-create-failure-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-local.https.html:
  • http/wpt/webauthn/public-key-credential-create-success-local.https.html:
2:05 PM WebKitGTK/2.26.x edited by clopez@igalia.com
(diff)
2:05 PM Changeset in webkit [257084] by Russell Epstein
  • 3 edits
    1 add in branches/safari-610.1.4-branch

Cherry-pick r256766. rdar://problem/59618203

[Wasm] REGRESSION(r256665): Wasm->JS call IC needs to save memory size register
https://bugs.webkit.org/show_bug.cgi?id=207849

Reviewed by Mark Lam.

JSTests:

  • wasm/regress/regress-256665.js: Added. (f):

Source/JavaScriptCore:

When generating the call IC, we should select the callee saves using BoundsChecking mode in order
to obey to the calling conventions described in r256665. Currently, we won't restore the memory size
register when calling the Wasm LLInt through the call IC.

  • wasm/js/WebAssemblyFunction.cpp: (JSC::WebAssemblyFunction::calleeSaves const):

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

1:50 PM Changeset in webkit [257083] by commit-queue@webkit.org
  • 5 edits in trunk/Source

AX: Adopt _AXSCopyPathForAccessibilityBundle for WebKit
https://bugs.webkit.org/show_bug.cgi?id=207828

Source/WebKit:

Use the new SPI _AXSCopyPathForAccessibilityBundle.

Patch by Eric Liang <ericliang@apple.com> on 2020-02-20
Reviewed by Darin Adler.

Covered by checkAccessibilityWebProcessLoaderBundleIsLoaded

  • Platform/spi/ios/AccessibilitySupportSPI.h:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::webProcessLoaderAccessibilityBundlePath):

Source/WTF:

Use the _AXSCopyPathForAccessibilityBundle new API. Updated the required SDK version.

Patch by Eric Liang <ericliang@apple.com> on 2020-02-20
Reviewed by Darin Adler.

  • wtf/PlatformHave.h:
1:21 PM Changeset in webkit [257082] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iOS wk2 ] http/tests/workers/service/registration-clear-redundant-worker.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=208030

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
1:14 PM Changeset in webkit [257081] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[First paint] Let's check visually-non-empty state in FrameView::styleAndRenderTreeDidChange
https://bugs.webkit.org/show_bug.cgi?id=208013
<rdar://problem/59633427>

Reviewed by Antti Koivisto.

This patch completely decouples m_contentQualifiesAsVisuallyNonEmpty and m_firstVisuallyNonEmptyLayoutMilestoneIsPending.
Now FrameView can be in the state where m_contentQualifiesAsVisuallyNonEmpty is true while
m_firstVisuallyNonEmptyLayoutMilestoneIsPending is false (which is a perfectly valid state to be in).
This will enable us to delay optional layouts after style recalcs when the content is still visually empty.
(If a FrameView::isVisuallyNonEmpty() caller regresses after this change, it means that the caller is interested in
whether the non-empty milestone has been issued or not and it needs to switch over to a different API.)

  • page/FrameView.cpp:

(WebCore::FrameView::styleAndRenderTreeDidChange):
(WebCore::FrameView::loadProgressingStatusChanged):
(WebCore::FrameView::fireLayoutRelatedMilestonesIfNeeded):

1:12 PM Changeset in webkit [257080] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION (r256784): [ iOS ] fast/images/exif-orientation-webgl-texture.html is failing
https://bugs.webkit.org/show_bug.cgi?id=207943

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
12:56 PM Changeset in webkit [257079] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebKit

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

Membuster ~16% regression (Requested by yusukesuzuki on
#webkit).

Reverted changeset:

"Regression(r246188) WebProcess is launched too eagerly when
[WKWebView _restoreSessionState] is called"
https://bugs.webkit.org/show_bug.cgi?id=207908
https://trac.webkit.org/changeset/257045

12:06 PM Changeset in webkit [257078] by commit-queue@webkit.org
  • 9 edits
    2 deletes in trunk/Source

[Curl] Simplify Cookie class.
https://bugs.webkit.org/show_bug.cgi?id=207930

Patch by Takashi Komori <Takashi.Komori@sony.com> on 2020-02-20
Reviewed by Don Olmstead.

Removed redundant CookieJarCurl.cpp and made NetworkDataTaskCurl access CookieJarDB directly.
CookieJarCurl was used for supporting file based cookie database but now it is no longer used.

No new tests. Covered by existing tests.

Source/WebCore:

  • platform/Curl.cmake:
  • platform/network/NetworkStorageSession.h:
  • platform/network/curl/CookieJarCurl.cpp: Removed.
  • platform/network/curl/CookieJarCurl.h: Removed.
  • platform/network/curl/CurlResourceHandleDelegate.cpp:

(WebCore::handleCookieHeaders):

  • platform/network/curl/NetworkStorageSessionCurl.cpp:

(WebCore::cookiesForSession):
(WebCore::NetworkStorageSession::NetworkStorageSession):
(WebCore::NetworkStorageSession::setCookiesFromDOM const):
(WebCore::NetworkStorageSession::setCookiesFromHTTPResponse const):
(WebCore::NetworkStorageSession::setCookieAcceptPolicy const):
(WebCore::NetworkStorageSession::cookieAcceptPolicy const):
(WebCore::NetworkStorageSession::cookiesForDOM const):
(WebCore::NetworkStorageSession::setCookies):
(WebCore::NetworkStorageSession::setCookie):
(WebCore::NetworkStorageSession::deleteCookie):
(WebCore::NetworkStorageSession::deleteCookie const):
(WebCore::NetworkStorageSession::deleteAllCookies):
(WebCore::NetworkStorageSession::deleteAllCookiesModifiedSince):
(WebCore::NetworkStorageSession::deleteCookiesForHostnames):
(WebCore::NetworkStorageSession::getAllCookies):
(WebCore::NetworkStorageSession::getHostnamesWithCookies):
(WebCore::NetworkStorageSession::getRawCookies const):
(WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const):

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::createCurlRequest):

Source/WebKit:

  • NetworkProcess/Cookies/curl/WebCookieManagerCurl.cpp:

(WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy):

  • NetworkProcess/curl/NetworkDataTaskCurl.cpp:

(WebKit::NetworkDataTaskCurl::appendCookieHeader):
(WebKit::NetworkDataTaskCurl::handleCookieHeaders):

12:06 PM Changeset in webkit [257077] by Chris Dumez
  • 4 edits in trunk

REGRESSION (r255677): Reloading tab with beforeunload prompt closes tab when asking to stay on page
https://bugs.webkit.org/show_bug.cgi?id=208015
<rdar://problem/59591630>

Reviewed by Geoffrey Garen.

Source/WebKit:

Make sure we only restart the tryClose timer after the beforeunload prompt if the timer was actually
active before the prompt (i.e. tryClose was actually called). On Reload, tryClose is not called
but beforeunload prompt may still happen.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ModalAlerts.mm:

(TEST):

11:42 AM Changeset in webkit [257076] by Antti Koivisto
  • 2 edits in trunk/Source/WTF

Unreviewed comment fix.

  • wtf/RunLoop.cpp:

(WTF::RunLoop::suspendFunctionDispatchForCurrentCycle):

Words by Simon.

11:39 AM Changeset in webkit [257075] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk1 Debug ] http/tests/history/back-to-post.php is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208022

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
11:36 AM Changeset in webkit [257074] by youenn@apple.com
  • 6 edits in trunk/Source/WebCore

Move system listeners from PlatformMediaSessionManager to MediaSessionManagerCocoa
https://bugs.webkit.org/show_bug.cgi?id=208011

Reviewed by Eric Carlson.

We will want the listeners to be running in GPUProcess.
The plan is to have a generic PlatformMediaSessionManager that is hooked to GPUProcess
through a counterpart session manager in GPUProcess.
Given listeners are only supported in Cocoa ports, it is fine moving them to MediaSessionManagerCocoa.
This way we can decide to instantiate either a MediaSessionManagerCocoa in WebProcess or in GPUProcess.

For this to work, we have to make addSession virtual to be able to create the listeners lazily when adding a session.

No change of behavior.

  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::PlatformMediaSessionManager):
(WebCore::PlatformMediaSessionManager::addSession):
(WebCore::PlatformMediaSessionManager::hasNoSession const):
(WebCore::PlatformMediaSessionManager::removeSession):
(WebCore::PlatformMediaSessionManager::setCurrentSession):
(WebCore::PlatformMediaSessionManager::processDidReceiveRemoteControlCommand):
(WebCore::PlatformMediaSessionManager::computeSupportsSeeking const):
(WebCore::PlatformMediaSessionManager::processSystemWillSleep):
(WebCore::PlatformMediaSessionManager::processSystemDidWake):

  • platform/audio/PlatformMediaSessionManager.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(MediaSessionManagerCocoa::MediaSessionManagerCocoa):
(MediaSessionManagerCocoa::updateSessionState):
(MediaSessionManagerCocoa::addSession):
(MediaSessionManagerCocoa::removeSession):
(MediaSessionManagerCocoa::setCurrentSession):

  • testing/Internals.cpp:

(WebCore::Internals::postRemoteControlCommand):
(WebCore::Internals::simulateSystemSleep const):
(WebCore::Internals::simulateSystemWake const):

11:33 AM Changeset in webkit [257073] by Justin Fan
  • 4 edits in trunk

GraphicsContextGLOpenGL::transformFeedbackVaryings passes deallocated memory to gl::TransformFeedbackVaryings
https://bugs.webkit.org/show_bug.cgi?id=207526

Reviewed by Brent Fulgham.

Source/WebCore:

Covered by WebGL2 Transform Feedback tests.

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::transformFeedbackVaryings):

LayoutTests:

Unskip known WebGL 2.0.0 conformance suite progressions.

11:22 AM Changeset in webkit [257072] by Antti Koivisto
  • 7 edits in trunk/Source

[macOS] Disable RunLoop function dispatch when there is a pending rendering update
https://bugs.webkit.org/show_bug.cgi?id=207931

Reviewed by Geoffrey Garen.

Source/WebCore:

Functions dispatched via RunLoop::dispatch() are executed before the rendering update runloop observer.
This can significantly delay rendering updates as asyncronous IPC is handled via this mechanism.
Most importantly network resources are dispatched to the main thread this way, sometimes triggering expensive
synchronous parsing and script execution.

This patch adds a mechanims for disabling function dispatch temporarily while there is a pending rendering update.

  • dom/WindowEventLoop.cpp:

(WebCore::WindowEventLoop::breakToAllowRenderingUpdate):

Source/WebKit:

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::scheduleRenderingUpdateRunLoopObserver):

Don't do anything if the runloop is already scheduled. This frequently happens
from inside updateRendering.

Source/WTF:

  • wtf/RunLoop.cpp:

(WTF::RunLoop::performWork):

Simplify the code by factoring it into a single loop.
Bail out if the runloop is initially suspended or if it becomes suspended by function execution.
Clear the suspended state so it last a single cycle only.

(WTF::RunLoop::suspendFunctionDispatchForCurrentCycle):

Set the suspended state and wake up the runloop to guarantee the state is cleared.

  • wtf/RunLoop.h:
11:17 AM Changeset in webkit [257071] by youenn@apple.com
  • 4 edits in trunk/Source/WebKit

[iOS] GPUProcess needs to provide the parent PID before starting camera capture
https://bugs.webkit.org/show_bug.cgi?id=208009

Reviewed by Eric Carlson.

Like we do when capturing in WebProcess, we need to provide the parent PID before starting camera capture.
Implement this in GPU process whenever creating a camera source.

  • GPUProcess/GPUConnectionToWebProcess.cpp:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:

(WebKit::UserMediaCaptureManagerProxy::ConnectionProxy::willStartCameraCapture):

11:05 AM Changeset in webkit [257070] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iOS wk2 Release ] perf/clone-with-focus.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208018

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
10:39 AM Changeset in webkit [257069] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 Debug ] http/tests/websocket/tests/hybi/no-subprotocol.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=208014

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
10:38 AM Changeset in webkit [257068] by timothy_horton@apple.com
  • 2 edits in branches/safari-609.1.20.1-branch/Source/WebCore

WebCore fails to build: use of undeclared identifier 'CGContextDrawPDFPageWithAnnotations'
<rdar://problem/59623059>

  • platform/graphics/cg/PDFDocumentImage.cpp:
9:40 AM Changeset in webkit [257067] by clopez@igalia.com
  • 2 edits in trunk

[GTK][WPE] Not set ccache compiler prefix if ccache its already the compiler binary in path.
https://bugs.webkit.org/show_bug.cgi?id=208007

Reviewed by Tim Horton.

Detect if the compiler binary already points to the ccache binary and in that case don't
set the ccache compiler prefix. Also export CCACHE_SLOPPINESS=time_macros if its not
defined to other thing on the environment and add a some logging of related messages.

  • Source/cmake/WebKitCCache.cmake:
9:35 AM WPE edited by clopez@igalia.com
(diff)
9:34 AM Changeset in webkit [257066] by timothy_horton@apple.com
  • 4 edits
    1 move in trunk

WKWebView with non-zero origin has the wrong top content inset with NSWindowStyleMaskFullSizeContentView
https://bugs.webkit.org/show_bug.cgi?id=207998
<rdar://problem/40942425>

Reviewed by Sam Weinig.

Source/WebKit:

New API tests: TopContentInset.{AutomaticAdjustment, AutomaticAdjustmentDisabled, AutomaticAdjustmentDoesNotAffectInsetViews}

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::updateContentInsetsIfAutomatic):
Previously, a WKWebView with frame.origin anywhere other than {0, 0}
would end up with the same top content inset as if it overlapped the
titlebar.

It's not clear what the original code was going for; we can determine
the overlapping portion of the contentLayoutRect by simply converting
it from window coordinates to WKWebView coordinates and looking at the
origin (ensuring we don't let it go negative).

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/TopContentInset.mm: Renamed from Tools/TestWebKitAPI/Tests/WebKitCocoa/FullscreenTopContentInset.mm.

(-[FullscreenChangeMessageHandler userContentController:didReceiveScriptMessage:]):
(TestWebKitAPI::TEST):
Add some tests for top content insets.

9:20 AM Changeset in webkit [257065] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iOS wk2 ] crypto/subtle/rsa-indexeddb.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=208010

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
8:44 AM Changeset in webkit [257064] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC] Sometimes subframes don't even have document elements.
https://bugs.webkit.org/show_bug.cgi?id=208006
<rdar://problem/59629147>

Source/WebCore:

Reviewed by Antti Koivisto.

Test: fast/layoutformattingcontext/subframe-with-display-none-html.html

Do not try to layout a formatting context when it has no content at all.

  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::layoutFormattingContextSubtree):

LayoutTests:

Reviewed by Antti Koivisto.

  • fast/layoutformattingcontext/subframe-with-display-none-html-expected.html: Added.
  • fast/layoutformattingcontext/subframe-with-display-none-html.html: Added.
8:37 AM Changeset in webkit [257063] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r257025) [ Mac wk2 ] http/tests/inspector/network/resource-sizes-disk-cache.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=208004

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
8:22 AM Changeset in webkit [257062] by ap@apple.com
  • 2 edits in trunk/Source/WebCore/PAL

NSUserDefaultsSPI.h is copied to an incorrect path
https://bugs.webkit.org/show_bug.cgi?id=207977
rdar://problem/59609174

Reviewed by Per Arne Vollan.

  • PAL.xcodeproj/project.pbxproj: Change the header from Private to Project - these

headers are copied into the right location by a script phase, so Xcode shouldn't
do it itself.

8:14 AM Changeset in webkit [257061] by Jason_Lawrence
  • 2 edits in trunk/Source/WebKit

Unreviewed, rolling out r257025.

This commit broke a test on Mac wk2.

Reverted changeset:

"NetworkCache should use 4KB threshold for mmap-ed files
instead of 16KB"
https://bugs.webkit.org/show_bug.cgi?id=207882
https://trac.webkit.org/changeset/257025

7:49 AM Changeset in webkit [257060] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] webgpu/whlsl/zero-initialize-values.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208005

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
7:36 AM Changeset in webkit [257059] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][BFC] Fix geometryForBox::isOkToAccessDisplayBox for EscapeReason::FindFixedHeightAncestorQuirk
https://bugs.webkit.org/show_bug.cgi?id=207983
<rdar://problem/59615246>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/height-percentage-quirk-to-icb.html

The height percentage quirk walks the ancestor chain and looks for fixed height block level boxes.
It can potentially walk all the way up to the ICB. This patch gives access to the ICB's geometry when
FormattingContext::geometryForBox() has EscapeReason::FindFixedHeightAncestorQuirk.

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::geometryForBox const):

LayoutTests:

  • fast/layoutformattingcontext/height-percentage-quirk-to-icb-expected.html: Added.
  • fast/layoutformattingcontext/height-percentage-quirk-to-icb.html: Added.
7:27 AM Changeset in webkit [257058] by Jonathan Bedard
  • 2 edits in trunk/Tools

results.webkit.org: Correctly report JSC tests for windows (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=207910

Unreviewed infrastructure fix.

  • Scripts/run-javascriptcore-tests:

(configurationForUpload): Use the major version instead of the sub-minor version
for version name.

7:24 AM Changeset in webkit [257057] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r257025?) [ Mac wk2 ] http/tests/inspector/network/resource-sizes-disk-cache.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=208004

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
7:19 AM Changeset in webkit [257056] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][Out-of-flow] FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned should ignore inline boxes
https://bugs.webkit.org/show_bug.cgi?id=207994
<rdar://problem/59618280>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/absolute-positioned-box-with-inline-sibling.html

https://www.w3.org/TR/CSS22/visudet.html#abs-non-replaced-height

"For the purposes of this section and the next, the term "static position" (of an element) refers, roughly,
to the position an element would have had in the normal flow."

This does not seem to be well-defined for sibling inline boxes. Let's just stick with block level boxes for now.

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned const):

LayoutTests:

  • fast/layoutformattingcontext/absolute-positioned-box-with-inline-sibling-expected.html: Added.
  • fast/layoutformattingcontext/absolute-positioned-box-with-inline-sibling.html: Added.
7:00 AM Changeset in webkit [257055] by don.olmstead@sony.com
  • 9 edits in trunk

[CMake] Add WebP targets
https://bugs.webkit.org/show_bug.cgi?id=207982

Reviewed by Adrian Perez de Castro.

.:

Modernize the FindWebP.cmake module so it creates targets that can be
referenced rather than using WEBP_LIBRARIES and WEBP_INCLUDE_DIRS.
Also making demux a component within the module, and allowing alternate names
for the library to be set by the platform.

  • Source/cmake/FindWebP.cmake:
  • Source/cmake/OptionsFTW.cmake:
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsPlayStation.cmake:
  • Source/cmake/OptionsWPE.cmake:
  • Source/cmake/OptionsWinCairo.cmake:

Source/WebCore:

Use the WebP targets.

  • platform/ImageDecoders.cmake:
6:46 AM Changeset in webkit [257054] by commit-queue@webkit.org
  • 6 edits in trunk

Lazy load images using base url at parse time
https://bugs.webkit.org/show_bug.cgi?id=207902

Patch by Rob Buis <rbuis@igalia.com> on 2020-02-20
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update improved test results.

  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied-2-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied-expected.txt:

Source/WebCore:

The spec says to use the base url at parse time for request
url, ignoring changes to base url after that [1]. To fix this
add a new state LoadImmediately to LazyImageLoadState where
the parse time url from the initial request is reused.

[1] https://html.spec.whatwg.org/multipage/images.html#update-the-image-data

Tests: imported/web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied-2.html

imported/web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied.html

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::updateFromElement):
(WebCore::ImageLoader::loadDeferredImage):

  • loader/ImageLoader.h:
6:28 AM Changeset in webkit [257053] by don.olmstead@sony.com
  • 14 edits in trunk

[CMake] Add WPE::libwpe target
https://bugs.webkit.org/show_bug.cgi?id=207970

Reviewed by Adrian Perez de Castro.

.:

Redo the WPE find module to export a target.

  • Source/cmake/FindWPE.cmake:

Source/WebCore:

Use the WPE::libwpe target.

  • PlatformGTK.cmake:
  • PlatformPlayStation.cmake:
  • PlatformWPE.cmake:

Source/WebKit:

Use the WPE::libwpe target.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:

Tools:

Use the WPE::libwpe target.

  • MiniBrowser/wpe/CMakeLists.txt:
  • TestWebKitAPI/PlatformWPE.cmake:
  • TestWebKitAPI/glib/PlatformWPE.cmake:
  • wpe/backends/CMakeLists.txt:
6:06 AM Changeset in webkit [257052] by Andres Gonzalez
  • 2 edits in trunk/Source/WebCore

[WebAccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange] must run on the main thread.
https://bugs.webkit.org/show_bug.cgi?id=207958

Reviewed by Darin Adler.

Covered by existing tests.

[WebAccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange]
calls into TextIterator and Node, thus it must be dispatched to the
main thread.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:spellCheck:]):

5:06 AM Changeset in webkit [257051] by clopez@igalia.com
  • 2 edits in trunk/LayoutTests

[GTK] Gardening of Web inspector tests.

Unreviewed gardening.

Mark all Web test inspector tests as slow Debug and some timing out.

  • platform/gtk/TestExpectations:
2:40 AM Changeset in webkit [257050] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

[WPE] Use custom colors for text and listbox selection
https://bugs.webkit.org/show_bug.cgi?id=207836

Reviewed by Adrian Perez de Castro.

  • platform/wpe/RenderThemeWPE.cpp:

(WebCore::RenderThemeWPE::platformActiveSelectionBackgroundColor const):
(WebCore::RenderThemeWPE::platformInactiveSelectionBackgroundColor const):
(WebCore::RenderThemeWPE::platformActiveSelectionForegroundColor const):
(WebCore::RenderThemeWPE::platformInactiveSelectionForegroundColor const):
(WebCore::RenderThemeWPE::platformActiveListBoxSelectionBackgroundColor const):
(WebCore::RenderThemeWPE::platformInactiveListBoxSelectionBackgroundColor const):
(WebCore::RenderThemeWPE::platformActiveListBoxSelectionForegroundColor const):
(WebCore::RenderThemeWPE::platformInactiveListBoxSelectionForegroundColor const):
(WebCore::RenderThemeWPE::paintTextField):

  • platform/wpe/RenderThemeWPE.h:
2:32 AM Changeset in webkit [257049] by Carlos Garcia Campos
  • 7 edits in trunk/Source/WebCore

[WPE] Use the theme to render the focus ring
https://bugs.webkit.org/show_bug.cgi?id=207758

Reviewed by Adrian Perez de Castro.

This makes form controls consistent with elements having an auto outline.

  • PlatformWPE.cmake: Add platform/wpe to include dirs.
  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContext::drawFocusRing): Use ThemeWPE::focusColor.

  • platform/wpe/RenderThemeWPE.cpp:

(WebCore::RenderThemeWPE::platformFocusRingColor const): Implement it to return the focus color used by ThemeWPE.

  • platform/wpe/RenderThemeWPE.h:
  • platform/wpe/ThemeWPE.cpp:

(WebCore::ThemeWPE::focusColor): Return the focus color.
(WebCore::ThemeWPE::paintFocus): Add new methods receiving a path or list of rectangles and a color.

  • platform/wpe/ThemeWPE.h:
2:03 AM Changeset in webkit [257048] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

[WPE] Add support for rendering sliders for range elements
https://bugs.webkit.org/show_bug.cgi?id=207694

Reviewed by Adrian Perez de Castro.

  • platform/wpe/RenderThemeWPE.cpp:

(WebCore::RenderThemeWPE::supportsFocusRing const):
(WebCore::RenderThemeWPE::paintSliderTrack):
(WebCore::RenderThemeWPE::adjustSliderThumbSize const):
(WebCore::RenderThemeWPE::paintSliderThumb):

  • platform/wpe/RenderThemeWPE.h:
1:36 AM Changeset in webkit [257047] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Gardening, mark several WPT's CSS animation tests as flaky
https://bugs.webkit.org/show_bug.cgi?id=207988

Unreviewed gardening.

  • platform/gtk/TestExpectations:

Feb 19, 2020:

10:41 PM Changeset in webkit [257046] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

ASSERTION FAILED: roundedIntPoint(LayoutPoint(rendererMappedResult)) == result in WebCore::RenderGeometryMap::mapToContainer
https://bugs.webkit.org/show_bug.cgi?id=151030
<rdar://problem/27711142>

Patch by Jack Lee <Jack Lee> on 2020-02-19
Reviewed by Darin Adler.

Track if m_accumulatedOffset ever becomes saturated, and if so, do not assert on unexpected rendererMappedResult.

Source/WebCore:

Test: fast/layers/geometry-map-saturated-offset-assert.html

  • platform/graphics/LayoutSize.h:

(WebCore::LayoutSize::mightBeSaturated const):

  • rendering/RenderGeometryMap.cpp:

(WebCore::RenderGeometryMap::mapToContainer const):
(WebCore::RenderGeometryMap::stepInserted):
(WebCore::RenderGeometryMap::stepRemoved):

  • rendering/RenderGeometryMap.h:

LayoutTests:

  • fast/layers/geometry-map-saturated-offset-assert-expected.txt: Added.
  • fast/layers/geometry-map-saturated-offset-assert.html: Added.
10:25 PM Changeset in webkit [257045] by Chris Dumez
  • 6 edits in trunk/Source/WebKit

Regression(r246188) WebProcess is launched too eagerly when [WKWebView _restoreSessionState] is called
https://bugs.webkit.org/show_bug.cgi?id=207908

Reviewed by Darin Adler.

Since r246188, the WebProcess is launched eagerly when [WKWebView _restoreSessionState] is called. This is bad
for performance because we are unable to leverage the process cache at this point (since we don't know which
domain will be loaded).

This patch thus reverts r246188 and fixes what r246188 was trying to address in a different way. If the process
was not launched yet when restoreSessionState() is called, the session state properly gets sent to the WebProcess
after launch, via the WebPageCreationParameters. What was missing at that point was that the session state was
restore by an API Request. To fix this, we now pass an extra itemStatesWereRestoredByAPIRequest flag in
WebPageCreationParameters.

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

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

(WebKit::WebPageProxy::restoreFromSessionState):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_overriddenMediaType):

10:24 PM Changeset in webkit [257044] by commit-queue@webkit.org
  • 4 edits
    1 move in trunk/Source

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

Doesn't fix the issue (Requested by ap on #webkit).

Reverted changeset:

"[iOS] Rename NSUserDefaultsSPI.h"
https://bugs.webkit.org/show_bug.cgi?id=207977
https://trac.webkit.org/changeset/257029

10:19 PM Changeset in webkit [257043] by Jon Davis
  • 2 edits in trunk/Source/WebInspectorUI

Fixed object trees using the wrong theme of type icon
https://bugs.webkit.org/show_bug.cgi?id=207980

Reviewed by Darin Adler.

  • UserInterface/Views/ObjectTreePropertyTreeElement.css:

(.object-tree-property.boolean > .icon):
(.object-tree-property.function > .icon):
(.object-tree-property.number > .icon):
(.object-tree-property.bigint > .icon):
(.object-tree-property.object > .icon):
(.object-tree-property.object.null > .icon):
(.object-tree-property.object.node > .icon):
(.object-tree-property.regex > .icon):
(.object-tree-property.string > .icon):
(.object-tree-property.symbol > .icon):
(.object-tree-property.accessor > .icon,):
(.object-tree-property.had-error > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.boolean > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.function > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.number > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.bigint > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.object > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.object.null > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.object.node > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.regex > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.string > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.symbol > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.accessor > .icon,):
(@media (prefers-color-scheme: dark) .object-tree-property.had-error > .icon):

10:11 PM Changeset in webkit [257042] by BJ Burg
  • 2 edits in trunk/Source/WebKit

Web Automation: Automation.setWindowFrameOfBrowsingContext should accept negative x and y-origin values
https://bugs.webkit.org/show_bug.cgi?id=207974
<rdar://problem/59606705>

Reviewed by Darin Adler.

According to the spec, negative origin values are supported:

https://w3c.github.io/webdriver/#set-window-rect

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::setWindowFrameOfBrowsingContext):

10:08 PM Changeset in webkit [257041] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Resources larger than 10MB are not stored in the disk cache
https://bugs.webkit.org/show_bug.cgi?id=207967
<rdar://problem/59572084>

Reviewed by Darin Adler.

This patch makes two policy changes to our disk cache:

  1. The capacity of the disk cache is now doubled. Based on available disk space, it could previously use up to 500MB of disk space. The limit is now 1GB.
  2. The per cache-entry limit is raised from 10MB to 1/8 of the disk cache capacity (so up to 128MB based on new maximum capacity).
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::didReceiveBuffer):

  • Shared/CacheModel.cpp:

(WebKit::calculateURLCacheSizes):

9:36 PM Changeset in webkit [257040] by mjs@apple.com
  • 2 edits in trunk/Source/WebKit

Use consistent capitalization and spacing in process-related feature names
https://bugs.webkit.org/show_bug.cgi?id=207989

Reviewed by Zalan Bujtas.

No new tests, we don't test feature flag names.

  • Shared/WebPreferences.yaml: Adjust some feature names and descriptions.
7:51 PM Changeset in webkit [257039] by youenn@apple.com
  • 32 edits in trunk

Add support for AudioSession handling in GPUProcess for capture
https://bugs.webkit.org/show_bug.cgi?id=207950

Reviewed by Eric Carlson.

Source/WebCore:

Add a dedicated interface for handling audio capture in session manager.
This was previoulsy PlatformMediaSessionClient, but this one is more related to audio/video rendering.
Use this new interface for MediaStreamTrack capture sources.
The session manager now owns a WeakHashSet of capture sources to compute the correct AudioSession category.

Modernize the code, for instance use an enum class for MediaType to remove some debug asserts.
Add a new PlatformMediaSessionManager::create that is used for sharedManager.

Remove the direct use of PlatformMediaSessionManager::sharedManager from classes that can be used outside of WebProcess.
This includes BaseAudioSharedUnit, for which we add a audioUnitWillStart callback
so that we compute the right AudioSession category before starting the capture.

Covered by existing tests and debug assertions to check for AudioSession category computation.

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::~MediaStreamTrack):
(WebCore::MediaStreamTrack::configureTrackRendering):
(WebCore::MediaStreamTrack::isCapturingAudio const):

  • Modules/mediastream/MediaStreamTrack.h:
  • Modules/webaudio/AudioContext.h:
  • html/HTMLAudioElement.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::shouldDisableSleep const):
(WebCore::HTMLMediaElement::mediaType const):
(WebCore::HTMLMediaElement::presentationType const):

  • html/HTMLVideoElement.h:
  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::canShowControlsManager const):

  • html/MediaElementSession.h:
  • platform/audio/PlatformMediaSession.cpp:

(WebCore::PlatformMediaSession::PlatformMediaSession):
(WebCore::PlatformMediaSession::activeAudioSessionRequired const):

  • platform/audio/PlatformMediaSession.h:
  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::sharedPlatformMediaSessionManager):
(WebCore::PlatformMediaSessionManager::sharedManager):
(WebCore::PlatformMediaSessionManager::sharedManagerIfExists):
(WebCore::PlatformMediaSessionManager::create):
(WebCore::indexFromMediaType):
(WebCore::PlatformMediaSessionManager::resetRestrictions):
(WebCore::PlatformMediaSessionManager::has const):
(WebCore::PlatformMediaSessionManager::count const):
(WebCore::PlatformMediaSessionManager::countActiveAudioCaptureSources):
(WebCore::PlatformMediaSessionManager::addRestriction):
(WebCore::PlatformMediaSessionManager::removeRestriction):
(WebCore::PlatformMediaSessionManager::restrictions):
(WebCore::PlatformMediaSessionManager::sessionWillBeginPlayback):
(WebCore::PlatformMediaSessionManager::applicationWillBecomeInactive):
(WebCore::PlatformMediaSessionManager::applicationDidBecomeActive):
(WebCore::PlatformMediaSessionManager::applicationDidEnterBackground):
(WebCore::PlatformMediaSessionManager::applicationWillEnterForeground):
(WebCore::PlatformMediaSessionManager::sessionIsPlayingToWirelessPlaybackTargetChanged):
(WebCore::PlatformMediaSessionManager::addAudioCaptureSource):
(WebCore::PlatformMediaSessionManager::removeAudioCaptureSource):

  • platform/audio/PlatformMediaSessionManager.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(PlatformMediaSessionManager::create):
(MediaSessionManagerCocoa::updateSessionState):

  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::PlatformMediaSessionManager::create):
(WebCore::MediaSessionManageriOS::resetRestrictions):

  • platform/mediastream/MediaStreamTrackPrivate.cpp:

(WebCore::MediaStreamTrackPrivate::audioUnitWillStart):

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

(WebCore::BaseAudioSharedUnit::startUnit):

  • platform/mediastream/mac/BaseAudioSharedUnit.h:
  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioCaptureSource::audioUnitWillStart):

  • platform/mediastream/mac/CoreAudioCaptureSource.h:
  • testing/Internals.cpp:

(WebCore::mediaTypeFromString):
(WebCore::Internals::setMediaSessionRestrictions):
(WebCore::Internals::mediaSessionRestrictions const):

Source/WebKit:

Create a session manager for the GPUConnectionToWebProcess.
Pass it to any audio capture source proxy.
For UIProcesss audio capture, we still use the shared manager.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::sessionManager):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::setMockCaptureDevicesEnabled):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::SourceProxy::SourceProxy):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::~SourceProxy):
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
(WebKit::UserMediaCaptureManagerProxy::clone):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
  • UIProcess/WebProcessProxy.cpp:

LayoutTests:

  • platform/ios/TestExpectations:
7:48 PM Changeset in webkit [257038] by Alan Coon
  • 15 edits in branches/safari-609-branch

Apply patch. rdar://problem/59611912

7:48 PM Changeset in webkit [257037] by Alan Coon
  • 17 edits in branches/safari-609-branch/Source/WebCore

Apply patch. rdar://problem/59611915

7:36 PM Changeset in webkit [257036] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Fix crash when Node::normalize() triggers mutation event that modifies child order
https://bugs.webkit.org/show_bug.cgi?id=207875
<rdar://58976682>

Patch by Sunny He <sunny_he@apple.com> on 2020-02-19
Reviewed by Ryosuke Niwa.

When Node::normalize() merges two text nodes, it calls appendData
before textNodesMerged. If there is a mutator event registered, it
will fire on the call to appendData, potentially changing the child
order and causing a nullptr crash due to incorrect sibling pointers.
Reverse the order of these calls to ensure order gets correctly
updated.

Source/WebCore:

Test: fast/dom/Node/normalize-mutation-event.html

  • dom/Node.cpp:

(WebCore::Node::normalize):

LayoutTests:

  • fast/dom/Node/normalize-mutation-event-expected.txt: Added.
  • fast/dom/Node/normalize-mutation-event.html: Added.
7:25 PM Changeset in webkit [257035] by Diego Pino Garcia
  • 73 edits in trunk/LayoutTests

[GTK][WPE] Gardening, update baselines of websocket tests
https://bugs.webkit.org/show_bug.cgi?id=207947

Unreviewed gardening.

  • platform/gtk/http/tests/websocket/tests/hybi/broken-utf8-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/close-code-and-reason-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/compressed-control-frame-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/deflate-frame-invalid-parameter-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/error-event-ready-state-non-existent-url-with-server-responding-404-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/fragmented-control-frame-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-error-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-extensions-header-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-invalid-http-version-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-maxlength-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-mismatch-protocol-header-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-more-accept-header-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-more-extensions-header-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-no-accept-header-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-no-connection-header-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-no-upgrade-header-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-accept-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-extensions-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-protocol-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-status-line-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-null-char-in-status-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-prepended-null-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-fail-by-wrong-accept-header-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-invalid-parameter-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/interleaved-fragments-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/invalid-continuation-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/invalid-encode-length-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/invalid-masked-frames-from-server-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/long-control-frame-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/long-invalid-header-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/network-process-crash-error-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/reserved-bits-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/reserved-opcodes-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/too-long-payload-expected.txt:
  • platform/gtk/http/tests/websocket/tests/hybi/workers/close-code-and-reason-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/broken-utf8-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/close-code-and-reason-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/compressed-control-frame-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/deflate-frame-invalid-parameter-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/error-event-ready-state-non-existent-url-with-server-responding-404-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/fragmented-control-frame-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-error-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-extensions-header-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-invalid-http-version-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-maxlength-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-mismatch-protocol-header-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-more-accept-header-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-more-extensions-header-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-no-accept-header-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-no-connection-header-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-no-upgrade-header-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-accept-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-extensions-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-protocol-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-status-line-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-null-char-in-status-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-prepended-null-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-fail-by-wrong-accept-header-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/imported/blink/permessage-deflate-invalid-parameter-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/interleaved-fragments-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/invalid-continuation-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/invalid-encode-length-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/invalid-masked-frames-from-server-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/long-control-frame-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/long-invalid-header-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/network-process-crash-error-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/reserved-bits-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/reserved-opcodes-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/too-long-payload-expected.txt:
  • platform/wpe/http/tests/websocket/tests/hybi/workers/close-code-and-reason-expected.txt:
7:01 PM Changeset in webkit [257034] by Ross Kirsling
  • 4 edits
    1 add in trunk

Computed Properties with increment sometimes produces incorrect results
https://bugs.webkit.org/show_bug.cgi?id=170934

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/computed-property-increment.js: Added.
  • test262/expectations.yaml: Mark two test cases as passing.

Source/JavaScriptCore:

When the key and value of a computed property each have side effects, the eval order should be key-before-value.
Not only have we had this backwards, we've also been giving them both the same target register.

  • bytecompiler/NodesCodegen.cpp:

(JSC::PropertyListNode::emitPutConstantProperty):

7:00 PM Changeset in webkit [257033] by Alan Coon
  • 4 edits in branches/safari-609-branch/Source/JavaScriptCore

Apply patch. rdar://problem/59611919

6:59 PM Changeset in webkit [257032] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r257013. rdar://problem/59614282

Crash in WebPageProxy::didStartProvisionalLoadForFrameShared
https://bugs.webkit.org/show_bug.cgi?id=207973

Reviewed by Chris Dumez.

Use RefPtr to store Frame*.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):

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

6:59 PM Changeset in webkit [257031] by Alan Coon
  • 9 edits
    2 adds in branches/safari-609-branch

Cherry-pick r256859. rdar://problem/59576018

[macOS] Web process may crash under ServicesOverlayController::buildPotentialHighlightsIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=207899
<rdar://problem/55658207>

Reviewed by Tim Horton and Simon Fraser.

Source/WebCore:

Mitigates a null pointer crash in ServicesOverlayController::buildPotentialHighlightsIfNeeded(), wherein the
focused frame may not have a FrameView when the ServicesOverlayController's selection invalidation timer fires.
This is possible if, while being focused, the newly focused subframe is unparented and reparented, which causes
it to momentarily have a null view. During this time, if a selection change had occurred earlier in the runloop,
it will schedule the page overlay controller invalidation timer, which will fire and discover that the currently
focused frame no longer has a FrameView.

Test: editing/selection/selection-change-in-disconnected-frame-crash.html

  • page/mac/ServicesOverlayController.mm: (WebCore::ServicesOverlayController::buildSelectionHighlight):

Source/WebKit:

Add another missing null check on iOS, for the case where FrameView is null.

  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::platformEditorState const):

Tools:

Make it possible to run tests on macOS with services controls enabled, via a new TestOptions flag.

  • WebKitTestRunner/TestController.cpp: (WTR::updateTestOptionsFromTestHeader):
  • WebKitTestRunner/TestOptions.h: (WTR::TestOptions::hasSameInitializationOptions const):
  • WebKitTestRunner/cocoa/TestControllerCocoa.mm: (WTR::TestController::platformCreateWebView):

LayoutTests:

Add a new layout test to verify that we don't crash under this circumstance.

  • editing/selection/selection-change-in-disconnected-frame-crash-expected.txt: Added.
  • editing/selection/selection-change-in-disconnected-frame-crash.html: Added.

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

6:59 PM Changeset in webkit [257030] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r256790. rdar://problem/59576023

Data detectors do not trigger on macCatalyst
https://bugs.webkit.org/show_bug.cgi?id=207860
<rdar://problem/59038913>

Reviewed by Tim Horton.

The lookup gesture which run data detection needs touch information to function. Allow touches to be sent to the gesture.

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView gestureRecognizer:shouldReceiveTouch:]):

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

6:43 PM Changeset in webkit [257029] by pvollan@apple.com
  • 4 edits
    1 move in trunk/Source

[iOS] Rename NSUserDefaultsSPI.h
https://bugs.webkit.org/show_bug.cgi?id=207977
<rdar://problem/59609174>
Source/WebCore/PAL:

Reviewed by Brent Fulgham.

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/NSUserDefaultsSPI.h: Removed.
  • pal/spi/cocoa/UserDefaultsSPI.h: Copied from Source/WebCore/PAL/pal/spi/cocoa/NSUserDefaultsSPI.h.

Source/WebKit:

Reviewed by Brent Fulgham.

No new tests, no behavior change.

  • UIProcess/Cocoa/PreferenceObserver.h:
6:33 PM Changeset in webkit [257028] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.0.2

Tag Safari-609.1.20.0.2.

6:31 PM Changeset in webkit [257027] by Alan Coon
  • 1 edit in branches/safari-609.1.20.0-branch/Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp

Unreviewed build fix.

6:29 PM Changeset in webkit [257026] by Alan Coon
  • 8 edits in branches/safari-609.1.20.0-branch/Source

Versioning.

6:12 PM Changeset in webkit [257025] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WebKit

NetworkCache should use 4KB threshold for mmap-ed files instead of 16KB
https://bugs.webkit.org/show_bug.cgi?id=207882

Reviewed by Alex Christensen.

We found that a lot of Vectors in Membuster is holding resource content. This is because we have 16KB threshold for mmap-ed files.
If a file is smaller than 16KB, it is copied to Vector instead. But this is costly in terms of memory. If we use mmap-ed files,
it becomes named-pages instead of anonymous-pages. File-backed non-dirty named-pages have a lot of benefit.

  1. The application is offering a hint that pages are file-backed. This means that OS can purge them at any time since the content can be recovered from the disk. This is cheaper than swapping / compressing anonymous pages since just discarding works.
  2. The application is offering a hint that pages have spatial locality. Purging pages in one named-pages region is better compared to purging the same # of anonymous pages randomly. Anonymous pages are split by malloc implementation and access pattern of pages in one VA is random. On the other hand, named-pages are accessed together because it is file, and file typically has sequential locality. And recovery of named pages are also cheap compared to anonymous pages since OS can prefetch pages once access happens because of sequential locality of files. This tendency makes OS like purging named pages instead of anonymous pages. In WebKit use case, this works perfectly. CachedResource typically has decoded content. So typically WebProcess does not access SharedBuffer after the content is decoded.

This patch reduces the threshold from 16KB to page size (4KB in macOS, 16KB in iOS). This is pre-2015 behavior.
This offers 2.56% progression with 98% probability in Membuster.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::maximumInlineBodySize):
(WebKit::NetworkCache::estimateRecordsSize):
(WebKit::NetworkCache::Storage::shouldStoreBodyAsBlob):

6:09 PM Changeset in webkit [257024] by Fujii Hironori
  • 7 edits in trunk/Tools

[Win][MiniBrowser] Add 'Go Home' menu item and toolbar button
https://bugs.webkit.org/show_bug.cgi?id=207749

Reviewed by Ross Kirsling.

Added "Set Default URL to Current URL" menu item like Mac MiniBrowser.

  • MiniBrowser/win/MainWindow.cpp:

(MainWindow::createToolbar):
(MainWindow::WndProc):
(MainWindow::setDefaultURLToCurrentURL):
(MainWindow::goHome): Added.
(MainWindow::onURLBarEnter):

  • MiniBrowser/win/MainWindow.h:
  • MiniBrowser/win/MiniBrowserLib.rc:
  • MiniBrowser/win/MiniBrowserLibResource.h:
  • MiniBrowser/win/MiniBrowserReplace.h:
  • MiniBrowser/win/WinMain.cpp:

(wWinMain):

5:55 PM Changeset in webkit [257023] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.0.1

Tag Safari-609.1.20.0.1.

5:54 PM Changeset in webkit [257022] by Alan Coon
  • 1 delete in tags/Safari-609.1.20.0.1

Delete tag.

5:52 PM Changeset in webkit [257021] by Alan Coon
  • 18 edits in branches/safari-609.1.20.0-branch

Apply patch. rdar://problem/59465474

5:52 PM Changeset in webkit [257020] by Alan Coon
  • 26 edits in branches/safari-609.1.20.0-branch

Cherry-pick r256632. rdar://problem/59478906

NetworkLoadMetrics should be shared by multiple ResourceResponse instances
https://bugs.webkit.org/show_bug.cgi?id=207747

Reviewed by Keith Miller.

Source/WebCore:

ResourceResponse is value data, and it is copied multiple times in various places, (1) to create a new ResourceResponse
which has slightly different fields, or (1) to hold ResourceResponse even after loading finishes. For example, DocumentLoader
has Vector<ResourceResponse> to replay response dispatching in the case of loading from BackForwardCache. The problem is
that ResourceResponse is very large: 440 bytes.

While we sometimes copy ResourceResponse to modify some part of it, NetworkLoadMetrics is immutable. It is set when response is created,
and is never changed. And NetworkLoadMetrics is large: sizeof(NetworkLoadMetrics) is 184 bytes. Given that we have multiple
copies of ResourceResponse in WebCore, we should share NetworkLoadMetrics by them.

This patch puts Box<NetworkLoadMetrics> in ResourceResponse to share it with all copied ResourceResponses. We do not make NetworkLoadMetrics
RefCounted<> for now since some legit data structures embed NetworkLoadMetrics. This patch adds ArgumentCoder for Box so that we
can encode / decode Box<NetworkLoadMetrics> in ResourceResponse in IPC. To ensure NetworkLoadMetrics in ResourceResponse immutable,
we add ResourceResponse::setDeprecatedNetworkLoadMetrics instead of modifying NetworkLoadMetrics already created in ResourceResponse.

We also attempt to compact ResourceResponse more by using bit-fields. And removing m_isValid field in ParsedContentRange since
this can be represented by the different field. These changes make sizeof(ResourceResponse) from 440 to 248.

No behavior change.

  • inspector/agents/InspectorNetworkAgent.cpp: (WebCore::InspectorNetworkAgent::buildObjectForTiming): (WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):
  • inspector/agents/InspectorNetworkAgent.h:
  • loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::loadRequest):
  • loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::didFinishLoading):
  • page/PerformanceTiming.cpp: (WebCore::PerformanceTiming::domainLookupStart const): (WebCore::PerformanceTiming::domainLookupEnd const): (WebCore::PerformanceTiming::connectStart const): (WebCore::PerformanceTiming::connectEnd const): (WebCore::PerformanceTiming::secureConnectionStart const): (WebCore::PerformanceTiming::requestStart const): (WebCore::PerformanceTiming::responseStart const):
  • platform/network/NetworkLoadMetrics.h:
  • platform/network/ParsedContentRange.cpp: (WebCore::areContentRangeValuesValid): (WebCore::parseContentRange): (WebCore::ParsedContentRange::ParsedContentRange): (WebCore::ParsedContentRange::headerValue const):
  • platform/network/ParsedContentRange.h: (WebCore::ParsedContentRange::isValid const): (WebCore::ParsedContentRange::invalidValue): (WebCore::ParsedContentRange::MarkableTraits::isEmptyValue): (WebCore::ParsedContentRange::MarkableTraits::emptyValue): (WebCore::ParsedContentRange::ParsedContentRange): Deleted.
  • platform/network/ResourceHandle.h:
  • platform/network/ResourceResponseBase.cpp: (WebCore::ResourceResponseBase::ResourceResponseBase): (WebCore::ResourceResponseBase::crossThreadData const): (WebCore::ResourceResponseBase::fromCrossThreadData): (WebCore::ResourceResponseBase::compare):
  • platform/network/ResourceResponseBase.h: (WebCore::ResourceResponseBase::deprecatedNetworkLoadMetricsOrNull const): (WebCore::ResourceResponseBase::setDeprecatedNetworkLoadMetrics): (WebCore::ResourceResponseBase::encode const): (WebCore::ResourceResponseBase::decode): (WebCore::ResourceResponseBase::deprecatedNetworkLoadMetrics const): Deleted.
  • platform/network/cf/ResourceResponse.h: (WebCore::ResourceResponse::ResourceResponse):
  • platform/network/cocoa/NetworkLoadMetrics.mm: (WebCore::copyTimingData):
  • platform/network/curl/CurlResourceHandleDelegate.cpp: (WebCore::CurlResourceHandleDelegate::curlDidReceiveResponse):
  • platform/network/curl/ResourceResponse.h:
  • platform/network/curl/ResourceResponseCurl.cpp: (WebCore::ResourceResponse::setDeprecatedNetworkLoadMetrics): Deleted.
  • platform/network/mac/ResourceHandleMac.mm: (WebCore::ResourceHandle::getConnectionTimingData):
  • platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):

Source/WebKit:

Add ArgumentCoder support for Box<T>.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
  • NetworkProcess/soup/NetworkDataTaskSoup.cpp: (WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse):
  • Platform/IPC/ArgumentCoders.h: (IPC::ArgumentCoder<Box<T>>::encode): (IPC::ArgumentCoder<Box<T>>::decode):

Tools:

  • TestWebKitAPI/Tests/WebCore/ParsedContentRange.cpp: (TestWebKitAPI::TEST):

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

5:52 PM Changeset in webkit [257019] by Alan Coon
  • 17 edits
    2 copies in branches/safari-609.1.20.0-branch/Source/WebCore

Cherry-pick r256610. rdar://problem/59478918

[Web Animations] Make all animation event types inherit from the same base class
https://bugs.webkit.org/show_bug.cgi?id=207629

Reviewed by Simon Fraser.

Currently we dispatch events CSS Transitions and CSS Animations events using a dedicated event queue on DeclarativeAnimation, while the events
added by the Web Animations specification (of type AnimationPlaybackEvent) are dispatched using a shared queue on the DocumentTimeline that is
processed during the "update animations and send events procedure". The Web Animations specification dictates that all events should be dispatched
during that procedure, which includes sorting of such events based on their timeline time and associated animation relative composite order.

In this patch, we prepare the work towards spec compliance for animation events dispatch by making all event types (AnimationPlaybackEvent,
TransitionEvent and AnimationEvent) inherit from a single AnimationEventBase interface. This will allow DocumentTimeline to enqueue, sort and
dispatch all such events with a single queue in a future patch.

Due to CSSAnimationController, we must make the "timeline time" and "animation" parameters optional. When we drop support for CSSAnimationController
we'll be able to enforce stronger requirements for these.

No new test since this should not introduce any behavior change.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/AnimationEventBase.cpp: Added. (WebCore::AnimationEventBase::AnimationEventBase):
  • animation/AnimationEventBase.h: Added. (WebCore::AnimationEventBase::create): (WebCore::AnimationEventBase::isAnimationPlaybackEvent const): (WebCore::AnimationEventBase::isAnimationEvent const): (WebCore::AnimationEventBase::isTransitionEvent const): (WebCore::AnimationEventBase::timelineTime const): (WebCore::AnimationEventBase::animation const):
  • animation/AnimationPlaybackEvent.cpp: (WebCore::AnimationPlaybackEvent::AnimationPlaybackEvent): (WebCore::AnimationPlaybackEvent::bindingsTimelineTime const):
  • animation/AnimationPlaybackEvent.h:
  • animation/CSSAnimation.cpp: (WebCore::CSSAnimation::createEvent):
  • animation/CSSAnimation.h:
  • animation/CSSTransition.cpp: (WebCore::CSSTransition::createEvent):
  • animation/CSSTransition.h:
  • animation/DeclarativeAnimation.cpp: (WebCore::DeclarativeAnimation::enqueueDOMEvent):
  • animation/DeclarativeAnimation.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::enqueueAnimationPlaybackEvent):
  • dom/AnimationEvent.cpp: (WebCore::AnimationEvent::AnimationEvent):
  • dom/AnimationEvent.h:
  • dom/TransitionEvent.cpp: (WebCore::TransitionEvent::TransitionEvent):
  • dom/TransitionEvent.h:
  • page/animation/CSSAnimationController.cpp: (WebCore::CSSAnimationControllerPrivate::fireEventsAndUpdateStyle):

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

5:52 PM Changeset in webkit [257018] by Alan Coon
  • 4 edits
    2 adds in branches/safari-609.1.20.0-branch

Cherry-pick r256513. rdar://problem/59446986

REGRESSION (r255037): Zooming in and out on Quip in macOS Safari can cause the content to be offset to the side
https://bugs.webkit.org/show_bug.cgi?id=207674
rdar://problem/59404866

Reviewed by Antti Koivisto.

Source/WebCore:

Remove the early return in ScrollingStateScrollingNode::setRequestedScrollData(); comparing
with the last m_requestedScrollData is wrong, because requested scroll positions are not "state"
in the scrolling tree, they are requests to scroll. Ideally, they would be represented in some
different way in the scrolling tree.

Test: fast/scrolling/programmatic-scroll-to-zero-zero.html

  • page/scrolling/ScrollingStateScrollingNode.cpp: (WebCore::ScrollingStateScrollingNode::setRequestedScrollData):

LayoutTests:

Test that does a programmatic scroll to 0,0, does a user scroll, then a second programmatic scroll to 0,0,
which is expected to work.

  • fast/scrolling/programmatic-scroll-to-zero-zero-expected.html: Added.
  • fast/scrolling/programmatic-scroll-to-zero-zero.html: Added.
  • platform/ios/TestExpectations: Skip the new test on iOS (it relies on eventSender) and sort the grouping.

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

5:52 PM Changeset in webkit [257017] by Alan Coon
  • 2 edits in branches/safari-609.1.20.0-branch/LayoutTests

Cherry-pick r256435. rdar://problem/59446986

REGRESSION: (256400) tiled-drawing/scrolling/fixed/fixed-during-rubberband.html is failing
https://bugs.webkit.org/show_bug.cgi?id=207631

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:

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

5:52 PM Changeset in webkit [257016] by Alan Coon
  • 3 edits in branches/safari-609.1.20.0-branch/Source/WebCore

Cherry-pick r256400. rdar://problem/59446986

Unreviewed, partial rollout of r255037.
<rdar://problem/59240559>

  • page/scrolling/cocoa/ScrollingTreeFixedNode.mm: (WebCore::ScrollingTreeFixedNode::applyLayerPositions):
  • page/scrolling/cocoa/ScrollingTreeStickyNode.mm: (WebCore::ScrollingTreeStickyNode::computeLayerPosition const):

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

5:52 PM Changeset in webkit [257015] by Alan Coon
  • 29 edits
    4 copies
    6 adds in branches/safari-609.1.20.0-branch

Cherry-pick r256191. rdar://problem/59447003

Disallow setting base URL to a data or JavaScript URL
https://bugs.webkit.org/show_bug.cgi?id=207136

Source/WebCore:

Reviewed by Brent Fulgham.

Inspired by <https://bugs.chromium.org/p/chromium/issues/detail?id=679318>.

Block setting the base URL to a data URL or JavaScript URL as such usage is questionable.
This makes WebKit match the behavior of Chrome and Firefox and is in the spirit of the
discussion in <https://github.com/whatwg/html/issues/2249>.

On Mac and iOS, this restriction is applied only to apps linked against a future SDK to
avoid breaking shipped apps.

For all other ports, this restriction is enabled by default.

Tests: fast/url/relative2.html

fast/url/segments-from-data-url2.html
http/tests/security/allowed-base-url-data-url-via-setting.html
http/tests/security/denied-base-url-data-url.html
http/tests/security/denied-base-url-javascript-url.html

  • dom/Document.cpp: (WebCore::Document::processBaseElement): Condition updating the parsed base URL on whether is has an allowed scheme, if restrictions are enabled. Otherwise, do what we do now. If the scheme is disallowed then log a message to the console to explain this to web developers.
  • html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::scan): Pass whether to apply restrictons to the base URL to updatePredictedBaseURL(). This depends on whether the setting is enabled or not. (WebCore::TokenPreloadScanner::updatePredictedBaseURL): Modifed to take a boolean as to whether to apply restrictions. If restrictions are not to be applied do what we do now. Otherwise, only do what we do now if the scheme for the predicated base URL is allowed.
  • html/parser/HTMLPreloadScanner.h:
  • page/SecurityPolicy.cpp: (WebCore::SecurityPolicy::isBaseURLSchemeAllowed): Added.
  • page/SecurityPolicy.h:
  • page/Settings.yaml: Add a setting to toggle restrictions on the base URL scheme.

Source/WebKit:

Reviewed by Brent Fulgham.

Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/Cocoa/WKWebView.mm: (shouldRestrictBaseURLSchemes): Added. (-[WKWebView _setupPageConfiguration:]): Update settings.
  • UIProcess/Cocoa/VersionChecks.h:

Source/WebKitLegacy/mac:

Reviewed by Brent Fulgham.

Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

  • Misc/WebKitVersionChecks.h:
  • WebView/WebView.mm: (shouldRestrictBaseURLSchemes): Added. (-[WebView _commonInitializationWithFrameName:groupName:]): Update settings.

Source/WTF:

Reviewed by Brent Fulgham.

Add some more macro definitions.

  • wtf/spi/darwin/dyldSPI.h:

LayoutTests:

RReviewed by Brent Fulgham.

Add some tests. Update others to toggle the setting to apply or unapply the new behavior.

The test denied-base-url-javascript-url.html is derived from the test base-url-javascript.html,
included in <https://chromium.googlesource.com/chromium/src.git/+/c133efa0b915430701930b76a7cfe35608b9a403>.

  • fast/url/relative-expected.txt:
  • fast/url/relative.html:
  • fast/url/relative2-expected.txt: Copied from LayoutTests/fast/url/relative-expected.txt.
  • fast/url/relative2.html: Copied from LayoutTests/fast/url/relative.html.
  • fast/url/resources/utilities.js: (setShouldEllipsizeFileURLPaths): Added. Toggles ellipsizing the path portion of a file URL to simplify matching. Otherwise, file URLs could be machine-specific. (canonicalizedPathname): Added. (segments): Modified to optionally call canonicalizedPathname. (canonicalize): Ditto.
  • fast/url/segments-from-data-url-expected.txt:
  • fast/url/segments-from-data-url.html:
  • fast/url/segments-from-data-url2-expected.txt: Copied from LayoutTests/fast/url/segments-from-data-url-expected.txt.
  • fast/url/segments-from-data-url2.html: Copied from LayoutTests/fast/url/segments-from-data-url.html.
  • fetch/fetch-url-serialization-expected.txt:
  • http/tests/plugins/navigation-during-load-embed.html:
  • http/tests/plugins/navigation-during-load.html:
  • http/tests/security/allowed-base-url-data-url-via-setting-expected.txt: Added.
  • http/tests/security/allowed-base-url-data-url-via-setting.html: Added.
  • http/tests/security/denied-base-url-data-url-expected.txt: Added.
  • http/tests/security/denied-base-url-data-url.html: Added.
  • http/tests/security/denied-base-url-javascript-url-expected.txt: Added.
  • http/tests/security/denied-base-url-javascript-url.html: Added.

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

5:51 PM Changeset in webkit [257014] by Alan Coon
  • 43 edits
    5 adds in branches/safari-609.1.20.0-branch

Cherry-pick r255037. rdar://problem/59446986

Fixed elements no longer stay fixed with elastic overscroll
https://bugs.webkit.org/show_bug.cgi?id=206227
rdar://problem/58707084

Reviewed by Antti Koivisto.
Source/WebCore:

Intended behavior on iOS and macOS is for position:fixed and sticky elements to maintain
their position relative to the view bounds when rubber-banding ("overscrolling"). This broke
some time back. This change restores the correct behavior with the call to layoutViewportRespectingRubberBanding()
in ScrollingTreeFixedNode::applyLayerPositions() and ScrollingTreeStickyNode::computeLayerPosition().
layoutViewportRespectingRubberBanding() computes a layout viewport without clamping.

The rest of the changes are to support testing. internals.unconstrainedScrollTo()
didn't work for main frame scrolling because of scroll position clamping in various places,
so propagate ScrollClamping in more places (and replace the redundant ScrollPositionClamp with ScrollClamping).

"requested scroll position" updates now carry along both clamping and "is programmatic" data, wrapped in a struct
which is passed around the scrolling tree. This allows us to not clamp the scroll position (for testing) in more places.

Internals::unconstrainedScrollTo() needs one weird hack to trigger a layout (and thus a scrolling tree commit),
because the layout is normally triggered by a layout viewport change, but when rubber-banding we clamp the layoutViewport
used for layout, so those layouts are never triggered.

Tests: tiled-drawing/scrolling/fixed/fixed-during-rubberband.html

tiled-drawing/scrolling/sticky/sticky-during-rubberband.html

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Element.cpp: (WebCore::Element::scrollTo):
  • page/DOMWindow.cpp: (WebCore::DOMWindow::scrollTo const):
  • page/FrameView.cpp: (WebCore::FrameView::setScrollPosition): (WebCore::FrameView::requestScrollPositionUpdate):
  • page/FrameView.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp: (WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollingCoordinator.cpp:
  • page/scrolling/ScrollingCoordinator.h: (WebCore::ScrollingCoordinator::requestScrollPositionUpdate):
  • page/scrolling/ScrollingStateScrollingNode.cpp: (WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode): (WebCore::ScrollingStateScrollingNode::setRequestedScrollData): (WebCore::ScrollingStateScrollingNode::dumpProperties const): (WebCore::ScrollingStateScrollingNode::setRequestedScrollPosition): Deleted.
  • page/scrolling/ScrollingStateScrollingNode.h: (WebCore::RequestedScrollData::operator== const): (WebCore::ScrollingStateScrollingNode::requestedScrollData const): (WebCore::ScrollingStateScrollingNode::requestedScrollPosition const): Deleted. (WebCore::ScrollingStateScrollingNode::requestedScrollPositionRepresentsProgrammaticScroll const): Deleted.
  • page/scrolling/ScrollingTree.h: (WebCore::ScrollingTree::scrollingTreeNodeRequestsScroll):
  • page/scrolling/ScrollingTreeFrameScrollingNode.cpp: (WebCore::ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition const): (WebCore::ScrollingTreeFrameScrollingNode::layoutViewportRespectingRubberBanding const):
  • page/scrolling/ScrollingTreeFrameScrollingNode.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp: (WebCore::ScrollingTreeScrollingNode::commitStateAfterChildren): (WebCore::ScrollingTreeScrollingNode::adjustedScrollPosition const): (WebCore::ScrollingTreeScrollingNode::scrollBy): (WebCore::ScrollingTreeScrollingNode::scrollTo): (WebCore::ScrollingTreeScrollingNode::wasScrolledByDelegatedScrolling):
  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/cocoa/ScrollingTreeFixedNode.mm: (WebCore::ScrollingTreeFixedNode::applyLayerPositions):
  • page/scrolling/cocoa/ScrollingTreeStickyNode.mm: (WebCore::ScrollingTreeStickyNode::computeLayerPosition const):
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateAfterChildren): (WebCore::ScrollingTreeFrameScrollingNodeMac::adjustedScrollPosition const):
  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm: (WebCore::ScrollingTreeOverflowScrollingNodeMac::commitStateAfterChildren): (WebCore::ScrollingTreeOverflowScrollingNodeMac::adjustedScrollPosition const):
  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm: (WebCore::ScrollingTreeScrollingNodeDelegateMac::immediateScrollByWithoutContentEdgeConstraints):
  • platform/ScrollTypes.cpp: Added. (WebCore::operator<<):
  • platform/ScrollTypes.h:
  • platform/ScrollView.cpp: (WebCore::ScrollView::setContentsScrollPosition): (WebCore::ScrollView::setScrollPosition):
  • platform/ScrollView.h:
  • platform/ScrollableArea.cpp: (WebCore::ScrollableArea::setScrollOffsetFromAnimation):
  • platform/ScrollableArea.h: (WebCore::ScrollableArea::requestScrollPositionUpdate):
  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::scrollToOffset):
  • testing/Internals.cpp: (WebCore::Internals::unconstrainedScrollTo):

Source/WebKit:

Intended behavior on iOS and macOS is for position:fixed and sticky elements to maintain
their position relative to the view bounds when rubber-banding ("overscrolling"). This broke
some time back. This change restores the correct behavior with the call to layoutViewportRespectingRubberBanding()
in ScrollingTreeFixedNode::applyLayerPositions() and ScrollingTreeStickyNode::computeLayerPosition().
layoutViewportRespectingRubberBanding() computes a layout viewport without clamping.

The rest of the changes are to support testing. internals.unconstrainedScrollTo()
didn't work for main frame scrolling because of scroll position clamping in various places,
so propagate ScrollClamping in more places (and replace the redundant ScrollPositionClamp with ScrollClamping).

"requested scroll position" updates now carry along both clamping and "is programmatic" data, wrapped in a struct
which is passed around the scrolling tree. This allows us to not clamp the scroll position (for testing) in more places.

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: (ArgumentCoder<ScrollingStateScrollingNode>::encode): (ArgumentCoder<ScrollingStateScrollingNode>::decode): (ArgumentCoder<RequestedScrollData>::encode): (ArgumentCoder<RequestedScrollData>::decode): (WebKit::dump):
  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp: (WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeRequestsScroll):
  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
  • UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp: (WebKit::RemoteScrollingTree::scrollingTreeNodeRequestsScroll):
  • UIProcess/RemoteLayerTree/RemoteScrollingTree.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm: (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren):
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

LayoutTests:

  • tiled-drawing/scrolling/fixed/fixed-during-rubberband-expected.html: Added.
  • tiled-drawing/scrolling/fixed/fixed-during-rubberband.html: Added.
  • tiled-drawing/scrolling/sticky/sticky-during-rubberband-expected.html: Added.
  • tiled-drawing/scrolling/sticky/sticky-during-rubberband.html: Added.

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

5:50 PM Changeset in webkit [257013] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebKit

Crash in WebPageProxy::didStartProvisionalLoadForFrameShared
https://bugs.webkit.org/show_bug.cgi?id=207973

Reviewed by Chris Dumez.

Use RefPtr to store Frame*.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):

5:27 PM Changeset in webkit [257012] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac ] imported/w3c/web-platform-tests/service-workers/service-worker/resource-timing.sub.https.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207978

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:26 PM Changeset in webkit [257011] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.1.1

Tag Safari-609.1.20.1.1.

5:26 PM Changeset in webkit [257010] by Alan Coon
  • 1 delete in tags/Safari-609.1.20.1.1

Delete tag.

5:24 PM Changeset in webkit [257009] by Alan Coon
  • 1 edit in branches/safari-609.1.20.1-branch/Source/WebKit/Shared/WebPreferences.yaml

Unreviewed build fix. rdar://problem/59576820

5:12 PM Changeset in webkit [257008] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Avoid preconnecting to custom URL schemes
https://bugs.webkit.org/show_bug.cgi?id=207964

Patch by Ben Nham <Ben Nham> on 2020-02-19
Reviewed by Ryosuke Niwa.

This makes NetworkProcess::preconnectTo not preconnect to custom URL schemes. This matches
the existing behavior in NetworkConnectionToWebProcess::preconnectTo.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::preconnectTo):

5:12 PM Changeset in webkit [257007] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.101.1

Tag Safari-609.1.20.101.1.

5:07 PM Changeset in webkit [257006] by Alan Coon
  • 8 edits in branches/safari-609.1.20.101-branch/Source

Versioning.

5:01 PM Changeset in webkit [257005] by Russell Epstein
  • 1 copy in tags/Safari-609.1.20.1.1

Tag Safari-609.1.20.1.1.

4:59 PM Changeset in webkit [257004] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.0.1

Tag Safari-609.1.20.0.1.

4:57 PM Changeset in webkit [257003] by Peng Liu
  • 5 edits in trunk

Fix check-webkit-style errors related to AVFoundationSPI.h
https://bugs.webkit.org/show_bug.cgi?id=207834

Reviewed by Daniel Bates.

Source/WebCore:

No new tests, no functional change.

Revert the change in r256770 regarding the headers ordering.

  • platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

Tools:

Revert the change in r256770 regarding the headers ordering.
Headers in the same category should be in sorted order (case sensitive, as done by the command-line sort tool or the Xcode sort selection command).

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

(check_include_line):

4:55 PM Changeset in webkit [257002] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.100.1

Tag Safari-609.1.20.100.1.

4:49 PM Changeset in webkit [257001] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Do not try to lay out a formatting context unless there's some content in it
https://bugs.webkit.org/show_bug.cgi?id=207956
<rdar://problem/59455700>

Reviewed by Simon Fraser.

LineLayout::layout() normally don't get called when the block level box has not children (canUse() returns false for such cases), but we are probably missing some invalidation here
so we end up with an "empty" formatting context.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::layout):

4:49 PM Changeset in webkit [257000] by Russell Epstein
  • 8 edits in branches/safari-609.1.20.100-branch/Source

Versioning.

4:48 PM Changeset in webkit [256999] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[First paint] Introduce FrameView::m_firstVisuallyNonEmptyLayoutMilestoneIsPending
https://bugs.webkit.org/show_bug.cgi?id=207966
<rdar://problem/59606528>

Reviewed by Simon Fraser.

This is in preparation for decoupling the "content is qualified as visually non-empty" check and layout, when
the check happens soon after style recalc/render tree building and we need to wait until after layout to
issue the milestone.

  • page/FrameView.cpp:

(WebCore::FrameView::resetLayoutMilestones):
(WebCore::FrameView::fireLayoutRelatedMilestonesIfNeeded):

  • page/FrameView.h:
4:45 PM Changeset in webkit [256998] by Alan Coon
  • 1 delete in tags/Safari-609.1.20.0.1

Delete tag.

4:41 PM Changeset in webkit [256997] by Alan Coon
  • 17 edits in branches/safari-609.1.20.0-branch/Source/WebCore

Revert r256989. rdar://problem/59298138

4:41 PM Changeset in webkit [256996] by Alan Coon
  • 4 edits in branches/safari-609.1.20.0-branch/Source/JavaScriptCore

Revert r256988. rdar://problem/59478911

4:41 PM Changeset in webkit [256995] by Alan Coon
  • 13 edits in branches/safari-609.1.20.0-branch

Revert r256963. rdar://problem/59478837

4:40 PM Changeset in webkit [256994] by Kocsen Chung
  • 1 copy in branches/safari-609.1.20.101-branch

New branch.

4:37 PM Changeset in webkit [256993] by Kocsen Chung
  • 1 copy in branches/safari-609.1.20.100-branch

New branch.

4:29 PM Changeset in webkit [256992] by Alan Coon
  • 15 edits in branches/safari-609.1.20.1-branch/Source/JavaScriptCore

Apply patch. rdar://problem/59576803

4:29 PM Changeset in webkit [256991] by Alan Coon
  • 1 edit in branches/safari-609.1.20.1-branch/Source/JavaScriptCore/runtime/OptionsList.h

Apply patch. rdar://problem/59576777

3:59 PM Changeset in webkit [256990] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.0.1

Tag Safari-609.1.20.0.1.

3:56 PM Changeset in webkit [256989] by Alan Coon
  • 17 edits in branches/safari-609.1.20.0-branch/Source/WebCore

Apply patch. rdar://problem/59298138

3:54 PM Changeset in webkit [256988] by Alan Coon
  • 4 edits in branches/safari-609.1.20.0-branch/Source/JavaScriptCore

Apply patch. rdar://problem/59478911

3:45 PM Changeset in webkit [256987] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac ] css3/selectors3/xml/css3-modsel-d1.xml is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207971

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:39 PM Changeset in webkit [256986] by Russell Epstein
  • 18 edits in branches/safari-609.1.20.1-branch

Apply patch. rdar://problem/59576808

3:39 PM Changeset in webkit [256985] by Russell Epstein
  • 34 edits
    2 adds in branches/safari-609.1.20.1-branch/Source

Apply patch. rdar://problem/59576778

3:38 PM Changeset in webkit [256984] by Russell Epstein
  • 2 edits in branches/safari-609.1.20.1-branch/Source/WebCore

Cherry-pick r256584. rdar://problem/59576819

MediaToolbox may not be available; check before calling MTOverrideShouldPlayHDRVideo()
https://bugs.webkit.org/show_bug.cgi?id=207733
<rdar://problem/59441647>

Reviewed by Maciej Stachowiak.

  • platform/mac/PlatformScreenMac.mm: (WebCore::setShouldOverrideScreenSupportsHighDynamicRange):

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

3:38 PM Changeset in webkit [256983] by Russell Epstein
  • 11 edits in branches/safari-609.1.20.1-branch/Source

Cherry-pick r255881. rdar://problem/59576819

Adopt MTOverrideShouldPlayHDRVideo()
https://bugs.webkit.org/show_bug.cgi?id=207275
<rdar://problem/58837093>

Reviewed by Eric Carlson.

Source/WebCore:

  • platform/PlatformScreen.h:
  • platform/mac/PlatformScreenMac.mm: (WebCore::setShouldOverrideScreenSupportsHighDynamicRange):

Source/WebCore/PAL:

  • pal/cocoa/MediaToolboxSoftLink.cpp:
  • pal/cocoa/MediaToolboxSoftLink.h:

Source/WebKit:

The WebProcess sandbox can block access to the services necessary for MediaToolbox to determine whether
the current display is capable of displaying HDR. Rather than opening up the sandbox, provide the information
gathered by the UIProcess by way of MTOverrideShouldPlayHDRVideo().

  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::windowScreenDidChange): (WebKit::WebPage::displayID const):
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::setScreenProperties): Deleted.
  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::setScreenProperties): (WebKit::WebProcess::updatePageScreenProperties):

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

3:38 PM Changeset in webkit [256982] by Russell Epstein
  • 2 edits in branches/safari-609.1.20.1-branch/Source/JavaScriptCore

Cherry-pick r256898. rdar://problem/59576798

Unreviewed build fix.

  • jit/JITThunks.cpp: (JSC::JITThunks::hostFunctionStub):

git-svn-id: https://svn.webkit.org/repository/webkit/branches/safari-609-branch@256898 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:38 PM Changeset in webkit [256981] by Russell Epstein
  • 3 edits in branches/safari-609.1.20.1-branch/JSTests

Cherry-pick r256698. rdar://problem/59576809

Unreviewed: fix broken tests added in r256665
https://bugs.webkit.org/show_bug.cgi?id=207727

Our inline WAT doesn't seem to like named blocks/branch targets.

  • wasm/regress/llint-callee-saves-with-fast-memory.js:
  • wasm/regress/llint-callee-saves-without-fast-memory.js:

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

3:38 PM Changeset in webkit [256980] by Russell Epstein
  • 9 edits
    2 adds in branches/safari-609.1.20.1-branch

Cherry-pick r256665. rdar://problem/59576809

[WASM] Wasm interpreter's calling convention doesn't match Wasm JIT's convention.
https://bugs.webkit.org/show_bug.cgi?id=207727

JSTests:

Reviewed by Mark Lam.

  • wasm/regress/llint-callee-saves-with-fast-memory.js: Added.
  • wasm/regress/llint-callee-saves-without-fast-memory.js: Added.

Source/JavaScriptCore:

Reviewed by Mark Lam.

The Wasm JIT has unusual calling conventions, which were further complicated by the addition
of the interpreter, and the interpreter did not correctly follow these conventions (by incorrectly
saving and restoring the callee save registers used for the memory base and size). Here's a summary
of the calling convention:

  • When entering Wasm from JS, the wrapper must:
    • Preserve the base and size when entering LLInt regardless of the mode. (Prior to this patch we only preserved the base in Signaling mode)
    • Preserve the memory base in either mode, and the size for BoundsChecking.
  • Both tiers must preserve every *other* register they use. e.g. the LLInt must preserve PB and wasmInstance, but must *not* preserve memoryBase and memorySize.
  • Changes to memoryBase and memorySize are visible to the caller. This means that:
    • Intra-module calls can assume these registers are up-to-date even if the memory was resized. The only exception here is if the LLInt calls a signaling JIT, in which case the JIT will not update the size register, since it won't be using it.
    • Inter-module and JS calls require the caller to reload these registers. These calls may result in memory changes (e.g. the callee may call memory.grow).
    • A Signaling JIT caller must be aware that the LLInt may trash the size register, since it always bounds checks.
  • llint/WebAssembly.asm:
  • wasm/WasmAirIRGenerator.cpp: (JSC::Wasm::AirIRGenerator::addCall):
  • wasm/WasmB3IRGenerator.cpp: (JSC::Wasm::B3IRGenerator::addCall):
  • wasm/WasmCallee.cpp: (JSC::Wasm::LLIntCallee::calleeSaveRegisters):
  • wasm/WasmCallingConvention.h:
  • wasm/WasmLLIntPlan.cpp: (JSC::Wasm::LLIntPlan::didCompleteCompilation):
  • wasm/WasmMemoryInformation.cpp: (JSC::Wasm::PinnedRegisterInfo::get): (JSC::Wasm::getPinnedRegisters): Deleted.

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

3:38 PM Changeset in webkit [256979] by Russell Epstein
  • 4 edits in branches/safari-609.1.20.1-branch

Cherry-pick r256432. rdar://problem/59576791

WebSWServerConnection::registerServiceWorkerClient is not sending IPC message to UIProcess when it should
https://bugs.webkit.org/show_bug.cgi?id=207537

Reviewed by Chris Dumez.

Source/WebKit:

Covered by added API test.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: (WebKit::WebSWServerConnection::registerServiceWorkerClient): Fix use after move so that we can get the context connection and send the IPC message to UIProcess as expected.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

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

3:38 PM Changeset in webkit [256978] by Russell Epstein
  • 4 edits in branches/safari-609.1.20.1-branch

Cherry-pick r256383. rdar://problem/59576791

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

It is breaking an API test (Requested by youenn on #webkit).

Reverted changeset:

"WebSWServerConnection::registerServiceWorkerClient is not
sending IPC message to UIProcess when it should"
https://bugs.webkit.org/show_bug.cgi?id=207537
https://trac.webkit.org/changeset/256314

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

3:38 PM Changeset in webkit [256977] by Russell Epstein
  • 9 edits
    1 add in branches/safari-609.1.20.1-branch

Cherry-pick r256779. rdar://problem/59576798

[JSC] JITThunk should be HashSet<Weak<NativeExecutable>> with appropriate GC weakness handling
https://bugs.webkit.org/show_bug.cgi?id=207715

Reviewed by Darin Adler.

JSTests:

  • stress/stress-jitthunks.js: Added. (let.set newGlobal): (set catch):

Source/JavaScriptCore:

This patch refines JITThunks GC-aware Weak hash map for NativeExecutable. Previously, we have
HashMap<std::tuple<TaggedNativeFunction, TaggedNativeFunction, String>, Weak<NativeExecutable>> table.
But this is not good because the first tuple's information is already in NativeExecutable.
But we were using this design since Weak<NativeExecutable> can be nullified because of Weak<>. If this
happens, we could have invalid Entry in HashMap which does not have corresponding values. This will
cause crash when rehasing requires hash code for this entry.

But this HashMap is very bad in terms of memory usage. Each entry has 32 bytes, and this table gets enough
large. We identified that this table is consuming much memory in Membuster. So it is worth designing
carefully crafted data structure which only holds Weak<NativeExecutable> by leveraging the deep interaction
with our GC implementation.

This patch implements new design of JITThunks, which uses HashSet<Weak<NativeExecutable>> and carefully crafted
HashTraits / KeyTraits to handle Weak<> well.

  1. Each Weak should have finalizer, and this finalizer should remove dead Weak<NativeExecutable> from HashSet.

This is ensuring that all the keys in HashSet is, even if Weak<> is saying it is Dead, it still has an way
to access content of NativeExecutable if the content is not a JS objects. For example, we can get function
pointer from dead Weak<NativeExecutable> if it is not yet finalized. Since we remove all finalized Weak<>
from the table, this finalizer mechanism allows us to access function pointers etc. from Weak<NativeExecutable>
so long as it is held in this table.

  1. Getting NativeExecutable* from JITThunks should have special protocol.

When getting NativeExecutable* from JITThunks, we do the following,

  1. First, we check we have an Entry in JITThunks. If it does not exist, we should insert it anyway.

1.1. If it exists, we should check whether this Weak<NativeExecutable> is dead or not. It is possible that

dead one is still in the table because "dead" does not mean that it is "finalized". Until finalizing happens (and
it can be delayed by incremental-sweeper), Weak<NativeExecutable> can be dead but still accessible. So the table
is still holding dead one. If we get dead one, we should insert a new one.

1.2. If it is not dead, we return it.

  1. Second, we create a new NativeExecutable and insert it. In that case, it is possible that the table already has Weak<NativeExecutable>, but it is dead. In that case, we need to explicitly replace it with newly created one since old one is holding old content. If we replaced, finalizer of Weak<> will not be invoked since it immediately deallocates Weak<>. So, it does not happen that this newly inserted NativeExecutable* is removed by the finalizer registered by the old Weak<>.

This change makes memory usage of JITThunks table 1/4.

  • heap/Weak.cpp: (JSC::weakClearSlowCase):
  • heap/Weak.h: (JSC::Weak::Weak): (JSC::Weak::isHashTableEmptyValue const): (JSC::Weak::unsafeImpl const): (WTF::HashTraits<JSC::Weak<T>>::isEmptyValue):
  • heap/WeakInlines.h: (JSC::Weak<T>::Weak):
  • jit/JITThunks.cpp: (JSC::JITThunks::JITThunks): (JSC::JITThunks::WeakNativeExecutableHash::hash): (JSC::JITThunks::WeakNativeExecutableHash::equal): (JSC::JITThunks::HostKeySearcher::hash): (JSC::JITThunks::HostKeySearcher::equal): (JSC::JITThunks::NativeExecutableTranslator::hash): (JSC::JITThunks::NativeExecutableTranslator::equal): (JSC::JITThunks::NativeExecutableTranslator::translate): (JSC::JITThunks::finalize): (JSC::JITThunks::hostFunctionStub): (JSC::JITThunks::clearHostFunctionStubs): Deleted.
  • jit/JITThunks.h:
  • runtime/NativeExecutable.h:
  • tools/JSDollarVM.cpp: (JSC::functionGCSweepAsynchronously): (JSC::functionCreateEmptyFunctionWithName): (JSC::JSDollarVM::finishCreation):

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

3:38 PM Changeset in webkit [256976] by Russell Epstein
  • 3 edits
    1 add in branches/safari-609.1.20.1-branch

Cherry-pick r256766. rdar://problem/59576813

[Wasm] REGRESSION(r256665): Wasm->JS call IC needs to save memory size register
https://bugs.webkit.org/show_bug.cgi?id=207849

Reviewed by Mark Lam.

JSTests:

  • wasm/regress/regress-256665.js: Added. (f):

Source/JavaScriptCore:

When generating the call IC, we should select the callee saves using BoundsChecking mode in order
to obey to the calling conventions described in r256665. Currently, we won't restore the memory size
register when calling the Wasm LLInt through the call IC.

  • wasm/js/WebAssemblyFunction.cpp: (JSC::WebAssemblyFunction::calleeSaves const):

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

3:38 PM Changeset in webkit [256975] by Russell Epstein
  • 26 edits in branches/safari-609.1.20.1-branch

Cherry-pick r256632. rdar://problem/59576783

NetworkLoadMetrics should be shared by multiple ResourceResponse instances
https://bugs.webkit.org/show_bug.cgi?id=207747

Reviewed by Keith Miller.

Source/WebCore:

ResourceResponse is value data, and it is copied multiple times in various places, (1) to create a new ResourceResponse
which has slightly different fields, or (1) to hold ResourceResponse even after loading finishes. For example, DocumentLoader
has Vector<ResourceResponse> to replay response dispatching in the case of loading from BackForwardCache. The problem is
that ResourceResponse is very large: 440 bytes.

While we sometimes copy ResourceResponse to modify some part of it, NetworkLoadMetrics is immutable. It is set when response is created,
and is never changed. And NetworkLoadMetrics is large: sizeof(NetworkLoadMetrics) is 184 bytes. Given that we have multiple
copies of ResourceResponse in WebCore, we should share NetworkLoadMetrics by them.

This patch puts Box<NetworkLoadMetrics> in ResourceResponse to share it with all copied ResourceResponses. We do not make NetworkLoadMetrics
RefCounted<> for now since some legit data structures embed NetworkLoadMetrics. This patch adds ArgumentCoder for Box so that we
can encode / decode Box<NetworkLoadMetrics> in ResourceResponse in IPC. To ensure NetworkLoadMetrics in ResourceResponse immutable,
we add ResourceResponse::setDeprecatedNetworkLoadMetrics instead of modifying NetworkLoadMetrics already created in ResourceResponse.

We also attempt to compact ResourceResponse more by using bit-fields. And removing m_isValid field in ParsedContentRange since
this can be represented by the different field. These changes make sizeof(ResourceResponse) from 440 to 248.

No behavior change.

  • inspector/agents/InspectorNetworkAgent.cpp: (WebCore::InspectorNetworkAgent::buildObjectForTiming): (WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):
  • inspector/agents/InspectorNetworkAgent.h:
  • loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::loadRequest):
  • loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::didFinishLoading):
  • page/PerformanceTiming.cpp: (WebCore::PerformanceTiming::domainLookupStart const): (WebCore::PerformanceTiming::domainLookupEnd const): (WebCore::PerformanceTiming::connectStart const): (WebCore::PerformanceTiming::connectEnd const): (WebCore::PerformanceTiming::secureConnectionStart const): (WebCore::PerformanceTiming::requestStart const): (WebCore::PerformanceTiming::responseStart const):
  • platform/network/NetworkLoadMetrics.h:
  • platform/network/ParsedContentRange.cpp: (WebCore::areContentRangeValuesValid): (WebCore::parseContentRange): (WebCore::ParsedContentRange::ParsedContentRange): (WebCore::ParsedContentRange::headerValue const):
  • platform/network/ParsedContentRange.h: (WebCore::ParsedContentRange::isValid const): (WebCore::ParsedContentRange::invalidValue): (WebCore::ParsedContentRange::MarkableTraits::isEmptyValue): (WebCore::ParsedContentRange::MarkableTraits::emptyValue): (WebCore::ParsedContentRange::ParsedContentRange): Deleted.
  • platform/network/ResourceHandle.h:
  • platform/network/ResourceResponseBase.cpp: (WebCore::ResourceResponseBase::ResourceResponseBase): (WebCore::ResourceResponseBase::crossThreadData const): (WebCore::ResourceResponseBase::fromCrossThreadData): (WebCore::ResourceResponseBase::compare):
  • platform/network/ResourceResponseBase.h: (WebCore::ResourceResponseBase::deprecatedNetworkLoadMetricsOrNull const): (WebCore::ResourceResponseBase::setDeprecatedNetworkLoadMetrics): (WebCore::ResourceResponseBase::encode const): (WebCore::ResourceResponseBase::decode): (WebCore::ResourceResponseBase::deprecatedNetworkLoadMetrics const): Deleted.
  • platform/network/cf/ResourceResponse.h: (WebCore::ResourceResponse::ResourceResponse):
  • platform/network/cocoa/NetworkLoadMetrics.mm: (WebCore::copyTimingData):
  • platform/network/curl/CurlResourceHandleDelegate.cpp: (WebCore::CurlResourceHandleDelegate::curlDidReceiveResponse):
  • platform/network/curl/ResourceResponse.h:
  • platform/network/curl/ResourceResponseCurl.cpp: (WebCore::ResourceResponse::setDeprecatedNetworkLoadMetrics): Deleted.
  • platform/network/mac/ResourceHandleMac.mm: (WebCore::ResourceHandle::getConnectionTimingData):
  • platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):

Source/WebKit:

Add ArgumentCoder support for Box<T>.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
  • NetworkProcess/soup/NetworkDataTaskSoup.cpp: (WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse):
  • Platform/IPC/ArgumentCoders.h: (IPC::ArgumentCoder<Box<T>>::encode): (IPC::ArgumentCoder<Box<T>>::decode):

Tools:

  • TestWebKitAPI/Tests/WebCore/ParsedContentRange.cpp: (TestWebKitAPI::TEST):

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

3:37 PM Changeset in webkit [256974] by Russell Epstein
  • 17 edits
    2 copies in branches/safari-609.1.20.1-branch/Source/WebCore

Cherry-pick r256610. rdar://problem/59576806

[Web Animations] Make all animation event types inherit from the same base class
https://bugs.webkit.org/show_bug.cgi?id=207629

Reviewed by Simon Fraser.

Currently we dispatch events CSS Transitions and CSS Animations events using a dedicated event queue on DeclarativeAnimation, while the events
added by the Web Animations specification (of type AnimationPlaybackEvent) are dispatched using a shared queue on the DocumentTimeline that is
processed during the "update animations and send events procedure". The Web Animations specification dictates that all events should be dispatched
during that procedure, which includes sorting of such events based on their timeline time and associated animation relative composite order.

In this patch, we prepare the work towards spec compliance for animation events dispatch by making all event types (AnimationPlaybackEvent,
TransitionEvent and AnimationEvent) inherit from a single AnimationEventBase interface. This will allow DocumentTimeline to enqueue, sort and
dispatch all such events with a single queue in a future patch.

Due to CSSAnimationController, we must make the "timeline time" and "animation" parameters optional. When we drop support for CSSAnimationController
we'll be able to enforce stronger requirements for these.

No new test since this should not introduce any behavior change.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/AnimationEventBase.cpp: Added. (WebCore::AnimationEventBase::AnimationEventBase):
  • animation/AnimationEventBase.h: Added. (WebCore::AnimationEventBase::create): (WebCore::AnimationEventBase::isAnimationPlaybackEvent const): (WebCore::AnimationEventBase::isAnimationEvent const): (WebCore::AnimationEventBase::isTransitionEvent const): (WebCore::AnimationEventBase::timelineTime const): (WebCore::AnimationEventBase::animation const):
  • animation/AnimationPlaybackEvent.cpp: (WebCore::AnimationPlaybackEvent::AnimationPlaybackEvent): (WebCore::AnimationPlaybackEvent::bindingsTimelineTime const):
  • animation/AnimationPlaybackEvent.h:
  • animation/CSSAnimation.cpp: (WebCore::CSSAnimation::createEvent):
  • animation/CSSAnimation.h:
  • animation/CSSTransition.cpp: (WebCore::CSSTransition::createEvent):
  • animation/CSSTransition.h:
  • animation/DeclarativeAnimation.cpp: (WebCore::DeclarativeAnimation::enqueueDOMEvent):
  • animation/DeclarativeAnimation.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::enqueueAnimationPlaybackEvent):
  • dom/AnimationEvent.cpp: (WebCore::AnimationEvent::AnimationEvent):
  • dom/AnimationEvent.h:
  • dom/TransitionEvent.cpp: (WebCore::TransitionEvent::TransitionEvent):
  • dom/TransitionEvent.h:
  • page/animation/CSSAnimationController.cpp: (WebCore::CSSAnimationControllerPrivate::fireEventsAndUpdateStyle):

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

3:37 PM Changeset in webkit [256973] by Russell Epstein
  • 4 edits
    2 adds in branches/safari-609.1.20.1-branch

Cherry-pick r256513. rdar://problem/59576794

REGRESSION (r255037): Zooming in and out on Quip in macOS Safari can cause the content to be offset to the side
https://bugs.webkit.org/show_bug.cgi?id=207674
rdar://problem/59404866

Reviewed by Antti Koivisto.

Source/WebCore:

Remove the early return in ScrollingStateScrollingNode::setRequestedScrollData(); comparing
with the last m_requestedScrollData is wrong, because requested scroll positions are not "state"
in the scrolling tree, they are requests to scroll. Ideally, they would be represented in some
different way in the scrolling tree.

Test: fast/scrolling/programmatic-scroll-to-zero-zero.html

  • page/scrolling/ScrollingStateScrollingNode.cpp: (WebCore::ScrollingStateScrollingNode::setRequestedScrollData):

LayoutTests:

Test that does a programmatic scroll to 0,0, does a user scroll, then a second programmatic scroll to 0,0,
which is expected to work.

  • fast/scrolling/programmatic-scroll-to-zero-zero-expected.html: Added.
  • fast/scrolling/programmatic-scroll-to-zero-zero.html: Added.
  • platform/ios/TestExpectations: Skip the new test on iOS (it relies on eventSender) and sort the grouping.

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

3:37 PM Changeset in webkit [256972] by Russell Epstein
  • 2 edits in branches/safari-609.1.20.1-branch/Source/WebKit

Cherry-pick r256426. rdar://problem/59576790

[ Mac Debug wk2 ] ASSERTION FAILED: m_wasConstructedOnMainThread == isMainThread()
https://bugs.webkit.org/show_bug.cgi?id=207509
<rdar://problem/59325466>

Reviewed by Chris Dumez.

Covered by existing tests.

  • NetworkProcess/cache/CacheStorageEngine.cpp: (WebKit::CacheStorage::Engine::writeSizeFile): Make sure completion handler is always called on the main thread. Minor refactoring to make things more efficient.

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

3:37 PM Changeset in webkit [256971] by Russell Epstein
  • 3 edits in branches/safari-609.1.20.1-branch/Source/WebCore

Cherry-pick r256400. rdar://problem/59576794

Unreviewed, partial rollout of r255037.
<rdar://problem/59240559>

  • page/scrolling/cocoa/ScrollingTreeFixedNode.mm: (WebCore::ScrollingTreeFixedNode::applyLayerPositions):
  • page/scrolling/cocoa/ScrollingTreeStickyNode.mm: (WebCore::ScrollingTreeStickyNode::computeLayerPosition const):

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

3:37 PM Changeset in webkit [256970] by Russell Epstein
  • 4 edits in branches/safari-609.1.20.1-branch

Cherry-pick r256314. rdar://problem/59576791

WebSWServerConnection::registerServiceWorkerClient is not sending IPC message to UIProcess when it should
https://bugs.webkit.org/show_bug.cgi?id=207537

Reviewed by Chris Dumez.

Source/WebKit:

Covered by added API test.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: (WebKit::WebSWServerConnection::registerServiceWorkerClient): Fix use after move so that we can get the context connection and send the IPC message to UIProcess as expected.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

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

3:37 PM Changeset in webkit [256969] by Russell Epstein
  • 29 edits
    4 copies
    6 adds in branches/safari-609.1.20.1-branch

Cherry-pick r256191. rdar://problem/59576820

Disallow setting base URL to a data or JavaScript URL
https://bugs.webkit.org/show_bug.cgi?id=207136

Source/WebCore:

Reviewed by Brent Fulgham.

Inspired by <https://bugs.chromium.org/p/chromium/issues/detail?id=679318>.

Block setting the base URL to a data URL or JavaScript URL as such usage is questionable.
This makes WebKit match the behavior of Chrome and Firefox and is in the spirit of the
discussion in <https://github.com/whatwg/html/issues/2249>.

On Mac and iOS, this restriction is applied only to apps linked against a future SDK to
avoid breaking shipped apps.

For all other ports, this restriction is enabled by default.

Tests: fast/url/relative2.html

fast/url/segments-from-data-url2.html
http/tests/security/allowed-base-url-data-url-via-setting.html
http/tests/security/denied-base-url-data-url.html
http/tests/security/denied-base-url-javascript-url.html

  • dom/Document.cpp: (WebCore::Document::processBaseElement): Condition updating the parsed base URL on whether is has an allowed scheme, if restrictions are enabled. Otherwise, do what we do now. If the scheme is disallowed then log a message to the console to explain this to web developers.
  • html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::scan): Pass whether to apply restrictons to the base URL to updatePredictedBaseURL(). This depends on whether the setting is enabled or not. (WebCore::TokenPreloadScanner::updatePredictedBaseURL): Modifed to take a boolean as to whether to apply restrictions. If restrictions are not to be applied do what we do now. Otherwise, only do what we do now if the scheme for the predicated base URL is allowed.
  • html/parser/HTMLPreloadScanner.h:
  • page/SecurityPolicy.cpp: (WebCore::SecurityPolicy::isBaseURLSchemeAllowed): Added.
  • page/SecurityPolicy.h:
  • page/Settings.yaml: Add a setting to toggle restrictions on the base URL scheme.

Source/WebKit:

Reviewed by Brent Fulgham.

Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/Cocoa/WKWebView.mm: (shouldRestrictBaseURLSchemes): Added. (-[WKWebView _setupPageConfiguration:]): Update settings.
  • UIProcess/Cocoa/VersionChecks.h:

Source/WebKitLegacy/mac:

Reviewed by Brent Fulgham.

Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

  • Misc/WebKitVersionChecks.h:
  • WebView/WebView.mm: (shouldRestrictBaseURLSchemes): Added. (-[WebView _commonInitializationWithFrameName:groupName:]): Update settings.

Source/WTF:

Reviewed by Brent Fulgham.

Add some more macro definitions.

  • wtf/spi/darwin/dyldSPI.h:

LayoutTests:

RReviewed by Brent Fulgham.

Add some tests. Update others to toggle the setting to apply or unapply the new behavior.

The test denied-base-url-javascript-url.html is derived from the test base-url-javascript.html,
included in <https://chromium.googlesource.com/chromium/src.git/+/c133efa0b915430701930b76a7cfe35608b9a403>.

  • fast/url/relative-expected.txt:
  • fast/url/relative.html:
  • fast/url/relative2-expected.txt: Copied from LayoutTests/fast/url/relative-expected.txt.
  • fast/url/relative2.html: Copied from LayoutTests/fast/url/relative.html.
  • fast/url/resources/utilities.js: (setShouldEllipsizeFileURLPaths): Added. Toggles ellipsizing the path portion of a file URL to simplify matching. Otherwise, file URLs could be machine-specific. (canonicalizedPathname): Added. (segments): Modified to optionally call canonicalizedPathname. (canonicalize): Ditto.
  • fast/url/segments-from-data-url-expected.txt:
  • fast/url/segments-from-data-url.html:
  • fast/url/segments-from-data-url2-expected.txt: Copied from LayoutTests/fast/url/segments-from-data-url-expected.txt.
  • fast/url/segments-from-data-url2.html: Copied from LayoutTests/fast/url/segments-from-data-url.html.
  • fetch/fetch-url-serialization-expected.txt:
  • http/tests/plugins/navigation-during-load-embed.html:
  • http/tests/plugins/navigation-during-load.html:
  • http/tests/security/allowed-base-url-data-url-via-setting-expected.txt: Added.
  • http/tests/security/allowed-base-url-data-url-via-setting.html: Added.
  • http/tests/security/denied-base-url-data-url-expected.txt: Added.
  • http/tests/security/denied-base-url-data-url.html: Added.
  • http/tests/security/denied-base-url-javascript-url-expected.txt: Added.
  • http/tests/security/denied-base-url-javascript-url.html: Added.

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

3:37 PM Changeset in webkit [256968] by Russell Epstein
  • 44 edits
    5 adds in branches/safari-609.1.20.1-branch

Cherry-pick r255037. rdar://problem/59576794

Fixed elements no longer stay fixed with elastic overscroll
https://bugs.webkit.org/show_bug.cgi?id=206227
rdar://problem/58707084

Reviewed by Antti Koivisto.
Source/WebCore:

Intended behavior on iOS and macOS is for position:fixed and sticky elements to maintain
their position relative to the view bounds when rubber-banding ("overscrolling"). This broke
some time back. This change restores the correct behavior with the call to layoutViewportRespectingRubberBanding()
in ScrollingTreeFixedNode::applyLayerPositions() and ScrollingTreeStickyNode::computeLayerPosition().
layoutViewportRespectingRubberBanding() computes a layout viewport without clamping.

The rest of the changes are to support testing. internals.unconstrainedScrollTo()
didn't work for main frame scrolling because of scroll position clamping in various places,
so propagate ScrollClamping in more places (and replace the redundant ScrollPositionClamp with ScrollClamping).

"requested scroll position" updates now carry along both clamping and "is programmatic" data, wrapped in a struct
which is passed around the scrolling tree. This allows us to not clamp the scroll position (for testing) in more places.

Internals::unconstrainedScrollTo() needs one weird hack to trigger a layout (and thus a scrolling tree commit),
because the layout is normally triggered by a layout viewport change, but when rubber-banding we clamp the layoutViewport
used for layout, so those layouts are never triggered.

Tests: tiled-drawing/scrolling/fixed/fixed-during-rubberband.html

tiled-drawing/scrolling/sticky/sticky-during-rubberband.html

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Element.cpp: (WebCore::Element::scrollTo):
  • page/DOMWindow.cpp: (WebCore::DOMWindow::scrollTo const):
  • page/FrameView.cpp: (WebCore::FrameView::setScrollPosition): (WebCore::FrameView::requestScrollPositionUpdate):
  • page/FrameView.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp: (WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollingCoordinator.cpp:
  • page/scrolling/ScrollingCoordinator.h: (WebCore::ScrollingCoordinator::requestScrollPositionUpdate):
  • page/scrolling/ScrollingStateScrollingNode.cpp: (WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode): (WebCore::ScrollingStateScrollingNode::setRequestedScrollData): (WebCore::ScrollingStateScrollingNode::dumpProperties const): (WebCore::ScrollingStateScrollingNode::setRequestedScrollPosition): Deleted.
  • page/scrolling/ScrollingStateScrollingNode.h: (WebCore::RequestedScrollData::operator== const): (WebCore::ScrollingStateScrollingNode::requestedScrollData const): (WebCore::ScrollingStateScrollingNode::requestedScrollPosition const): Deleted. (WebCore::ScrollingStateScrollingNode::requestedScrollPositionRepresentsProgrammaticScroll const): Deleted.
  • page/scrolling/ScrollingTree.h: (WebCore::ScrollingTree::scrollingTreeNodeRequestsScroll):
  • page/scrolling/ScrollingTreeFrameScrollingNode.cpp: (WebCore::ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition const): (WebCore::ScrollingTreeFrameScrollingNode::layoutViewportRespectingRubberBanding const):
  • page/scrolling/ScrollingTreeFrameScrollingNode.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp: (WebCore::ScrollingTreeScrollingNode::commitStateAfterChildren): (WebCore::ScrollingTreeScrollingNode::adjustedScrollPosition const): (WebCore::ScrollingTreeScrollingNode::scrollBy): (WebCore::ScrollingTreeScrollingNode::scrollTo): (WebCore::ScrollingTreeScrollingNode::wasScrolledByDelegatedScrolling):
  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/cocoa/ScrollingTreeFixedNode.mm: (WebCore::ScrollingTreeFixedNode::applyLayerPositions):
  • page/scrolling/cocoa/ScrollingTreeStickyNode.mm: (WebCore::ScrollingTreeStickyNode::computeLayerPosition const):
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateAfterChildren): (WebCore::ScrollingTreeFrameScrollingNodeMac::adjustedScrollPosition const):
  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm: (WebCore::ScrollingTreeOverflowScrollingNodeMac::commitStateAfterChildren): (WebCore::ScrollingTreeOverflowScrollingNodeMac::adjustedScrollPosition const):
  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm: (WebCore::ScrollingTreeScrollingNodeDelegateMac::immediateScrollByWithoutContentEdgeConstraints):
  • platform/ScrollTypes.cpp: Added. (WebCore::operator<<):
  • platform/ScrollTypes.h:
  • platform/ScrollView.cpp: (WebCore::ScrollView::setContentsScrollPosition): (WebCore::ScrollView::setScrollPosition):
  • platform/ScrollView.h:
  • platform/ScrollableArea.cpp: (WebCore::ScrollableArea::setScrollOffsetFromAnimation):
  • platform/ScrollableArea.h: (WebCore::ScrollableArea::requestScrollPositionUpdate):
  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::scrollToOffset):
  • testing/Internals.cpp: (WebCore::Internals::unconstrainedScrollTo):

Source/WebKit:

Intended behavior on iOS and macOS is for position:fixed and sticky elements to maintain
their position relative to the view bounds when rubber-banding ("overscrolling"). This broke
some time back. This change restores the correct behavior with the call to layoutViewportRespectingRubberBanding()
in ScrollingTreeFixedNode::applyLayerPositions() and ScrollingTreeStickyNode::computeLayerPosition().
layoutViewportRespectingRubberBanding() computes a layout viewport without clamping.

The rest of the changes are to support testing. internals.unconstrainedScrollTo()
didn't work for main frame scrolling because of scroll position clamping in various places,
so propagate ScrollClamping in more places (and replace the redundant ScrollPositionClamp with ScrollClamping).

"requested scroll position" updates now carry along both clamping and "is programmatic" data, wrapped in a struct
which is passed around the scrolling tree. This allows us to not clamp the scroll position (for testing) in more places.

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: (ArgumentCoder<ScrollingStateScrollingNode>::encode): (ArgumentCoder<ScrollingStateScrollingNode>::decode): (ArgumentCoder<RequestedScrollData>::encode): (ArgumentCoder<RequestedScrollData>::decode): (WebKit::dump):
  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp: (WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeRequestsScroll):
  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
  • UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp: (WebKit::RemoteScrollingTree::scrollingTreeNodeRequestsScroll):
  • UIProcess/RemoteLayerTree/RemoteScrollingTree.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm: (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren):
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

LayoutTests:

  • tiled-drawing/scrolling/fixed/fixed-during-rubberband-expected.html: Added.
  • tiled-drawing/scrolling/fixed/fixed-during-rubberband.html: Added.
  • tiled-drawing/scrolling/sticky/sticky-during-rubberband-expected.html: Added.
  • tiled-drawing/scrolling/sticky/sticky-during-rubberband.html: Added.

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

3:33 PM Changeset in webkit [256967] by Chris Dumez
  • 10 edits in trunk/Source/WebKit

Regression(r247567) HTTP Disk cache capacity is no longer set
https://bugs.webkit.org/show_bug.cgi?id=207959
<rdar://problem/59603972>

Reviewed by Alex Christensen.

NetworkProcess::initializeNetworkProcess() was setting the cache model, which
would iterate over all network sessions to update their network cache capacity.
The issue was that network sessions were not constructed yet at this point.
When the network session(s) would get created later on, they would construct
their NetworkCache and it would use the default capacity (i.e.
std::numeric_limits<size_t>::max()).

To make this safer, I have moved the capacity computation to the Cache::open()
method and now pass the capacity when constructing the network cache storage.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::setCacheModelSynchronouslyForTesting):
(WebKit::NetworkProcess::setCacheModel):

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::cacheModel const):

  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/cache/CacheStorageEngineCaches.cpp:

(WebKit::CacheStorage::Caches::initialize):

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::computeCapacity):
(WebKit::NetworkCache::Cache::open):
(WebKit::NetworkCache::Cache::capacity const):
(WebKit::NetworkCache::Cache::updateCapacity):
(WebKit::NetworkCache::Cache::setCapacity): Deleted.

  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::open):
(WebKit::NetworkCache::Storage::Storage):
(WebKit::NetworkCache::Storage::setCapacity):

  • NetworkProcess/cache/NetworkCacheStorage.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::setCacheModel):

3:24 PM Changeset in webkit [256966] by Lauro Moura
  • 3 edits in trunk/LayoutTests

[GTK] More media tests gardening
https://bugs.webkit.org/show_bug.cgi?id=207965

Unreviewed test gardening.

  • platform/gtk-wayland/TestExpectations:
  • platform/gtk/TestExpectations:
3:14 PM Changeset in webkit [256965] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Flaky Test: editing/spelling/spellcheck-attribute.html
https://bugs.webkit.org/show_bug.cgi?id=206178

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations: Mark test as flaky on Mojave so

since the commit queue bots keep hitting it.

3:09 PM Changeset in webkit [256964] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.2.2

Tag Safari-609.1.20.2.2.

3:08 PM Changeset in webkit [256963] by Alan Coon
  • 13 edits in branches/safari-609.1.20.0-branch

Apply patch. rdar://problem/59478837

3:08 PM Changeset in webkit [256962] by Alan Coon
  • 2 edits in branches/safari-609.1.20.0-branch/Source/JavaScriptCore

Cherry-pick r256898. rdar://problem/59551695

Unreviewed build fix.

  • jit/JITThunks.cpp: (JSC::JITThunks::hostFunctionStub):

git-svn-id: https://svn.webkit.org/repository/webkit/branches/safari-609-branch@256898 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:08 PM Changeset in webkit [256961] by Alan Coon
  • 9 edits
    1 add in branches/safari-609.1.20.0-branch

Cherry-pick r256779. rdar://problem/59551695

[JSC] JITThunk should be HashSet<Weak<NativeExecutable>> with appropriate GC weakness handling
https://bugs.webkit.org/show_bug.cgi?id=207715

Reviewed by Darin Adler.

JSTests:

  • stress/stress-jitthunks.js: Added. (let.set newGlobal): (set catch):

Source/JavaScriptCore:

This patch refines JITThunks GC-aware Weak hash map for NativeExecutable. Previously, we have
HashMap<std::tuple<TaggedNativeFunction, TaggedNativeFunction, String>, Weak<NativeExecutable>> table.
But this is not good because the first tuple's information is already in NativeExecutable.
But we were using this design since Weak<NativeExecutable> can be nullified because of Weak<>. If this
happens, we could have invalid Entry in HashMap which does not have corresponding values. This will
cause crash when rehasing requires hash code for this entry.

But this HashMap is very bad in terms of memory usage. Each entry has 32 bytes, and this table gets enough
large. We identified that this table is consuming much memory in Membuster. So it is worth designing
carefully crafted data structure which only holds Weak<NativeExecutable> by leveraging the deep interaction
with our GC implementation.

This patch implements new design of JITThunks, which uses HashSet<Weak<NativeExecutable>> and carefully crafted
HashTraits / KeyTraits to handle Weak<> well.

  1. Each Weak should have finalizer, and this finalizer should remove dead Weak<NativeExecutable> from HashSet.

This is ensuring that all the keys in HashSet is, even if Weak<> is saying it is Dead, it still has an way
to access content of NativeExecutable if the content is not a JS objects. For example, we can get function
pointer from dead Weak<NativeExecutable> if it is not yet finalized. Since we remove all finalized Weak<>
from the table, this finalizer mechanism allows us to access function pointers etc. from Weak<NativeExecutable>
so long as it is held in this table.

  1. Getting NativeExecutable* from JITThunks should have special protocol.

When getting NativeExecutable* from JITThunks, we do the following,

  1. First, we check we have an Entry in JITThunks. If it does not exist, we should insert it anyway.

1.1. If it exists, we should check whether this Weak<NativeExecutable> is dead or not. It is possible that

dead one is still in the table because "dead" does not mean that it is "finalized". Until finalizing happens (and
it can be delayed by incremental-sweeper), Weak<NativeExecutable> can be dead but still accessible. So the table
is still holding dead one. If we get dead one, we should insert a new one.

1.2. If it is not dead, we return it.

  1. Second, we create a new NativeExecutable and insert it. In that case, it is possible that the table already has Weak<NativeExecutable>, but it is dead. In that case, we need to explicitly replace it with newly created one since old one is holding old content. If we replaced, finalizer of Weak<> will not be invoked since it immediately deallocates Weak<>. So, it does not happen that this newly inserted NativeExecutable* is removed by the finalizer registered by the old Weak<>.

This change makes memory usage of JITThunks table 1/4.

  • heap/Weak.cpp: (JSC::weakClearSlowCase):
  • heap/Weak.h: (JSC::Weak::Weak): (JSC::Weak::isHashTableEmptyValue const): (JSC::Weak::unsafeImpl const): (WTF::HashTraits<JSC::Weak<T>>::isEmptyValue):
  • heap/WeakInlines.h: (JSC::Weak<T>::Weak):
  • jit/JITThunks.cpp: (JSC::JITThunks::JITThunks): (JSC::JITThunks::WeakNativeExecutableHash::hash): (JSC::JITThunks::WeakNativeExecutableHash::equal): (JSC::JITThunks::HostKeySearcher::hash): (JSC::JITThunks::HostKeySearcher::equal): (JSC::JITThunks::NativeExecutableTranslator::hash): (JSC::JITThunks::NativeExecutableTranslator::equal): (JSC::JITThunks::NativeExecutableTranslator::translate): (JSC::JITThunks::finalize): (JSC::JITThunks::hostFunctionStub): (JSC::JITThunks::clearHostFunctionStubs): Deleted.
  • jit/JITThunks.h:
  • runtime/NativeExecutable.h:
  • tools/JSDollarVM.cpp: (JSC::functionGCSweepAsynchronously): (JSC::functionCreateEmptyFunctionWithName): (JSC::JSDollarVM::finishCreation):

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

3:07 PM Changeset in webkit [256960] by Alan Coon
  • 3 edits
    1 add in branches/safari-609.1.20.0-branch

Cherry-pick r256766. rdar://problem/59551706

[Wasm] REGRESSION(r256665): Wasm->JS call IC needs to save memory size register
https://bugs.webkit.org/show_bug.cgi?id=207849

Reviewed by Mark Lam.

JSTests:

  • wasm/regress/regress-256665.js: Added. (f):

Source/JavaScriptCore:

When generating the call IC, we should select the callee saves using BoundsChecking mode in order
to obey to the calling conventions described in r256665. Currently, we won't restore the memory size
register when calling the Wasm LLInt through the call IC.

  • wasm/js/WebAssemblyFunction.cpp: (JSC::WebAssemblyFunction::calleeSaves const):

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

3:07 PM Changeset in webkit [256959] by Alan Coon
  • 3 edits in branches/safari-609.1.20.0-branch/JSTests

Cherry-pick r256698. rdar://problem/59551715

Unreviewed: fix broken tests added in r256665
https://bugs.webkit.org/show_bug.cgi?id=207727

Our inline WAT doesn't seem to like named blocks/branch targets.

  • wasm/regress/llint-callee-saves-with-fast-memory.js:
  • wasm/regress/llint-callee-saves-without-fast-memory.js:

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

3:07 PM Changeset in webkit [256958] by Alan Coon
  • 9 edits
    2 adds in branches/safari-609.1.20.0-branch

Cherry-pick r256665. rdar://problem/59551715

[WASM] Wasm interpreter's calling convention doesn't match Wasm JIT's convention.
https://bugs.webkit.org/show_bug.cgi?id=207727

JSTests:

Reviewed by Mark Lam.

  • wasm/regress/llint-callee-saves-with-fast-memory.js: Added.
  • wasm/regress/llint-callee-saves-without-fast-memory.js: Added.

Source/JavaScriptCore:

Reviewed by Mark Lam.

The Wasm JIT has unusual calling conventions, which were further complicated by the addition
of the interpreter, and the interpreter did not correctly follow these conventions (by incorrectly
saving and restoring the callee save registers used for the memory base and size). Here's a summary
of the calling convention:

  • When entering Wasm from JS, the wrapper must:
    • Preserve the base and size when entering LLInt regardless of the mode. (Prior to this patch we only preserved the base in Signaling mode)
    • Preserve the memory base in either mode, and the size for BoundsChecking.
  • Both tiers must preserve every *other* register they use. e.g. the LLInt must preserve PB and wasmInstance, but must *not* preserve memoryBase and memorySize.
  • Changes to memoryBase and memorySize are visible to the caller. This means that:
    • Intra-module calls can assume these registers are up-to-date even if the memory was resized. The only exception here is if the LLInt calls a signaling JIT, in which case the JIT will not update the size register, since it won't be using it.
    • Inter-module and JS calls require the caller to reload these registers. These calls may result in memory changes (e.g. the callee may call memory.grow).
    • A Signaling JIT caller must be aware that the LLInt may trash the size register, since it always bounds checks.
  • llint/WebAssembly.asm:
  • wasm/WasmAirIRGenerator.cpp: (JSC::Wasm::AirIRGenerator::addCall):
  • wasm/WasmB3IRGenerator.cpp: (JSC::Wasm::B3IRGenerator::addCall):
  • wasm/WasmCallee.cpp: (JSC::Wasm::LLIntCallee::calleeSaveRegisters):
  • wasm/WasmCallingConvention.h:
  • wasm/WasmLLIntPlan.cpp: (JSC::Wasm::LLIntPlan::didCompleteCompilation):
  • wasm/WasmMemoryInformation.cpp: (JSC::Wasm::PinnedRegisterInfo::get): (JSC::Wasm::getPinnedRegisters): Deleted.

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

3:07 PM Changeset in webkit [256957] by Alan Coon
  • 4 edits in branches/safari-609.1.20.0-branch

Cherry-pick r256432. rdar://problem/59446974

WebSWServerConnection::registerServiceWorkerClient is not sending IPC message to UIProcess when it should
https://bugs.webkit.org/show_bug.cgi?id=207537

Reviewed by Chris Dumez.

Source/WebKit:

Covered by added API test.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: (WebKit::WebSWServerConnection::registerServiceWorkerClient): Fix use after move so that we can get the context connection and send the IPC message to UIProcess as expected.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

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

3:07 PM Changeset in webkit [256956] by Alan Coon
  • 2 edits in branches/safari-609.1.20.0-branch/Source/WebKit

Cherry-pick r256426. rdar://problem/59447008

[ Mac Debug wk2 ] ASSERTION FAILED: m_wasConstructedOnMainThread == isMainThread()
https://bugs.webkit.org/show_bug.cgi?id=207509
<rdar://problem/59325466>

Reviewed by Chris Dumez.

Covered by existing tests.

  • NetworkProcess/cache/CacheStorageEngine.cpp: (WebKit::CacheStorage::Engine::writeSizeFile): Make sure completion handler is always called on the main thread. Minor refactoring to make things more efficient.

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

3:07 PM Changeset in webkit [256955] by Alan Coon
  • 4 edits in branches/safari-609.1.20.0-branch

Cherry-pick r256383. rdar://problem/59446974

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

It is breaking an API test (Requested by youenn on #webkit).

Reverted changeset:

"WebSWServerConnection::registerServiceWorkerClient is not
sending IPC message to UIProcess when it should"
https://bugs.webkit.org/show_bug.cgi?id=207537
https://trac.webkit.org/changeset/256314

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

3:07 PM Changeset in webkit [256954] by Alan Coon
  • 4 edits in branches/safari-609.1.20.0-branch

Cherry-pick r256314. rdar://problem/59446974

WebSWServerConnection::registerServiceWorkerClient is not sending IPC message to UIProcess when it should
https://bugs.webkit.org/show_bug.cgi?id=207537

Reviewed by Chris Dumez.

Source/WebKit:

Covered by added API test.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: (WebKit::WebSWServerConnection::registerServiceWorkerClient): Fix use after move so that we can get the context connection and send the IPC message to UIProcess as expected.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

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

3:07 PM Changeset in webkit [256953] by Alan Coon
  • 1 edit in branches/safari-609.1.20.0-branch/Source/JavaScriptCore/runtime/OptionsList.h

Apply patch. rdar://problem/59447266

3:07 PM Changeset in webkit [256952] by Alan Coon
  • 34 edits
    2 adds in branches/safari-609.1.20.0-branch/Source

Apply patch. rdar://problem/59447004

3:07 PM Changeset in webkit [256951] by Alan Coon
  • 15 edits in branches/safari-609.1.20.0-branch/Source/JavaScriptCore

Apply patch. rdar://problem/59446991

2:19 PM Changeset in webkit [256950] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] accessibility/mac/aria-menu-item-selected-notification.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=207962

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
2:10 PM Changeset in webkit [256949] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

[mac debug] Regression: http/tests/websocket/tests/hybi/workers/worker-reload.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=207940
<rdar://problem/59592000>

Reviewed by Chris Dumez.

Covered by debug asserts.

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::connect):
Pass registrable domain instead of URL.
Isolate copy the domain before hopping to main thread for extra protection.

2:02 PM Changeset in webkit [256948] by dbates@webkit.org
  • 6 edits in trunk/Source/WebKitLegacy

[iOS][LegacyWebKit] Override EditorClient::shouldRevealCurrentSelectionAfterInsertion()
https://bugs.webkit.org/show_bug.cgi?id=207955
<rdar://problem/59602916>

Reviewed by Wenson Hsieh.

Source/WebKitLegacy/ios:

Adds a stub function for -shouldRevealCurrentSelectionAfterInsertion that returns YES,
to keep our current behavior.

  • DefaultDelegates/WebDefaultUIKitDelegate.m:

(-[WebDefaultUIKitDelegate shouldRevealCurrentSelectionAfterInsertion]): Added.

  • WebView/WebUIKitDelegate.h:

Source/WebKitLegacy/mac:

Wire up EditorClient::shouldRevealCurrentSelectionAfterInsertion() in Legacy WebKit. This
allows Legacy WebKit clients to toggle whether the current selection is revealed after
an insertion, which they may want to do to achieve a desired UI effect.

  • WebCoreSupport/WebEditorClient.h:
  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::shouldRevealCurrentSelectionAfterInsertion const): Added. Ask the _UIKitDelegateForwarder
if it responds to -shouldRevealCurrentSelectionAfterInsertion. If it does then return its
response. Otherwise, return true to do what we do now: reveal the current selection after
an insertion.

1:54 PM Changeset in webkit [256947] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GTK] Layout Test media/track/audio-track.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=134573

Unreviewed test gardening.

This test has not timeout (on its own) since r180689 (Feb 2015) other
than 4 timeouts on a bot hiccup up to r2545640 with other media tests.
Updating its expectation to reflect the new behavior affected by
bug198830.

  • platform/gtk/TestExpectations:
1:43 PM Changeset in webkit [256946] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.3.2

Tag Safari-609.1.20.3.2.

1:42 PM Changeset in webkit [256945] by Alan Coon
  • 29 edits
    4 copies
    6 adds in branches/safari-609.1.20.3-branch

Cherry-pick r256191. rdar://problem/59576822

Disallow setting base URL to a data or JavaScript URL
https://bugs.webkit.org/show_bug.cgi?id=207136

Source/WebCore:

Reviewed by Brent Fulgham.

Inspired by <https://bugs.chromium.org/p/chromium/issues/detail?id=679318>.

Block setting the base URL to a data URL or JavaScript URL as such usage is questionable.
This makes WebKit match the behavior of Chrome and Firefox and is in the spirit of the
discussion in <https://github.com/whatwg/html/issues/2249>.

On Mac and iOS, this restriction is applied only to apps linked against a future SDK to
avoid breaking shipped apps.

For all other ports, this restriction is enabled by default.

Tests: fast/url/relative2.html

fast/url/segments-from-data-url2.html
http/tests/security/allowed-base-url-data-url-via-setting.html
http/tests/security/denied-base-url-data-url.html
http/tests/security/denied-base-url-javascript-url.html

  • dom/Document.cpp: (WebCore::Document::processBaseElement): Condition updating the parsed base URL on whether is has an allowed scheme, if restrictions are enabled. Otherwise, do what we do now. If the scheme is disallowed then log a message to the console to explain this to web developers.
  • html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::scan): Pass whether to apply restrictons to the base URL to updatePredictedBaseURL(). This depends on whether the setting is enabled or not. (WebCore::TokenPreloadScanner::updatePredictedBaseURL): Modifed to take a boolean as to whether to apply restrictions. If restrictions are not to be applied do what we do now. Otherwise, only do what we do now if the scheme for the predicated base URL is allowed.
  • html/parser/HTMLPreloadScanner.h:
  • page/SecurityPolicy.cpp: (WebCore::SecurityPolicy::isBaseURLSchemeAllowed): Added.
  • page/SecurityPolicy.h:
  • page/Settings.yaml: Add a setting to toggle restrictions on the base URL scheme.

Source/WebKit:

Reviewed by Brent Fulgham.

Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/Cocoa/WKWebView.mm: (shouldRestrictBaseURLSchemes): Added. (-[WKWebView _setupPageConfiguration:]): Update settings.
  • UIProcess/Cocoa/VersionChecks.h:

Source/WebKitLegacy/mac:

Reviewed by Brent Fulgham.

Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

  • Misc/WebKitVersionChecks.h:
  • WebView/WebView.mm: (shouldRestrictBaseURLSchemes): Added. (-[WebView _commonInitializationWithFrameName:groupName:]): Update settings.

Source/WTF:

Reviewed by Brent Fulgham.

Add some more macro definitions.

  • wtf/spi/darwin/dyldSPI.h:

LayoutTests:

RReviewed by Brent Fulgham.

Add some tests. Update others to toggle the setting to apply or unapply the new behavior.

The test denied-base-url-javascript-url.html is derived from the test base-url-javascript.html,
included in <https://chromium.googlesource.com/chromium/src.git/+/c133efa0b915430701930b76a7cfe35608b9a403>.

  • fast/url/relative-expected.txt:
  • fast/url/relative.html:
  • fast/url/relative2-expected.txt: Copied from LayoutTests/fast/url/relative-expected.txt.
  • fast/url/relative2.html: Copied from LayoutTests/fast/url/relative.html.
  • fast/url/resources/utilities.js: (setShouldEllipsizeFileURLPaths): Added. Toggles ellipsizing the path portion of a file URL to simplify matching. Otherwise, file URLs could be machine-specific. (canonicalizedPathname): Added. (segments): Modified to optionally call canonicalizedPathname. (canonicalize): Ditto.
  • fast/url/segments-from-data-url-expected.txt:
  • fast/url/segments-from-data-url.html:
  • fast/url/segments-from-data-url2-expected.txt: Copied from LayoutTests/fast/url/segments-from-data-url-expected.txt.
  • fast/url/segments-from-data-url2.html: Copied from LayoutTests/fast/url/segments-from-data-url.html.
  • fetch/fetch-url-serialization-expected.txt:
  • http/tests/plugins/navigation-during-load-embed.html:
  • http/tests/plugins/navigation-during-load.html:
  • http/tests/security/allowed-base-url-data-url-via-setting-expected.txt: Added.
  • http/tests/security/allowed-base-url-data-url-via-setting.html: Added.
  • http/tests/security/denied-base-url-data-url-expected.txt: Added.
  • http/tests/security/denied-base-url-data-url.html: Added.
  • http/tests/security/denied-base-url-javascript-url-expected.txt: Added.
  • http/tests/security/denied-base-url-javascript-url.html: Added.

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

1:40 PM Changeset in webkit [256944] by Russell Epstein
  • 8 edits in branches/safari-609.1.20.1-branch/Source

Versioning.

1:34 PM Changeset in webkit [256943] by Alan Coon
  • 8 edits in branches/safari-609.1.20.3-branch/Source

Versioning.

1:31 PM Changeset in webkit [256942] by Alan Coon
  • 4 edits
    1 add in branches/safari-609.1.20.2-branch

Cherry-pick r256225. rdar://problem/59446983

[watchOS] Notification listener is never unregistered
https://bugs.webkit.org/show_bug.cgi?id=207459
Source/WebKit:

<rdar://problem/58923393>

Reviewed by Maciej Stachowiak.

On watchOS, the backlight changed notification is registered in WebProcessPool::registerNotificationObservers(),
but not unregistered in WebProcessPool::unregisterNotificationObservers().

API test: WebKit.BacklightLevelNotificationCrash

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::unregisterNotificationObservers):

Tools:

Reviewed by Maciej Stachowiak.

Add a test which tests that posting a backlight level change notification will not cause a crash.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/BacklightLevelNotification.mm: Added. (TEST):

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

1:23 PM Changeset in webkit [256941] by keith_miller@apple.com
  • 6 edits in trunk

Disable Wasm reference types by default
https://bugs.webkit.org/show_bug.cgi?id=207952

Reviewed by Mark Lam.

JSTests:

  • wasm/stress/immutable-globals.js:
  • wasm/stress/local-ref.js:
  • wasm/stress/mutable-globals.js:

Source/JavaScriptCore:

  • runtime/OptionsList.h:
1:22 PM Changeset in webkit [256940] by Alan Coon
  • 8 edits in branches/safari-609.1.20.2-branch/Source

Versioning.

1:08 PM Changeset in webkit [256939] by Alan Coon
  • 8 edits in branches/safari-609.1.20.0-branch/Source

Versioning.

12:56 PM Changeset in webkit [256938] by Alan Coon
  • 1 copy in branches/safari-609.1.20.1-branch

New branch.

12:56 PM Changeset in webkit [256937] by Alan Coon
  • 1 copy in branches/safari-609.1.20.0-branch

New branch.

12:54 PM Changeset in webkit [256936] by youenn@apple.com
  • 8 edits in trunk/Source/WebCore

Remove PlatformMediaSession::characteristics()
https://bugs.webkit.org/show_bug.cgi?id=207926

Reviewed by Eric Carlson.

No change of behavior, removing no longer used code.

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::characteristics const): Deleted.

  • Modules/mediastream/MediaStreamTrack.h:
  • Modules/webaudio/AudioContext.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::characteristics const): Deleted.

  • html/HTMLMediaElement.h:
  • platform/audio/PlatformMediaSession.cpp:

(WebCore::PlatformMediaSession::characteristics const): Deleted.

  • platform/audio/PlatformMediaSession.h:

(WebCore::PlatformMediaSessionClient::displayType const):

12:39 PM Changeset in webkit [256935] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[iOS] fast/dom/focus-shift-crash.html and editing/selection/selection-change-in-disconnected-frame-crash.html crash after r256864
https://bugs.webkit.org/show_bug.cgi?id=207939

Reviewed by Tim Horton.

Fix two layout tests that began to crash after r256864 due to a missing null check for EditorClient.
To make this conditional a bit easier to read, pull out each case where we should avoid calling
didChangeSelection() into a separate early return. The EditorClient may be null on iOS in the case where the
Frame has been detached from its Page.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::updateSelectionAppearance):

12:22 PM Changeset in webkit [256934] by Kate Cheney
  • 12 edits
    1 add in trunk/Source/WebKit

WebPageProxy::PolicyDecisionSender should send a struct instead of many parameters
https://bugs.webkit.org/show_bug.cgi?id=207936
<rdar://problem/59590676>

Reviewed by Alex Christensen.

  • Shared/PolicyDecision.h: Added.

(WebKit::PolicyDecision::encode const):
(WebKit::PolicyDecision::decode):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionSync):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::PolicyDecisionSender::send):
(WebKit::WebPageProxy::PolicyDecisionSender::identifier):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNavigationActionSyncShared):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponseShared):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::didReceivePolicyDecision):

  • WebProcess/WebPage/WebFrame.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didReceivePolicyDecision):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
12:04 PM Changeset in webkit [256933] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[iOS] Safari sometimes crashes under ViewGestureController::beginSwipeGesture
https://bugs.webkit.org/show_bug.cgi?id=207929
<rdar://problem/59493326>

Reviewed by Tim Horton.

Make ViewGestureController::beginSwipeGesture robust in the case where the target back/forward item no longer
exists. This means that a back/forward target item existed when UIKit called into us in canSwipeInDirection, but
this item was removed by the time beginSwipeGesture is called.

A couple of conditions could make this possible, such as handling incoming synchronous IPC in the UI process
that could change the back/forward list before sending outgoing IPC to the web process; alternately, an SPI
client could be overriding -_webViewDidBeginNavigationGesture: to run some logic that removes the would-be
target back/forward item.

To protect against these scenarios, null-check targetItem before attempting to dereference it; if it is null,
then reset some state that might've been set as a result of beginning the swipe (that is, m_activeGestureType
and m_currentGestureID) and then immediately bail before attempting to install the snapshot view and proceed
with the swipe.

  • UIProcess/ios/ViewGestureControllerIOS.mm:

(WebKit::ViewGestureController::beginSwipeGesture):

12:01 PM Changeset in webkit [256932] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Disable the process cache when process-per-tab is disabled in the debug menu
https://bugs.webkit.org/show_bug.cgi?id=207949
<rdar://problem/57094837>

Reviewed by Geoffrey Garen.

Disable the process cache when process-per-tab is disabled in the debug menu. The process cache is a
process-swap-on-navigation optimization and process-swap-on-navigation is already disabled when
process-per-tab is disabled. The process cache is not useful with such configuration and actually
leads to crashes too.

  • UIProcess/WebProcessCache.cpp:

(WebKit::WebProcessCache::updateCapacity):

11:57 AM Changeset in webkit [256931] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] http/tests/inspector/network/har/har-page.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207954

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:46 AM Changeset in webkit [256930] by stephan.szabo@sony.com
  • 2 edits in trunk/Source/JavaScriptCore

[PlayStation] Get jsc test wrappers using find_package
https://bugs.webkit.org/show_bug.cgi?id=207914

Reviewed by Ross Kirsling.

  • shell/PlatformPlayStation.cmake:
11:36 AM Changeset in webkit [256929] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 Release ] fast/scrolling/latching/scroll-iframe-in-overflow.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207953

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:30 AM Changeset in webkit [256928] by Alan Bujtas
  • 5 edits
    2 adds in trunk

[LFC][Floats] FloatingContext::constraints should be able to handle empty candidate ranges (points)
https://bugs.webkit.org/show_bug.cgi?id=207937
<rdar://problem/59591109>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/floats-shrinking-line-simple.html

Handle the case when the incoming vertical range is empty (line is empty).

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::constraints const):

  • layout/floats/FloatingContext.h:
  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):

LayoutTests:

  • fast/layoutformattingcontext/floats-shrinking-line-simple-expected.html: Added.
  • fast/layoutformattingcontext/floats-shrinking-line-simple.html: Added.
11:04 AM Changeset in webkit [256927] by Alan Coon
  • 1 copy in tags/Safari-610.1.3.4

Tag Safari-610.1.3.4.

10:54 AM Changeset in webkit [256926] by Alan Coon
  • 8 edits in branches/safari-610.1.3-branch/Source

Versioning.

10:36 AM Changeset in webkit [256925] by Brent Fulgham
  • 5 edits in trunk/Source

Re-disable top-level data URL navigations
https://bugs.webkit.org/show_bug.cgi?id=207917
<rdar://problem/59568037>

Reviewed by Darin Adler.

Source/WebCore:

Calls to WKPage and WKWebView API used to load data and strings directly should be recognized by
the loading code as being from client API calls. This brings these API behaviors into alignment
with similar API for loading URLs and URLRequests directly. This change also allows us to enforce
stricter handling of Data URLs, and to remove the need to explicitly permit top-level data URL
navigation when client APIs are used.

Tested by TestWebKitAPI Navigation tests.

  • page/Settings.yaml:

Source/WebKit:

In Bug 207719 we allowed top-level navigations to data URLs by default. This
patch updates client loading API calls so that we can go back to a default
block of these loads without breaking WebKit clients.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadDataImpl): Recognize direct data loads started from client API.

  • WebProcess/WebPage/WebPage.h:
10:15 AM Changeset in webkit [256924] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][IFC] Anonymous inline text box container is not the only type of anonymous containers
https://bugs.webkit.org/show_bug.cgi?id=207945
<rdar://problem/59592411>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/anonymous-inline-container-simple.html

We construct anonymous inline containers for certain features like first-letter.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::nextInlineLevelBoxToLayout):
(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::collectInlineContentIfNeeded):

LayoutTests:

  • fast/layoutformattingcontext/anonymous-inline-container-simple-expected.html: Added.
  • fast/layoutformattingcontext/anonymous-inline-container-simple.html: Added.
9:59 AM Changeset in webkit [256923] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Skip lazy iframe load test
https://bugs.webkit.org/show_bug.cgi?id=207946

Patch by Rob Buis <rbuis@igalia.com> on 2020-02-19
Reviewed by Frédéric Wang.

The WPT test html/semantics/embedded-content/the-img-element/image-loading-lazy-in-cross-origin-ifame-001.sub.html
should have been skipped in https://trac.webkit.org/changeset/256916/webkit.

8:57 AM Changeset in webkit [256922] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r256805?) [ Mojave wk2 Release ] webrtc/video-replace-muted-track.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=207941

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
8:57 AM Changeset in webkit [256921] by Megan Gardner
  • 6 edits in trunk/Source

Ensure that contenteditable carets on macCatalyst are the right color, especially in Dark Mode
https://bugs.webkit.org/show_bug.cgi?id=207789
<rdar://problem/59429715>

Reviewed by Tim Horton.

Source/WebCore:

Factor out caret color calculation to be used in WebPageIOS.

Fixes EditorStateTests.CaretColorInContentEditable.

  • editing/FrameSelection.cpp:

(WebCore::CaretBase::computeCaretColor):
(WebCore::CaretBase::paintCaret const):

  • editing/FrameSelection.h:

Source/WebKit:

Because UIKit only uses label color for the caret in macCatalyst,
we need skip text input traits and send the correctly calculated color
to UIKit.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView insertionPointColor]):
(-[WKContentView getInteractionTintColor]):
(-[WKContentView _updateInteractionTintColor]):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::platformEditorState const):

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

results.webkit.org: Correctly report JSC tests for windows
https://bugs.webkit.org/show_bug.cgi?id=207910

Rubber-stamped by Aakash Jain.

  • Scripts/run-javascriptcore-tests:

(configurationForUpload): Give Windows a version name.

  • Scripts/webkitdirs.pm:

(determineWinVersion): Correctly parse Windows 10 version numbers, conform to
Version dictionary.

8:33 AM Changeset in webkit [256919] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r256842?) [ Mac wk2 ] http/wpt/crypto/derive-hmac-key-crash.any.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=207938

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
8:31 AM Changeset in webkit [256918] by Chris Dumez
  • 8 edits in trunk

Unreviewed, fix assertions in storage access API layout tests after r256882.

Source/WebCore:

  • dom/DocumentStorageAccess.idl:

Only expose the storage access API operations to the Web when the corresponding setting is
enabled instead of relying on an assertion.

  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
Stop disabling the storage access API since the API is enabled by default.

Tools:

Drop dead testRunner code to toggle storage access API feature.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setStorageAccessAPIEnabled): Deleted.

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

4:50 AM Changeset in webkit [256917] by Philippe Normand
  • 2 edits in trunk

[GTK][WPE] Set ccache as compiler launcher, add opt-in sccache support
https://bugs.webkit.org/show_bug.cgi?id=207838

Reviewed by Carlos Alberto Lopez Perez.

This change allows for more granular control over the compiler
launcher configuration. The build host should no longer need to
set ccache symbolic links. Additionally optional support for
sccache is added, enabled when the WEBKIT_USE_SCCACHE environment
variable is set to YES.

  • Source/cmake/WebKitCCache.cmake:
2:37 AM Changeset in webkit [256916] by commit-queue@webkit.org
  • 17 edits in trunk/LayoutTests

Main implementation for lazy image loading
https://bugs.webkit.org/show_bug.cgi?id=200764

Patch by Rob Buis <rbuis@igalia.com> on 2020-02-19
Reviewed by Frédéric Wang.

LayoutTests/imported/w3c:

When updating WPT tests in a lost minute change I forgot to add webkit-test-runner headers.
Remaining failures are tracked in https://bugs.webkit.org/show_bug.cgi?id=207902 and
https://bugs.webkit.org/show_bug.cgi?id=207901.

  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-cross-origin-ifame-001.sub-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-cross-origin-ifame-001.sub.html:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-cross-origin-ifame-002.sub-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-cross-origin-ifame-002.sub.html:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied-2-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied-2.html:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied-iframe.html:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied.html:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-crossorigin-applied.sub-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-crossorigin-applied.sub.html:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-referrer-policy-applied.sub-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-referrer-policy-applied.sub.html:

LayoutTests:

Update test expectations to skip
image-loading-lazy-in-cross-origin-ifame-001.sub.html and
image-loading-lazy-in-cross-origin-ifame-002.sub.html.

  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
2:32 AM Changeset in webkit [256915] by alex
  • 2 edits in trunk/LayoutTests

REGRESSION(r188639): Several inspector tests timeout because they are slow after r188639
https://bugs.webkit.org/show_bug.cgi?id=149916

Unreviewed GTK gardening. Add some more tests as Pass Slow for the inspector bug.

  • platform/gtk/TestExpectations:
1:25 AM Changeset in webkit [256914] by cathiechen
  • 2 edits in trunk/Source/WebKit

Enable AspectRatioOfImgFromWidthAndHeightEnabled by default
https://bugs.webkit.org/show_bug.cgi?id=207880

Reviewed by Frédéric Wang.

  • Shared/WebPreferences.yaml:

Feb 18, 2020:

10:56 PM Changeset in webkit [256913] by zandobersek@gmail.com
  • 6 edits in trunk

[WPE] Support 2D axis, smooth-motion events
https://bugs.webkit.org/show_bug.cgi?id=207881

Reviewed by Carlos Garcia Campos.

Source/WebKit:

WPE's WebEventFactory should also handle axis events that are capable
of providing information about axis change in both dimensions. In case
of smooth motion, the delta values should be preserved and not
transformed into line-steps.

Similarly, the ScrollGestureController should also adopt the 2D axis
event type, producing smooth-motion events when dispatching handling
a scroll gesture.

The changes are guarded and only enabled when building against at least
libwpe 1.5.0 since that's when the new API was added.

  • Shared/libwpe/WebEventFactory.cpp:

(WebKit::WebEventFactory::createWebWheelEvent):

  • UIProcess/API/wpe/ScrollGestureController.cpp:

(WebKit::ScrollGestureController::handleEvent):

  • UIProcess/API/wpe/ScrollGestureController.h:

(WebKit::ScrollGestureController::axisEvent):

Tools:

  • wpe/jhbuild.modules: Bump to a newer libwpe commit.
10:44 PM Changeset in webkit [256912] by commit-queue@webkit.org
  • 10 edits in trunk/Source/WebKit

Set User-Agent in preconnect requests
https://bugs.webkit.org/show_bug.cgi?id=207777

Patch by Ben Nham <Ben Nham> on 2020-02-18
Reviewed by Chris Dumez.

When using an HTTPS proxy, CFNetwork will not reuse a preconnected socket if the User-Agent
on the preconnect request doesn't match the User-Agent of the actual request
(<rdar://problem/59434166>). To work around this, this sets the User-Agent on preconnect
requests.

In addition, this patch moves the preconnect request from WebPage::loadRequest in the
WebProcess to WebPageProxy::loadRequest in the UIProcess. This is because there can be
long sync IPCs that last >100 ms that occur before WebProcess::loadRequest even starts,
e.g. https://bugs.webkit.org/show_bug.cgi?id=203165.

By making both changes, we see a ~2% improvement in PLT5 times.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::preconnectTo):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::preconnectTo):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::loadRequestWithNavigationShared):
(WebKit::WebPageProxy::preconnectTo):

  • UIProcess/WebPageProxy.h:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::preconnectTo):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadRequest):

9:42 PM Changeset in webkit [256911] by Alan Bujtas
  • 8 edits in trunk/Source/WebCore

Rename ScrollView::styleDidChange to styleAndRenderTreeDidChange
https://bugs.webkit.org/show_bug.cgi?id=207921

Reviewed by Simon Fraser.

When ScrollView::styleDidChange is called we actually finished updating the render tree as well.

  • dom/Document.cpp:

(WebCore::Document::resolveStyle):

  • page/FrameView.cpp:

(WebCore::FrameView::styleAndRenderTreeDidChange):
(WebCore::FrameView::styleDidChange): Deleted.

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

(WebCore::ScrollView::styleAndRenderTreeDidChange):
(WebCore::ScrollView::styleDidChange): Deleted.

  • platform/ScrollView.h:
  • rendering/RenderView.cpp: FrameView::styleDidChange gets called by the Document.

(WebCore::RenderView::styleDidChange): Deleted.

  • rendering/RenderView.h:
9:37 PM Changeset in webkit [256910] by keith_miller@apple.com
  • 11 edits
    1 copy
    1 add in trunk/Source

Add an os_log PrintStream
https://bugs.webkit.org/show_bug.cgi?id=207898

Reviewed by Mark Lam.

Source/JavaScriptCore:

Add jsc option to write dataLogs to os_log.

  • runtime/Options.cpp:

(JSC::Options::initialize):

  • runtime/OptionsList.h:

Source/WTF:

When debugging on iOS writing to a file can be hard (thanks
Sandboxing!) so logging our dataLogs to os_log would make things
easier. This patch adds a new subclass of PrintStream,
OSLogPrintStream, that converts our file writes to
os_log. Unfortunately, os_log doesn't buffer writes so
OSLogPrintStream needs to do its own buffering. e.g. if you call
dataLogLn("some text with a ", number, " and a ", string);
os_log will log that as 5 separate logs.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/DataLog.cpp:

(WTF::setDataFile):

  • wtf/DataLog.h:
  • wtf/OSLogPrintStream.cpp: Added.

(WTF::OSLogPrintStream::OSLogPrintStream):
(WTF::OSLogPrintStream::~OSLogPrintStream):
(WTF::OSLogPrintStream::open):
(WTF::OSLogPrintStream::vprintf):

  • wtf/OSLogPrintStream.h: Copied from Source/WTF/wtf/DataLog.h.
  • wtf/PrintStream.cpp:

(WTF::printExpectedCStringHelper):
(WTF::printInternal):

  • wtf/text/CString.cpp:

(WTF::CString::grow):

  • wtf/text/CString.h:
9:20 PM Changeset in webkit [256909] by Lauro Moura
  • 3 edits in trunk/LayoutTests

[GTK] Gardening release build crashes
https://bugs.webkit.org/show_bug.cgi?id=207928

Unreviewed test gardening.

  • platform/gtk-wayland/TestExpectations:
  • platform/gtk/TestExpectations:
9:17 PM Changeset in webkit [256908] by Kocsen Chung
  • 1 copy in tags/Safari-610.1.3.3

Tag Safari-610.1.3.3.

9:14 PM Changeset in webkit [256907] by Kocsen Chung
  • 62 edits in branches/safari-610.1.3-branch/Source

Cherry-pick r256791. rdar://problem/59577979

getVTablePointer() should return a const void*.
https://bugs.webkit.org/show_bug.cgi?id=207871
<rdar://problem/59525721>

Reviewed by Yusuke Suzuki.

Source/WebCore:

  • bindings/scripts/CodeGeneratorJS.pm: (GenerateImplementation):
  • bindings/scripts/test/JS/JSInterfaceName.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSMapLike.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSReadOnlyMapLike.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSReadOnlySetLike.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSSetLike.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestCEReactions.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestCallTracer.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestEnabledBySetting.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestEnabledForContext.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestEventConstructor.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestEventTarget.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestException.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestIterable.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNode.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestObj.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestPluginInterface.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestSerialization.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestStringifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestTypedefs.cpp: (WebCore::toJSNewlyCreated):

Source/WTF:

  • wtf/PointerPreparations.h: (WTF::getVTablePointer):

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

9:11 PM Changeset in webkit [256906] by Kocsen Chung
  • 8 edits in branches/safari-610.1.3-branch/Source

Versioning.

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

ASSERTION FAILED: !m_embeddedObjectsToUpdate->contains(nullptr) in WebCore::FrameView::updateEmbeddedObjects
https://bugs.webkit.org/show_bug.cgi?id=191532
<rdar://problem/46151555>

Patch by Jack Lee <Jack Lee> on 2020-02-18
Reviewed by Darin Adler.

Add reentrancy protection for FrameView::updateEmbeddedObjects().
Move the common code in renderWidgetLoadingPlugin() to inherited class, HTMLPlugInElement.

Source/WebCore:

Test: fast/text/textCombine-update-embeddedObj-assert.html

  • html/HTMLAppletElement.cpp:

(WebCore::HTMLAppletElement::renderWidgetLoadingPlugin const):

  • html/HTMLEmbedElement.cpp:

(WebCore::HTMLEmbedElement::renderWidgetLoadingPlugin const):

  • html/HTMLObjectElement.cpp:

(WebCore::HTMLObjectElement::renderWidgetLoadingPlugin const): Deleted.

  • html/HTMLObjectElement.h:
  • html/HTMLPlugInElement.cpp:

(WebCore::HTMLPlugInElement::renderWidgetLoadingPlugin const):

  • html/HTMLPlugInElement.h:
  • page/FrameView.cpp:

(WebCore::FrameView::updateEmbeddedObjects):

  • page/FrameView.h:

LayoutTests:

  • fast/text/textCombine-update-embeddedObj-assert-expected.txt: Added.
  • fast/text/textCombine-update-embeddedObj-assert.html: Added.
8:50 PM Changeset in webkit [256904] by youenn@apple.com
  • 7 edits in trunk/Source/WebCore

Reduce use of PlatformMediaSessionManager::sharedManager()
https://bugs.webkit.org/show_bug.cgi?id=207924

Reviewed by Eric Carlson.

The plan is to be able to have PlatformMediaSession in GPU process which might have different managers,
typically a manager per connection to web process.
For that reason, reduce the use of the sharedManager to classes that can only live in WebProcess.
No change of behavior.

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::MediaStreamTrack):

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::AudioContext):

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::MediaElementSession):
(WebCore::MediaElementSession::clientDataBufferingTimerFired):
(WebCore::MediaElementSession::setHasPlaybackTargetAvailabilityListeners):

  • platform/audio/PlatformMediaSession.cpp:

(WebCore::PlatformMediaSession::create):
(WebCore::PlatformMediaSession::PlatformMediaSession):
(WebCore::PlatformMediaSession::~PlatformMediaSession):
(WebCore::PlatformMediaSession::setState):
(WebCore::PlatformMediaSession::clientWillBeginPlayback):
(WebCore::PlatformMediaSession::processClientWillPausePlayback):
(WebCore::PlatformMediaSession::stopSession):
(WebCore::PlatformMediaSession::isPlayingToWirelessPlaybackTargetChanged):
(WebCore::PlatformMediaSession::canProduceAudioChanged):
(WebCore::PlatformMediaSession::clientCharacteristicsChanged):
(WebCore::PlatformMediaSession::manager):

  • platform/audio/PlatformMediaSession.h:
  • platform/audio/PlatformMediaSessionManager.h:
8:15 PM Changeset in webkit [256903] by Wenson Hsieh
  • 6 edits in trunk

REGRESSION (r256093): fast/events/touch/ios/block-without-overflow-scroll.html is failing
https://bugs.webkit.org/show_bug.cgi?id=207919
<rdar://problem/59565344>

Reviewed by Tim Horton.

Source/WebCore:

Three iOS-specific layout tests began to fail after r256093, since they currently depend on a particular
ordering when iterating over elements in a hash map. Instead of just rebaselining these tests, we can make them
more robust against similar changes in the future by forcing a deterministic order when printing out synchronous
touch event regions for testing.

I arbitrarily chose to sort the keys (which are touch event type names) in alphabetical order.

  • page/scrolling/ScrollingStateFrameScrollingNode.cpp:

(WebCore::ScrollingStateFrameScrollingNode::dumpProperties const):

LayoutTests:

Rebaseline some layout tests after changing the order in which synchronous touch event regions are dumped when
calling internals.scrollingStateTreeAsText().

  • fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-block-scrolling-state-expected.txt:
  • fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-document-scrolling-state-expected.txt:
  • fast/events/touch/ios/block-without-overflow-scroll-scrolling-state-expected.txt:
7:53 PM Changeset in webkit [256902] by Lauro Moura
  • 2 edits in trunk/Source/WebKit

[WebKit] Avoid segfault if editor client is null
https://bugs.webkit.org/show_bug.cgi?id=207925

Reviewed by Darin Adler.

Missing check was causing crashes running
editing/selection/selection-change-in-disconnected-frame-crash.html in
Mojave, iOS and GTK bots.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::editorState const):

7:38 PM Changeset in webkit [256901] by youenn@apple.com
  • 7 edits in trunk/Source/WebCore

PlatformMediaSessionClient::processingUserGestureForMedia is not needed
https://bugs.webkit.org/show_bug.cgi?id=207922

Reviewed by Eric Carlson.

All code relies on the document and the virtual method is never used so remove it.
No change of behavior.

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::processingUserGestureForMedia const): Deleted.

  • Modules/mediastream/MediaStreamTrack.h:
  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::processingUserGestureForMedia const): Deleted.

  • Modules/webaudio/AudioContext.h:
  • html/HTMLMediaElement.h:
  • platform/audio/PlatformMediaSession.h:
7:26 PM Changeset in webkit [256900] by youenn@apple.com
  • 16 edits in trunk/Source

SWServer::claim should check for the service worker to be active
https://bugs.webkit.org/show_bug.cgi?id=207739
<rdar://problem/45441129>

Reviewed by Alex Christensen.

Source/WebCore:

claim is only working for service workers that are active.
But there might be a time when a service worker is active in its web process but redundant in networking process.
Thus, we need to move the check from WebProcess to NetworkProcess.

  • workers/service/ServiceWorkerClients.cpp:

(WebCore::ServiceWorkerClients::claim):

  • workers/service/context/SWContextManager.h:
  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::claim):

  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerToContextConnection.cpp:

(WebCore::SWServerToContextConnection::claim):

  • workers/service/server/SWServerToContextConnection.h:
  • workers/service/server/SWServerWorker.cpp:

(WebCore::SWServerWorker::claim): Deleted.

  • workers/service/server/SWServerWorker.h:

(WebCore::SWServerWorker::isActive const):

Source/WebKit:

Use Async Reply to remove the need for a map and passing integers around.

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:

(WebKit::WebSWServerToContextConnection::claimCompleted): Deleted.

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::WebSWContextManagerConnection::claim):
(WebKit::WebSWContextManagerConnection::claimCompleted): Deleted.

  • WebProcess/Storage/WebSWContextManagerConnection.h:
  • WebProcess/Storage/WebSWContextManagerConnection.messages.in:
6:38 PM Changeset in webkit [256899] by Alan Coon
  • 18 edits in branches/safari-609-branch

Apply patch. rdar://problem/59465474

6:10 PM Changeset in webkit [256898] by Simon Fraser
  • 2 edits in branches/safari-609-branch/Source/JavaScriptCore

Unreviewed build fix.

  • jit/JITThunks.cpp:

(JSC::JITThunks::hostFunctionStub):

5:34 PM Changeset in webkit [256897] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Changed results due to ANGLE use
https://bugs.webkit.org/show_bug.cgi?id=207858

Unreviewed test gardening.

Remove conflict markers that were accidentally added as part of r256880,
remove duplicated expectation for a test, and move the expectations to the same
file as the rest of the ANGLE related failures.

  • platform/ios-wk2/TestExpectations:
  • platform/ios/TestExpectations:
5:29 PM Changeset in webkit [256896] by Alan Coon
  • 29 edits
    4 copies
    6 adds in branches/safari-609-branch

Cherry-pick r256191. rdar://problem/59447003

Disallow setting base URL to a data or JavaScript URL
https://bugs.webkit.org/show_bug.cgi?id=207136

Source/WebCore:

Reviewed by Brent Fulgham.

Inspired by <https://bugs.chromium.org/p/chromium/issues/detail?id=679318>.

Block setting the base URL to a data URL or JavaScript URL as such usage is questionable.
This makes WebKit match the behavior of Chrome and Firefox and is in the spirit of the
discussion in <https://github.com/whatwg/html/issues/2249>.

On Mac and iOS, this restriction is applied only to apps linked against a future SDK to
avoid breaking shipped apps.

For all other ports, this restriction is enabled by default.

Tests: fast/url/relative2.html

fast/url/segments-from-data-url2.html
http/tests/security/allowed-base-url-data-url-via-setting.html
http/tests/security/denied-base-url-data-url.html
http/tests/security/denied-base-url-javascript-url.html

  • dom/Document.cpp: (WebCore::Document::processBaseElement): Condition updating the parsed base URL on whether is has an allowed scheme, if restrictions are enabled. Otherwise, do what we do now. If the scheme is disallowed then log a message to the console to explain this to web developers.
  • html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::scan): Pass whether to apply restrictons to the base URL to updatePredictedBaseURL(). This depends on whether the setting is enabled or not. (WebCore::TokenPreloadScanner::updatePredictedBaseURL): Modifed to take a boolean as to whether to apply restrictions. If restrictions are not to be applied do what we do now. Otherwise, only do what we do now if the scheme for the predicated base URL is allowed.
  • html/parser/HTMLPreloadScanner.h:
  • page/SecurityPolicy.cpp: (WebCore::SecurityPolicy::isBaseURLSchemeAllowed): Added.
  • page/SecurityPolicy.h:
  • page/Settings.yaml: Add a setting to toggle restrictions on the base URL scheme.

Source/WebKit:

Reviewed by Brent Fulgham.

Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/Cocoa/WKWebView.mm: (shouldRestrictBaseURLSchemes): Added. (-[WKWebView _setupPageConfiguration:]): Update settings.
  • UIProcess/Cocoa/VersionChecks.h:

Source/WebKitLegacy/mac:

Reviewed by Brent Fulgham.

Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

  • Misc/WebKitVersionChecks.h:
  • WebView/WebView.mm: (shouldRestrictBaseURLSchemes): Added. (-[WebView _commonInitializationWithFrameName:groupName:]): Update settings.

Source/WTF:

Reviewed by Brent Fulgham.

Add some more macro definitions.

  • wtf/spi/darwin/dyldSPI.h:

LayoutTests:

RReviewed by Brent Fulgham.

Add some tests. Update others to toggle the setting to apply or unapply the new behavior.

The test denied-base-url-javascript-url.html is derived from the test base-url-javascript.html,
included in <https://chromium.googlesource.com/chromium/src.git/+/c133efa0b915430701930b76a7cfe35608b9a403>.

  • fast/url/relative-expected.txt:
  • fast/url/relative.html:
  • fast/url/relative2-expected.txt: Copied from LayoutTests/fast/url/relative-expected.txt.
  • fast/url/relative2.html: Copied from LayoutTests/fast/url/relative.html.
  • fast/url/resources/utilities.js: (setShouldEllipsizeFileURLPaths): Added. Toggles ellipsizing the path portion of a file URL to simplify matching. Otherwise, file URLs could be machine-specific. (canonicalizedPathname): Added. (segments): Modified to optionally call canonicalizedPathname. (canonicalize): Ditto.
  • fast/url/segments-from-data-url-expected.txt:
  • fast/url/segments-from-data-url.html:
  • fast/url/segments-from-data-url2-expected.txt: Copied from LayoutTests/fast/url/segments-from-data-url-expected.txt.
  • fast/url/segments-from-data-url2.html: Copied from LayoutTests/fast/url/segments-from-data-url.html.
  • fetch/fetch-url-serialization-expected.txt:
  • http/tests/plugins/navigation-during-load-embed.html:
  • http/tests/plugins/navigation-during-load.html:
  • http/tests/security/allowed-base-url-data-url-via-setting-expected.txt: Added.
  • http/tests/security/allowed-base-url-data-url-via-setting.html: Added.
  • http/tests/security/denied-base-url-data-url-expected.txt: Added.
  • http/tests/security/denied-base-url-data-url.html: Added.
  • http/tests/security/denied-base-url-javascript-url-expected.txt: Added.
  • http/tests/security/denied-base-url-javascript-url.html: Added.

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

5:23 PM Changeset in webkit [256895] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][IFC] Replaced elements can also establish formatting contexts.
https://bugs.webkit.org/show_bug.cgi?id=207923
<rdar://problem/59571203>

Reviewed by Simon Fraser.

Source/WebCore:

While replaced boxes (leaf boxes) can also establish formatting contexts (e.g. style="inline-block"), we
only need to construct formatting context objects for the root's descendants (and not for the root itself).

Test: fast/layoutformattingcontext/block-only/replaced-as-inline-block-simple.html

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):

LayoutTests:

  • fast/layoutformattingcontext/block-only/replaced-as-inline-block-simple-expected.html: Added.
  • fast/layoutformattingcontext/block-only/replaced-as-inline-block-simple.html: Added.
5:16 PM Changeset in webkit [256894] by Ryan Haddad
  • 6 edits in trunk/Tools

Unreviewed, rolling out r256851.

Broke internal bots

Reverted changeset:

"Stub repositories fail to upload some results due to missing
head svn revision"
https://bugs.webkit.org/show_bug.cgi?id=207684
https://trac.webkit.org/changeset/256851

5:14 PM Changeset in webkit [256893] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.3.1

Tag Safari-609.1.20.3.1.

5:12 PM Changeset in webkit [256892] by commit-queue@webkit.org
  • 27 edits
    1 copy
    3 moves
    16 adds
    6 deletes in trunk/Source

Allow different back-ends for ImageBuffer
https://bugs.webkit.org/show_bug.cgi?id=207048

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-02-18
Reviewed by Tim Horton.

Source/WebCore:

ImageBuffer will be re-factored to decouple the platform specifics and
the back-end details from the interface "ImageBuffer".

A class hierarchy for the ImageBufferBackend will added to allow code
sharing and to split the code according to the platform and the back-end
details.

ImageBuffer will be kept interface with the rest of the code but different
back-ends will be created. ConcreteImageBuffer is a template class which
inherits ImageBuffer and will act as a bridge to the concrete
ImageBufferBackend.

Based on the RenderingMode, a ConcreteImageBuffer<BackendType> will
be created. Instead of checking the renderingMode in many places of the
code and instead of and using preprocessor directives, all these decisions
will be made in the concrete ImageBufferBackend.

This re-factoring will allow creating new types of ImageBuffers backed by
new ImageBufferBackends. These new ImageBufferBackends will implement
DisplayList drawing and synchronize remote rendering.

  • Headers.cmake:
  • PlatformAppleWin.cmake:
  • PlatformFTW.cmake:
  • PlatformMac.cmake:
  • PlatformWin.cmake:
  • Sources.txt:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/CanvasBase.cpp:

(WebCore::CanvasBase::setImageBuffer const):

  • platform/Cairo.cmake:
  • platform/SourcesCairo.txt:
  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::nativeImageForCurrentFrameRespectingOrientation):

  • platform/graphics/ConcreteImageBuffer.h: Added.

(WebCore::ConcreteImageBuffer::create):
(WebCore::ConcreteImageBuffer::ConcreteImageBuffer):
(WebCore::ConcreteImageBuffer::ensureBackend const):
(WebCore::ConcreteImageBuffer::putImageData):

  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::create):
(WebCore::ImageBuffer::createCompatibleBuffer):
(WebCore::ImageBuffer::sizeNeedsClamping):
(WebCore::ImageBuffer::compatibleBufferSize):
(WebCore::ImageBuffer::sinkIntoNativeImage):
(WebCore::ImageBuffer::sinkIntoImage):
(WebCore::ImageBuffer::drawConsuming):
(WebCore::ImageBuffer::toBGRAData const): Deleted.
(WebCore::ImageBuffer::transformColorSpace): Deleted.
(WebCore::ImageBuffer::genericConvertToLuminanceMask): Deleted.
(WebCore::ImageBuffer::convertToLuminanceMask): Deleted.
(WebCore::ImageBuffer::platformLayer const): Deleted.
(WebCore::ImageBuffer::copyToPlatformTexture): Deleted.
(WebCore::ImageBuffer::memoryCost const): Deleted.
(WebCore::ImageBuffer::externalMemoryCost const): Deleted.

  • platform/graphics/ImageBuffer.h:

(WebCore::ImageBuffer::draw):
(WebCore::ImageBuffer::drawPattern):
(WebCore::ImageBuffer::drawConsuming):
(WebCore::ImageBuffer::putImageData):
(): Deleted.
(WebCore::ImageBuffer::internalSize const): Deleted.
(WebCore::ImageBuffer::logicalSize const): Deleted.
(WebCore::ImageBuffer::resolutionScale const): Deleted.
(WebCore::ImageBuffer::baseTransform const): Deleted.

  • platform/graphics/ImageBufferBackend.cpp: Added.

(WebCore::ImageBufferBackend::ImageBufferBackend):
(WebCore::ImageBufferBackend::calculateBackendSize):
(WebCore::ImageBufferBackend::sinkIntoNativeImage):
(WebCore::ImageBufferBackend::sinkIntoImage):
(WebCore::ImageBufferBackend::drawConsuming):
(WebCore::ImageBufferBackend::convertToLuminanceMask):
(WebCore::ImageBufferBackend::toBGRAData const):
(WebCore::copyPremultipliedToPremultiplied):
(WebCore::copyPremultipliedToUnpremultiplied):
(WebCore::copyUnpremultipliedToPremultiplied):
(WebCore::copyFunctor):
(WebCore::ImageBufferBackend::copyImagePixels const):
(WebCore::ImageBufferBackend::getImageData const):
(WebCore::ImageBufferBackend::putImageData):

  • platform/graphics/ImageBufferBackend.h: Added.

(WebCore::ImageBufferBackend::flushContext):
(WebCore::ImageBufferBackend::logicalSize const):
(WebCore::ImageBufferBackend::backendSize const):
(WebCore::ImageBufferBackend::resolutionScale const):
(WebCore::ImageBufferBackend::colorSpace const):
(WebCore::ImageBufferBackend::baseTransform const):
(WebCore::ImageBufferBackend::memoryCost const):
(WebCore::ImageBufferBackend::externalMemoryCost const):
(WebCore::ImageBufferBackend::transformColorSpace):
(WebCore::ImageBufferBackend::platformLayer const):
(WebCore::ImageBufferBackend::copyToPlatformTexture const):
(WebCore::ImageBufferBackend::bytesPerRow const):
(WebCore::ImageBufferBackend::backendColorFormat const):
(WebCore::ImageBufferBackend::toBackendCoordinates const):
(WebCore::ImageBufferBackend::logicalRect const):
(WebCore::ImageBufferBackend::backendRect const):

  • platform/graphics/PlatformImageBuffer.h: Added.
  • platform/graphics/ShadowBlur.cpp:

(WebCore::ShadowBlur::drawShadowBuffer):

  • platform/graphics/cairo/CairoOperations.cpp:

(WebCore::Cairo::drawShadowLayerBuffer):
(WebCore::Cairo::drawShadowImage):
(WebCore::Cairo::fillShadowBuffer):

  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContext::clipToImageBuffer):

  • platform/graphics/cairo/GraphicsContextImplCairo.cpp:

(WebCore::GraphicsContextImplCairo::clipToImageBuffer):

  • platform/graphics/cairo/ImageBufferCairo.cpp: Removed.
  • platform/graphics/cairo/ImageBufferCairoBackend.cpp: Added.

(WebCore::ImageBufferCairoBackend::copyImage const):
(WebCore::ImageBufferCairoBackend::draw):
(WebCore::ImageBufferCairoBackend::drawPattern):
(WebCore::ImageBufferCairoBackend::transformColorSpace):
(WebCore::ImageBufferCairoBackend::toDataURL const):
(WebCore::ImageBufferCairoBackend::toData const):

  • platform/graphics/cairo/ImageBufferCairoBackend.h: Added.

(WebCore::ImageBufferCairoBackend::platformTransformColorSpace):

  • platform/graphics/cairo/ImageBufferCairoGLSurfaceBackend.cpp: Added.

(WebCore::clearSurface):
(WebCore::ImageBufferCairoGLSurfaceBackend::create):
(WebCore::ImageBufferCairoGLSurfaceBackend::ImageBufferCairoGLSurfaceBackend):
(WebCore::ImageBufferCairoGLSurfaceBackend::~ImageBufferCairoGLSurfaceBackend):
(WebCore::ImageBuffer::platformLayer const):
(WebCore::ImageBufferCairoGLSurfaceBackend::copyToPlatformTexture):
(WebCore::ImageBufferCairoGLSurfaceBackend::createCompositorBuffer):
(WebCore::ImageBufferCairoGLSurfaceBackend::swapBuffersIfNeeded):
(WebCore::ImageBufferCairoGLSurfaceBackend::paintToTextureMapper):

  • platform/graphics/cairo/ImageBufferCairoGLSurfaceBackend.h: Added.
  • platform/graphics/cairo/ImageBufferCairoImageSurfaceBackend.cpp: Added.

(WebCore::ImageBufferCairoImageSurfaceBackend::create):
(WebCore::ImageBufferCairoImageSurfaceBackend::ImageBufferCairoImageSurfaceBackend):
(WebCore::ImageBufferCairoImageSurfaceBackend::platformTransformColorSpace):

  • platform/graphics/cairo/ImageBufferCairoImageSurfaceBackend.h: Added.
  • platform/graphics/cairo/ImageBufferCairoSurfaceBackend.cpp: Added.

(WebCore::ImageBufferCairoSurfaceBackend::ImageBufferCairoSurfaceBackend):
(WebCore::ImageBufferCairoSurfaceBackend::context const):
(WebCore::ImageBufferCairoSurfaceBackend::bytesPerRow const):
(WebCore::ImageBufferCairoSurfaceBackend::copyNativeImage const):
(WebCore::ImageBufferCairoSurfaceBackend::cairoSurfaceCoerceToImage const):
(WebCore::ImageBufferCairoSurfaceBackend::toBGRAData const):
(WebCore::ImageBufferCairoSurfaceBackend::getImageData const):
(WebCore::ImageBufferCairoSurfaceBackend::putImageData):

  • platform/graphics/cairo/ImageBufferCairoSurfaceBackend.h: Added.
  • platform/graphics/cg/ImageBufferCG.cpp: Removed.
  • platform/graphics/cg/ImageBufferCGBackend.cpp: Added.

(WebCore::ImageBufferCGBackend::contextColorSpace):
(WebCore::ImageBufferCGBackend::setupContext):
(WebCore::createCroppedImageIfNecessary):
(WebCore::createBitmapImageAfterScalingIfNeeded):
(WebCore::ImageBufferCGBackend::copyImage const):
(WebCore::ImageBufferCGBackend::sinkIntoImage):
(WebCore::ImageBufferCGBackend::draw):
(WebCore::ImageBufferCGBackend::drawPattern):
(WebCore::ImageBufferCGBackend::baseTransform const):
(WebCore::ImageBufferCGBackend::toCFData const):
(WebCore::ImageBufferCGBackend::toData const):
(WebCore::ImageBufferCGBackend::toDataURL const):
(WebCore::makeVImageBuffer):
(WebCore::copyImagePixelsAccelerated):
(WebCore::ImageBufferCGBackend::copyImagePixels const):

  • platform/graphics/cg/ImageBufferCGBackend.h: Added.
  • platform/graphics/cg/ImageBufferCGBitmapBackend.cpp: Added.

(WebCore::ImageBufferCGBitmapBackend::create):
(WebCore::ImageBufferCGBitmapBackend::ImageBufferCGBitmapBackend):
(WebCore::ImageBufferCGBitmapBackend::context const):
(WebCore::ImageBufferCGBitmapBackend::copyNativeImage const):
(WebCore::ImageBufferCGBitmapBackend::toBGRAData const):
(WebCore::ImageBufferCGBitmapBackend::getImageData const):
(WebCore::ImageBufferCGBitmapBackend::putImageData):

  • platform/graphics/cg/ImageBufferCGBitmapBackend.h: Added.
  • platform/graphics/cg/ImageBufferDataCG.cpp: Removed.
  • platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp: Added.

(WebCore::ImageBufferIOSurfaceBackend::calculateBackendSize):
(WebCore::ImageBufferIOSurfaceBackend::contextColorSpace):
(WebCore::ImageBufferIOSurfaceBackend::create):
(WebCore::ImageBufferIOSurfaceBackend::ImageBufferIOSurfaceBackend):
(WebCore::ImageBufferIOSurfaceBackend::context const):
(WebCore::ImageBufferIOSurfaceBackend::flushContext):
(WebCore::ImageBufferIOSurfaceBackend::memoryCost const):
(WebCore::ImageBufferIOSurfaceBackend::externalMemoryCost const):
(WebCore::ImageBufferIOSurfaceBackend::bytesPerRow const):
(WebCore::ImageBufferIOSurfaceBackend::backendColorFormat const):
(WebCore::ImageBufferIOSurfaceBackend::copyNativeImage const):
(WebCore::ImageBufferIOSurfaceBackend::sinkIntoNativeImage):
(WebCore::ImageBufferIOSurfaceBackend::drawConsuming):
(WebCore::ImageBufferIOSurfaceBackend::toBGRAData const):
(WebCore::ImageBufferIOSurfaceBackend::getImageData const):
(WebCore::ImageBufferIOSurfaceBackend::putImageData):

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.h: Added.
  • platform/graphics/cg/PDFDocumentImage.cpp:

(WebCore::PDFDocumentImage::updateCachedImageIfNeeded):

  • platform/graphics/cocoa/IOSurface.mm:

(WebCore::IOSurface::createFromImageBuffer): Deleted.

  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToCanvas):

  • platform/graphics/win/ImageBufferDataDirect2D.cpp: Removed.
  • platform/graphics/win/ImageBufferDataDirect2D.h: Removed.
  • platform/graphics/win/ImageBufferDirect2D.cpp: Removed.
  • platform/graphics/win/ImageBufferDirect2DBackend.cpp: Added.

(WebCore::ImageBufferDirect2DBackend::create):
(WebCore::ImageBufferDirect2DBackend::ImageBufferDirect2DBackend):
(WebCore::ImageBufferDirect2DBackend::context const):
(WebCore::ImageBufferDirect2DBackend::flushContext):
(WebCore::ImageBufferDirect2DBackend::copyNativeImage const):
(WebCore::createCroppedImageIfNecessary):
(WebCore::createBitmapImageAfterScalingIfNeeded):
(WebCore::ImageBufferDirect2DBackend::copyImage const):
(WebCore::ImageBufferDirect2DBackend::sinkIntoImage):
(WebCore::ImageBufferDirect2DBackend::compatibleBitmap):
(WebCore::ImageBufferDirect2DBackend::draw):
(WebCore::ImageBufferDirect2DBackend::drawPattern):
(WebCore::ImageBufferDirect2DBackend::toDataURL const):
(WebCore::ImageBufferDirect2DBackend::toData const):
(WebCore::ImageBufferDirect2DBackend::toBGRAData const):
(WebCore::ImageBufferDirect2DBackend::getImageData const):
(WebCore::ImageBufferDirect2DBackend::putImageData):

  • platform/graphics/win/ImageBufferDirect2DBackend.h: Added.
  • platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp:

(WebCore::WrappedMockRealtimeVideoSource::updateSampleBuffer):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::bufferForeground):

Source/WebKit:

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::createSelectionSnapshot const):

5:12 PM Changeset in webkit [256891] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.2.1

Tag Safari-609.1.20.2.1.

5:06 PM Changeset in webkit [256890] by youenn@apple.com
  • 8 edits in trunk/Source/WebKit

Add support for WebInspector WebSocket handshake in the new WebSocket code path
https://bugs.webkit.org/show_bug.cgi?id=207913

Reviewed by Alex Christensen.

Whenever creating the WebSocketTask, pass the request actually used for handshake to the WebProcess.
Whenever being connected, pass the request actually used for handshake to the WebProcess.
In case of failure before the web socket is connected, we send the response if we can get a non null from the task.

  • NetworkProcess/NetworkSocketChannel.cpp:

(WebKit::NetworkSocketChannel::didSendHandshakeRequest):
(WebKit::NetworkSocketChannel::didReceiveHandshakeResponse):

  • NetworkProcess/NetworkSocketChannel.h:
  • NetworkProcess/cocoa/WebSocketTaskCocoa.mm:

(WebKit::WebSocketTask::WebSocketTask):
(WebKit::WebSocketTask::didConnect):

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::connect):
(WebKit::WebSocketChannel::didConnect):
(WebKit::WebSocketChannel::didSendHandshakeRequest):
(WebKit::WebSocketChannel::didReceiveHandshakeResponse):

  • WebProcess/Network/WebSocketChannel.h:
  • WebProcess/Network/WebSocketChannel.messages.in:
4:49 PM Changeset in webkit [256889] by Fujii Hironori
  • 7 edits in trunk/Tools

[Win][MiniBrowser] Support back/forward mouse buttons by handing APPCOMMAND_BROWSER_BACKWARD and APPCOMMAND_BROWSER_FORWARD
https://bugs.webkit.org/show_bug.cgi?id=207883

Reviewed by Ross Kirsling.

Unlike other mouse buttons, 4th and 5th mouse buttons are
processed differently. Clicking them dispatches WM_XBUTTONDOWN and
WM_XBUTTONUP events to the window under the mouse cursor.
Unhandled WM_XBUTTONUP events are automatically converted to
WM_APPCOMMAND. And, unhandle WM_APPCOMMAND are propagated to the
parent window.
<https://docs.microsoft.com/en-us/windows/win32/inputdev/wm-appcommand>

Unlike other WM_* commands, WM_APPCOMMAND should return 1 if it is
handled.

  • MiniBrowser/win/BrowserWindow.h:
  • MiniBrowser/win/MainWindow.cpp:

(MainWindow::WndProc):

  • MiniBrowser/win/WebKitBrowserWindow.cpp:

(WebKitBrowserWindow::navigateForwardOrBackward):

  • MiniBrowser/win/WebKitBrowserWindow.h:
  • MiniBrowser/win/WebKitLegacyBrowserWindow.cpp:

(WebKitLegacyBrowserWindow::navigateForwardOrBackward):

  • MiniBrowser/win/WebKitLegacyBrowserWindow.h:
4:48 PM Changeset in webkit [256888] by Russell Epstein
  • 9 edits
    1 add in branches/safari-609-branch

Cherry-pick r256779. rdar://problem/59551695

[JSC] JITThunk should be HashSet<Weak<NativeExecutable>> with appropriate GC weakness handling
https://bugs.webkit.org/show_bug.cgi?id=207715

Reviewed by Darin Adler.

JSTests:

  • stress/stress-jitthunks.js: Added. (let.set newGlobal): (set catch):

Source/JavaScriptCore:

This patch refines JITThunks GC-aware Weak hash map for NativeExecutable. Previously, we have
HashMap<std::tuple<TaggedNativeFunction, TaggedNativeFunction, String>, Weak<NativeExecutable>> table.
But this is not good because the first tuple's information is already in NativeExecutable.
But we were using this design since Weak<NativeExecutable> can be nullified because of Weak<>. If this
happens, we could have invalid Entry in HashMap which does not have corresponding values. This will
cause crash when rehasing requires hash code for this entry.

But this HashMap is very bad in terms of memory usage. Each entry has 32 bytes, and this table gets enough
large. We identified that this table is consuming much memory in Membuster. So it is worth designing
carefully crafted data structure which only holds Weak<NativeExecutable> by leveraging the deep interaction
with our GC implementation.

This patch implements new design of JITThunks, which uses HashSet<Weak<NativeExecutable>> and carefully crafted
HashTraits / KeyTraits to handle Weak<> well.

  1. Each Weak should have finalizer, and this finalizer should remove dead Weak<NativeExecutable> from HashSet.

This is ensuring that all the keys in HashSet is, even if Weak<> is saying it is Dead, it still has an way
to access content of NativeExecutable if the content is not a JS objects. For example, we can get function
pointer from dead Weak<NativeExecutable> if it is not yet finalized. Since we remove all finalized Weak<>
from the table, this finalizer mechanism allows us to access function pointers etc. from Weak<NativeExecutable>
so long as it is held in this table.

  1. Getting NativeExecutable* from JITThunks should have special protocol.

When getting NativeExecutable* from JITThunks, we do the following,

  1. First, we check we have an Entry in JITThunks. If it does not exist, we should insert it anyway.

1.1. If it exists, we should check whether this Weak<NativeExecutable> is dead or not. It is possible that

dead one is still in the table because "dead" does not mean that it is "finalized". Until finalizing happens (and
it can be delayed by incremental-sweeper), Weak<NativeExecutable> can be dead but still accessible. So the table
is still holding dead one. If we get dead one, we should insert a new one.

1.2. If it is not dead, we return it.

  1. Second, we create a new NativeExecutable and insert it. In that case, it is possible that the table already has Weak<NativeExecutable>, but it is dead. In that case, we need to explicitly replace it with newly created one since old one is holding old content. If we replaced, finalizer of Weak<> will not be invoked since it immediately deallocates Weak<>. So, it does not happen that this newly inserted NativeExecutable* is removed by the finalizer registered by the old Weak<>.

This change makes memory usage of JITThunks table 1/4.

  • heap/Weak.cpp: (JSC::weakClearSlowCase):
  • heap/Weak.h: (JSC::Weak::Weak): (JSC::Weak::isHashTableEmptyValue const): (JSC::Weak::unsafeImpl const): (WTF::HashTraits<JSC::Weak<T>>::isEmptyValue):
  • heap/WeakInlines.h: (JSC::Weak<T>::Weak):
  • jit/JITThunks.cpp: (JSC::JITThunks::JITThunks): (JSC::JITThunks::WeakNativeExecutableHash::hash): (JSC::JITThunks::WeakNativeExecutableHash::equal): (JSC::JITThunks::HostKeySearcher::hash): (JSC::JITThunks::HostKeySearcher::equal): (JSC::JITThunks::NativeExecutableTranslator::hash): (JSC::JITThunks::NativeExecutableTranslator::equal): (JSC::JITThunks::NativeExecutableTranslator::translate): (JSC::JITThunks::finalize): (JSC::JITThunks::hostFunctionStub): (JSC::JITThunks::clearHostFunctionStubs): Deleted.
  • jit/JITThunks.h:
  • runtime/NativeExecutable.h:
  • tools/JSDollarVM.cpp: (JSC::functionGCSweepAsynchronously): (JSC::functionCreateEmptyFunctionWithName): (JSC::JSDollarVM::finishCreation):

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

4:48 PM Changeset in webkit [256887] by Russell Epstein
  • 3 edits
    1 add in branches/safari-609-branch

Cherry-pick r256766. rdar://problem/59551706

[Wasm] REGRESSION(r256665): Wasm->JS call IC needs to save memory size register
https://bugs.webkit.org/show_bug.cgi?id=207849

Reviewed by Mark Lam.

JSTests:

  • wasm/regress/regress-256665.js: Added. (f):

Source/JavaScriptCore:

When generating the call IC, we should select the callee saves using BoundsChecking mode in order
to obey to the calling conventions described in r256665. Currently, we won't restore the memory size
register when calling the Wasm LLInt through the call IC.

  • wasm/js/WebAssemblyFunction.cpp: (JSC::WebAssemblyFunction::calleeSaves const):

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

4:47 PM Changeset in webkit [256886] by Russell Epstein
  • 3 edits in branches/safari-609-branch/JSTests

Cherry-pick r256698. rdar://problem/59551715

Unreviewed: fix broken tests added in r256665
https://bugs.webkit.org/show_bug.cgi?id=207727

Our inline WAT doesn't seem to like named blocks/branch targets.

  • wasm/regress/llint-callee-saves-with-fast-memory.js:
  • wasm/regress/llint-callee-saves-without-fast-memory.js:

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

4:47 PM Changeset in webkit [256885] by Russell Epstein
  • 9 edits
    2 adds in branches/safari-609-branch

Cherry-pick r256665. rdar://problem/59551715

[WASM] Wasm interpreter's calling convention doesn't match Wasm JIT's convention.
https://bugs.webkit.org/show_bug.cgi?id=207727

JSTests:

Reviewed by Mark Lam.

  • wasm/regress/llint-callee-saves-with-fast-memory.js: Added.
  • wasm/regress/llint-callee-saves-without-fast-memory.js: Added.

Source/JavaScriptCore:

Reviewed by Mark Lam.

The Wasm JIT has unusual calling conventions, which were further complicated by the addition
of the interpreter, and the interpreter did not correctly follow these conventions (by incorrectly
saving and restoring the callee save registers used for the memory base and size). Here's a summary
of the calling convention:

  • When entering Wasm from JS, the wrapper must:
    • Preserve the base and size when entering LLInt regardless of the mode. (Prior to this patch we only preserved the base in Signaling mode)
    • Preserve the memory base in either mode, and the size for BoundsChecking.
  • Both tiers must preserve every *other* register they use. e.g. the LLInt must preserve PB and wasmInstance, but must *not* preserve memoryBase and memorySize.
  • Changes to memoryBase and memorySize are visible to the caller. This means that:
    • Intra-module calls can assume these registers are up-to-date even if the memory was resized. The only exception here is if the LLInt calls a signaling JIT, in which case the JIT will not update the size register, since it won't be using it.
    • Inter-module and JS calls require the caller to reload these registers. These calls may result in memory changes (e.g. the callee may call memory.grow).
    • A Signaling JIT caller must be aware that the LLInt may trash the size register, since it always bounds checks.
  • llint/WebAssembly.asm:
  • wasm/WasmAirIRGenerator.cpp: (JSC::Wasm::AirIRGenerator::addCall):
  • wasm/WasmB3IRGenerator.cpp: (JSC::Wasm::B3IRGenerator::addCall):
  • wasm/WasmCallee.cpp: (JSC::Wasm::LLIntCallee::calleeSaveRegisters):
  • wasm/WasmCallingConvention.h:
  • wasm/WasmLLIntPlan.cpp: (JSC::Wasm::LLIntPlan::didCompleteCompilation):
  • wasm/WasmMemoryInformation.cpp: (JSC::Wasm::PinnedRegisterInfo::get): (JSC::Wasm::getPinnedRegisters): Deleted.

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

4:47 PM Changeset in webkit [256884] by Russell Epstein
  • 8 edits in branches/safari-609-branch/Source

Versioning.

4:31 PM Changeset in webkit [256883] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[First paint] Remove elementOverflowRectIsLargerThanThreshold check in qualifiesAsVisuallyNonEmpty
https://bugs.webkit.org/show_bug.cgi?id=207907
<rdar://problem/59562169>

Reviewed by Geoffrey Garen.

This is in preparation for being able to qualify for visually non-empty content without looking at geometry.
This check was added long ago, initially with a 200px value which got reduced to 48px to reduce painting latency on google search result page.
At this point a 48px threshold does not make too much sense.

  • page/FrameView.cpp:

(WebCore::FrameView::qualifiesAsSignificantRenderedText const):
(WebCore::FrameView::qualifiesAsVisuallyNonEmpty const):
(WebCore::elementOverflowRectIsLargerThanThreshold): Deleted.

4:21 PM Changeset in webkit [256882] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Do not eagerly launch WebProcess when WKPagePostMessageToInjectedBundle() is called
https://bugs.webkit.org/show_bug.cgi?id=207905

Reviewed by Alex Christensen.

Do not eagerly launch WebProcess when WKPagePostMessageToInjectedBundle() is called. It is bad for
performance as we cannot leverage the process cache if we don't know the domain of the site that
will be loaded.

Instead we now queue those injected bundle messages until we really need to launch the process.

No new tests, WebKitTestRunner extensively relies on this private API already, and was the
reason we did the eager process launch in the first place (https://trac.webkit.org/changeset/243156).

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::launchProcess):

  • UIProcess/WebPageProxy.h:
4:13 PM Changeset in webkit [256881] by Chris Dumez
  • 6 edits in trunk/Source/WebKit

Drop getSandboxExtensionsForBlobFiles() as it is dead code
https://bugs.webkit.org/show_bug.cgi?id=207909
<rdar://problem/59562180>

Reviewed by Per Arne Vollan.

  • NetworkProcess/NetworkProcess.cpp:
  • NetworkProcess/NetworkProcess.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:
  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
4:10 PM Changeset in webkit [256880] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

Changed results due to ANGLE use
https://bugs.webkit.org/show_bug.cgi?id=207858

Unreviewed test gardening

  • platform/ios-wk2/TestExpectations: updating expectations for 2 more tests that surfaced as failures.
4:01 PM Changeset in webkit [256879] by Alan Coon
  • 3 edits in branches/safari-609.1.20.2-branch/Source/WebCore

Revert r256689. rdar://problem/59478731

4:01 PM Changeset in webkit [256878] by Alan Coon
  • 2 edits in branches/safari-609.1.20.2-branch/Source/JavaScriptCore

Revert r256690. rdar://problem/59478994

4:01 PM Changeset in webkit [256877] by Alan Coon
  • 16 edits in branches/safari-609.1.20.2-branch/Source

Revert r256691. rdar://problem/59478881

4:01 PM Changeset in webkit [256876] by Alan Coon
  • 5 edits in branches/safari-609.1.20.2-branch/Source

Revert r256692. rdar://problem/59478929

4:01 PM Changeset in webkit [256875] by Alan Coon
  • 2 edits in branches/safari-609.1.20.2-branch/Source/WebCore

Revert r256696. rdar://problem/59478734

4:01 PM Changeset in webkit [256874] by Alan Coon
  • 2 edits in branches/safari-609.1.20.2-branch/Source/WebCore

Revert r256746. rdar://problem/59478731

3:53 PM Changeset in webkit [256873] by Alan Coon
  • 3 edits in branches/safari-609.1.20.3-branch/Source/WebCore

Revert r256689. rdar://problem/59478731

3:53 PM Changeset in webkit [256872] by Alan Coon
  • 2 edits in branches/safari-609.1.20.3-branch/Source/JavaScriptCore

Revert r256690. rdar://problem/59478994

3:53 PM Changeset in webkit [256871] by Alan Coon
  • 16 edits in branches/safari-609.1.20.3-branch/Source

Revert r256691. rdar://problem/59478881

3:52 PM Changeset in webkit [256870] by Alan Coon
  • 5 edits in branches/safari-609.1.20.3-branch/Source

Revert r256692. rdar://problem/59478929

3:52 PM Changeset in webkit [256869] by Alan Coon
  • 2 edits in branches/safari-609.1.20.3-branch/Source/WebCore

Revert r256696. rdar://problem/59478734

3:52 PM Changeset in webkit [256868] by Alan Coon
  • 2 edits in branches/safari-609.1.20.3-branch/Source/WebCore

Revert r256746. rdar://problem/59478731

3:48 PM Changeset in webkit [256867] by achristensen@apple.com
  • 6 edits in trunk

Expand WKRemoteObjectCoder supported POD types to encode NSURLResponse types
https://bugs.webkit.org/show_bug.cgi?id=207912
<rdar://problem/59556922>

Reviewed by Brian Weinstein.

Source/WebKit:

This expands on r158806. There's no reason not to support all NSNumber types, so I did.
Covered by API tests.

  • Shared/API/Cocoa/WKRemoteObjectCoder.mm:

(encodeInvocationArguments):
(-[WKRemoteObjectEncoder encodeValueOfObjCType:at:]):
(-[WKRemoteObjectDecoder decodeValueOfObjCType:at:]):
(decodeInvocationArguments):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h:
  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm:

(-[RemoteObjectRegistryPlugIn sendRequest:response:challenge:error:completionHandler:]):

3:31 PM Changeset in webkit [256866] by Alan Coon
  • 8 edits in branches/safari-609.1.20.2-branch/Source

Versioning.

3:31 PM Changeset in webkit [256865] by Alan Coon
  • 8 edits in branches/safari-609.1.20.3-branch/Source

Versioning.

3:27 PM Changeset in webkit [256864] by dbates@webkit.org
  • 17 edits in trunk/Source

Ask the EditorClient whether to reveal the current selection after insertion
https://bugs.webkit.org/show_bug.cgi?id=207866
<rdar://problem/59553028>

Reviewed by Wenson Hsieh.

Source/WebCore:

Adds a new EditorClient function shouldRevealCurrentSelectionAfterInsertion() that returns whether
the client wants the engine to reveal the current selection after insertion. The default implementation
always returns true. On iOS it returns the result of WebPage::shouldRevealCurrentSelectionAfterInsertion().

  • editing/Editor.cpp:

(WebCore::Editor::insertTextWithoutSendingTextEvent): Call EditorClient::shouldRevealCurrentSelectionAfterInsertion().
If it returns false then skip the code to reveal the current selection: the UI process will call back
into WebPage::setShouldRevealCurrentSelectionAfterInsertion() when it is ready to reveal the current
selection. Otherwise, do what we do now.

  • editing/Editor.h:
  • page/EditorClient.h:

(WebCore::EditorClient::shouldRevealCurrentSelectionAfterInsertion const): Added.

  • page/Page.cpp:

(WebCore::Page::revealCurrentSelection): Added.

  • page/Page.h:

Source/WebKit:

On iOS, adds a new WebPage message SetShouldRevealCurrentSelectionAfterInsertion that the
UI process can send to toggle whether the current selection should be revealed after a
text insertion.

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

(WebKit::WebPageProxy::setWaitingForPostLayoutEditorStateUpdateAfterFocusingElement):

  • UIProcess/ios/WKContentViewInteraction.h:

Add some declarations for some functions that I need to make the corresponding Apple Internal fix in <rdar://problem/57608794>.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):
If we are not going to zoom to reveal the focused element immediately then call WebPage::setWaitingForPostLayoutEditorStateUpdateAfterFocusingElement(true)
so that we schedule a -_didUpdateEditorState callback on the next editor state update so that we can call
-_zoomToRevealFocusedElement.
(-[WKContentView _elementDidBlur]): Call WebPage::setWaitingForPostLayoutEditorStateUpdateAfterFocusingElement(false)
to unschedule an existing -_didUpdateEditorState callback.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::elementDidFocus):
(WebKit::WebPageProxy::elementDidBlur):
Move the setting of m_waitingForPostLayoutEditorStateUpdateAfterFocusingElement from here to
-_elementDidFocus and _elementDidBlur when an element is focused or blurred, respectively.

(WebKit::WebPageProxy::setShouldRevealCurrentSelectionAfterInsertion): Added.

  • WebProcess/WebCoreSupport/WebEditorClient.h:
  • WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:

(WebKit::WebEditorClient::shouldRevealCurrentSelectionAfterInsertion const): Added.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::editorState const): Mark the editor state as ignoring selection changes if EditorClient::shouldRevealCurrentSelectionAfterInsertion()
returns false.
(WebKit::WebPage::didCommitLoad): Reset state.

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::shouldRevealCurrentSelectionAfterInsertion const):

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

(WebKit::WebPage::updateSelectionAppearance): Do not send an update if EditorClient::shouldRevealCurrentSelectionAfterInsertion()
returns false.
(WebKit::WebPage::setShouldRevealCurrentSelectionAfterInsertion): Added. Update state, if needed. If passed
false, then reveal the current selection just as we would have done after an insertion and schedule a full
editor state update (i.e. an update after layout is performed). The latter will trigger the UI process on iOS
to zoom to reveal the newly focused element.

3:18 PM Changeset in webkit [256863] by Russell Epstein
  • 1 edit in branches/safari-609-branch/Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp

Unreviewed build fix.

3:18 PM Changeset in webkit [256862] by Russell Epstein
  • 28 edits
    10 deletes in branches/safari-609-branch

Revert "Cherry-pick r256191. rdar://problem/59447003"

This reverts commit r256796.

3:16 PM Changeset in webkit [256861] by Alan Coon
  • 1 copy in branches/safari-609.1.20.3-branch

New branch.

3:16 PM Changeset in webkit [256860] by Alan Coon
  • 1 copy in branches/safari-609.1.20.2-branch

New branch.

3:15 PM Changeset in webkit [256859] by Wenson Hsieh
  • 9 edits
    2 adds in trunk

[macOS] Web process may crash under ServicesOverlayController::buildPotentialHighlightsIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=207899
<rdar://problem/55658207>

Reviewed by Tim Horton and Simon Fraser.

Source/WebCore:

Mitigates a null pointer crash in ServicesOverlayController::buildPotentialHighlightsIfNeeded(), wherein the
focused frame may not have a FrameView when the ServicesOverlayController's selection invalidation timer fires.
This is possible if, while being focused, the newly focused subframe is unparented and reparented, which causes
it to momentarily have a null view. During this time, if a selection change had occurred earlier in the runloop,
it will schedule the page overlay controller invalidation timer, which will fire and discover that the currently
focused frame no longer has a FrameView.

Test: editing/selection/selection-change-in-disconnected-frame-crash.html

  • page/mac/ServicesOverlayController.mm:

(WebCore::ServicesOverlayController::buildSelectionHighlight):

Source/WebKit:

Add another missing null check on iOS, for the case where FrameView is null.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::platformEditorState const):

Tools:

Make it possible to run tests on macOS with services controls enabled, via a new TestOptions flag.

  • WebKitTestRunner/TestController.cpp:

(WTR::updateTestOptionsFromTestHeader):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::platformCreateWebView):

LayoutTests:

Add a new layout test to verify that we don't crash under this circumstance.

  • editing/selection/selection-change-in-disconnected-frame-crash-expected.txt: Added.
  • editing/selection/selection-change-in-disconnected-frame-crash.html: Added.
3:11 PM Changeset in webkit [256858] by Alan Coon
  • 1 copy in tags/Safari-609.1.20

Tag Safari-609.1.20.

3:09 PM Changeset in webkit [256857] by youenn@apple.com
  • 3 edits in trunk/Source/WebKit

NetworkDataTask should not expect its session wrapper to be always live
https://bugs.webkit.org/show_bug.cgi?id=207903
rdar://problem/59291486

Reviewed by Alex Christensen.

NetworkDataTaskCocoa should take a weak pointer to its session wrapper.
If the session wrapper is still valid, then we can remove the task from the session wrapper map.
We cannot guarantee session wrapper is valid since NetworkDataTask is ref counted.

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

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):

2:52 PM Changeset in webkit [256856] by Peng Liu
  • 3 edits in trunk/Source/WebCore

MediaSource.isTypeSupported() says "video/mp4;codecs=\"avc3.42C015\"" is not supported, but it is
https://bugs.webkit.org/show_bug.cgi?id=207622

Reviewed by Eric Carlson.

Revert the behavior change of MediaPlayerPrivateMediaSourceAVFObjC::supportsType() in r253952.

  • platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm:

(WebCore::AVAssetMIMETypeCache::canDecodeExtendedType):

2:41 PM Changeset in webkit [256855] by Alan Coon
  • 1 copy in tags/Safari-610.1.3.2

Tag Safari-610.1.3.2.

2:31 PM Changeset in webkit [256854] by Alan Coon
  • 8 edits in branches/safari-610.1.3-branch/Source

Versioning.

1:58 PM Changeset in webkit [256853] by Antti Koivisto
  • 8 edits in trunk/Source

[macOS] Don't fire timers when there is a pending rendering update
https://bugs.webkit.org/show_bug.cgi?id=207889

Reviewed by Simon Fraser.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:
  • dom/WindowEventLoop.cpp:

(WebCore::WindowEventLoop::breakToAllowRenderingUpdate):

Add the exported interface to WindowEventLoop as the future direction is to do everything via it.
For now it just calls into ThreadTimers rather than doing anything with the event loop itself.

  • dom/WindowEventLoop.h:
  • platform/ThreadTimers.cpp:

(WebCore::ThreadTimers::sharedTimerFiredInternal):
(WebCore::ThreadTimers::breakFireLoopForRenderingUpdate):

If we are in a firing timer set a flag so that no more timers are fired during the current runloop cycle.

  • platform/ThreadTimers.h:

Source/WebKit:

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::scheduleRenderingUpdateRunLoopObserver):

Ensure the event loop cycles to reach the runloop observer as fast as possible.

1:45 PM Changeset in webkit [256852] by Alan Coon
  • 8 edits in trunk/Source

Versioning.

12:17 PM Changeset in webkit [256851] by Matt Lewis
  • 6 edits in trunk/Tools

Stub repositories fail to upload some results due to missing head svn revision
https://bugs.webkit.org/show_bug.cgi?id=207684

Reviewed by Jonathan Bedard.

  • Scripts/webkitpy/api_tests/run_api_tests.py:

(main): Added initializing the scm to the host object.

  • Scripts/webkitpy/layout_tests/models/test_run_results.py:

(summarize_results): Changed call to head_svn_revision to port.commits_for_upload() to bring
it in line with modern code.

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(main): Added inializing the scm to the host object.

  • Scripts/webkitpy/port/base.py:

(Port.commits_for_upload): Removed the forced movement up the systems tree that prevented us
from using mock SCMs and more

  • Scripts/webkitpy/test/main.py:

(main): Removed the forced movement up the systems tree, initialized the SCM on the host object,
and converted the webkit_root variable to the SCM checkout root.
(Tester._run_tests):

12:09 PM Changeset in webkit [256850] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Fix order (in MIPS) under which CS-registers are saved/restored
https://bugs.webkit.org/show_bug.cgi?id=207752

Patch by Paulo Matos <Paulo Matos> on 2020-02-18
Reviewed by Keith Miller.

This has been causing several segfaults on MIPS with JIT enabled
because during an OSR to baseline, the order in which LLInt was
saving the registers was not in sync with the way baseline was
restoring them.

  • llint/LowLevelInterpreter.asm:
12:06 PM Changeset in webkit [256849] by Alan Coon
  • 62 edits in branches/safari-610.1.4-branch/Source

Cherry-pick r256791. rdar://problem/59554260

getVTablePointer() should return a const void*.
https://bugs.webkit.org/show_bug.cgi?id=207871
<rdar://problem/59525721>

Reviewed by Yusuke Suzuki.

Source/WebCore:

  • bindings/scripts/CodeGeneratorJS.pm: (GenerateImplementation):
  • bindings/scripts/test/JS/JSInterfaceName.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSMapLike.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSReadOnlyMapLike.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSReadOnlySetLike.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSSetLike.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestCEReactions.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestCallTracer.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestEnabledBySetting.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestEnabledForContext.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestEventConstructor.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestEventTarget.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestException.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestIterable.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestNode.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestObj.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestPluginInterface.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestSerialization.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestStringifier.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp: (WebCore::toJSNewlyCreated):
  • bindings/scripts/test/JS/JSTestTypedefs.cpp: (WebCore::toJSNewlyCreated):

Source/WTF:

  • wtf/PointerPreparations.h: (WTF::getVTablePointer):

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

12:06 PM Changeset in webkit [256848] by Alan Coon
  • 2 edits in branches/safari-610.1.4-branch/Source/WebKit

Cherry-pick r256740. rdar://problem/59527003

[iOS] Add telemetry with backtrace for specific rules
https://bugs.webkit.org/show_bug.cgi?id=207494

Reviewed by Brent Fulgham.

For specific sandbox mach lookup rules in the WebContent process, add telemetry with backtrace.

No new tests, no behavior change.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

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

12:01 PM Changeset in webkit [256847] by Chris Dumez
  • 3 edits in trunk/LayoutTests

[WK1] Flaky Test: http/tests/cookies/document-cookie-during-iframe-parsing.html
https://bugs.webkit.org/show_bug.cgi?id=207895
<rdar://problem/59558164>

Unreviewed, mark test as flaky on WK1 only as the WK2 bots appear to be fine.

12:01 PM Changeset in webkit [256846] by Ross Kirsling
  • 7 edits
    1 add in trunk

[JSC] Computed function properties compute their keys twice
https://bugs.webkit.org/show_bug.cgi?id=207297

Reviewed by Keith Miller.

JSTests:

  • stress/computed-property-key-side-effects.js: Added.
  • test262/expectations.yaml: Mark 6 test cases as passing.

Source/JavaScriptCore:

If a pseudo-String is used as the key of a computed function property,
any side effects from resolving the string value occur in duplicate.

The cause has two parts:

  • We aren't ensuring that the string value is resolved before doing SetFunctionName and PutByVal.
  • Our implementation of SetFunctionName (https://tc39.es/ecma262/#sec-setfunctionname) calls toString on a non-symbol argument, instead of assuming the type is a string.
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::shouldSetFunctionName): Added.
(JSC::BytecodeGenerator::emitSetFunctionName): Added.
(JSC::BytecodeGenerator::emitSetFunctionNameIfNeededImpl): Deleted.
(JSC::BytecodeGenerator::emitSetFunctionNameIfNeeded): Deleted.

  • bytecompiler/BytecodeGenerator.h:

Split the "if needed" logic out into its own function.

  • bytecompiler/NodesCodegen.cpp:

(JSC::PropertyListNode::emitBytecode):
(JSC::PropertyListNode::emitPutConstantProperty):
(JSC::DefineFieldNode::emitBytecode):
Never emit OpSetFunctionName for a name of unknown type.
(But also, don't perform a needless ToPropertyKey for non-function computed property keys.)

  • runtime/JSFunction.cpp:

(JSC::JSFunction::setFunctionName):
Don't call toString, assert isString.

11:55 AM Changeset in webkit [256845] by achristensen@apple.com
  • 11 edits in trunk/Source/WebKit

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

This is reverting r254081 which is effectively re-landing part of r254873 that was reverted
supposing that would be related to the fix for rdar://problem/59136037 but it was not.
Re-landing this is a step towards rdar://problem/56027111

Reverted changeset:

"Revert suppressesConnectionTerminationOnSystemChange part of
r254081"
https://bugs.webkit.org/show_bug.cgi?id=205751
https://trac.webkit.org/changeset/254873

11:42 AM Changeset in webkit [256844] by youenn@apple.com
  • 13 edits
    1 move in trunk/Source/WebCore

Remove PlatformMediaSessionClient dependency on Document
https://bugs.webkit.org/show_bug.cgi?id=207892

Reviewed by Eric Carlson.

Move DocumentIdentifier to Platform folder.
Use DocumentIdentifier instead of Document in PlatformMediaSession/Manager.
No change of behavior.

  • Headers.cmake:
  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::hostingDocumentIdentifier const):

  • Modules/mediastream/MediaStreamTrack.h:
  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::hostingDocumentIdentifier const):
(WebCore::AudioContext::hostingDocument const): Deleted.

  • Modules/webaudio/AudioContext.h:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::stopAllMediaPlayback):
(WebCore::Document::suspendAllMediaPlayback):
(WebCore::Document::resumeAllMediaPlayback):
(WebCore::Document::suspendAllMediaBuffering):
(WebCore::Document::resumeAllMediaBuffering):

  • html/HTMLMediaElement.h:
  • platform/DocumentIdentifier.h: Renamed from Source/WebCore/dom/DocumentIdentifier.h.
  • platform/audio/PlatformMediaSession.cpp:

(WebCore::PlatformMediaSession::PlatformMediaSession):

  • platform/audio/PlatformMediaSession.h:
  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::stopAllMediaPlaybackForDocument):
(WebCore::PlatformMediaSessionManager::suspendAllMediaPlaybackForDocument):
(WebCore::PlatformMediaSessionManager::resumeAllMediaPlaybackForDocument):
(WebCore::PlatformMediaSessionManager::suspendAllMediaBufferingForDocument):
(WebCore::PlatformMediaSessionManager::resumeAllMediaBufferingForDocument):
(WebCore::PlatformMediaSessionManager::sessionsMatching const):
(WebCore::PlatformMediaSessionManager::forEachDocumentSession):

  • platform/audio/PlatformMediaSessionManager.h:
11:41 AM Changeset in webkit [256843] by Alan Coon
  • 8 edits in branches/safari-610.1.4-branch/Source

Versioning.

11:24 AM Changeset in webkit [256842] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Flaky Test: http/tests/cookies/document-cookie-during-iframe-parsing.html
https://bugs.webkit.org/show_bug.cgi?id=207895

Unreviewed, mark the test as flaky while I work with the CFNetwork team to resolve this.

10:58 AM Changeset in webkit [256841] by youenn@apple.com
  • 4 edits in trunk/LayoutTests

REGRESSION (256034): http/tests/media/media-stream/get-display-media-prompt.html is failing
https://bugs.webkit.org/show_bug.cgi?id=207893
<rdar://problem/59551315>

Reviewed by Eric Carlson.

After 256034, we are allowing { audio: true } for getDisplayMedia.
Update the test accordingly, and make it easier to debug by resetting the number of getDisplayMedia prompt for each test
so that they are more indepedent.

  • http/tests/media/media-stream/get-display-media-prompt-expected.txt:
  • http/tests/media/media-stream/get-display-media-prompt.html:
  • platform/mac-wk2/TestExpectations:
10:39 AM Changeset in webkit [256840] by Alan Bujtas
  • 8 edits
    2 adds in trunk

[LFC][Quirk] Add additional escape reason to cover the case when body needs access to both the body and the ICB geometry
https://bugs.webkit.org/show_bug.cgi?id=207869
<rdar://problem/59531225>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/out-of-flow-html-and-body-stretches-to-viewport.html

When the body is stretched all the way to the ICB, we have to read both the document box's and the ICB's geometry.
This patch also refactors Quirks::stretchedInFlowHeight a bit to decouple the document and the body cases.

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::geometryForBox const):

  • layout/FormattingContext.h:
  • layout/blockformatting/BlockFormattingContext.h:
  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):

  • layout/blockformatting/BlockFormattingContextQuirks.cpp:

(WebCore::Layout::BlockFormattingContext::Quirks::needsStretching const):
(WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):

LayoutTests:

  • fast/layoutformattingcontext/out-of-flow-html-and-body-stretches-to-viewport-expected.txt: Added.
  • fast/layoutformattingcontext/out-of-flow-html-and-body-stretches-to-viewport.html: Added.
  • platform/ios-wk2/TestExpectations:
10:27 AM Changeset in webkit [256839] by pvollan@apple.com
  • 11 edits
    3 adds in trunk

Move [UIDevice currentDevice] calls to UI process
https://bugs.webkit.org/show_bug.cgi?id=204320

Reviewed by Darin Adler.

Source/WebCore:

Calling [UIDevice currentDevice] will cause the runningboard daemon to be accessed. Since this service will be removed from
the WebContent sandbox, these calls should be moved to the UI process. The function exernalDeviceDisplayNameForPlayer in
MediaPlayerPrivateAVFoundationObjC.mm is calling [[PAL::getUIDeviceClass() currentDevice] localizedModel], which should be
moved to the UI process.

API test: WebKit.LocalizedDeviceName

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::exernalDeviceDisplayNameForPlayer):

  • platform/ios/LocalizedDeviceModel.h: Added.
  • platform/ios/LocalizedDeviceModel.mm: Added.

(WebCore::cachedLocalizedDeviceModel):
(WebCore::localizedDeviceModel):
(WebCore::setLocalizedDeviceModel):

Source/WebKit:

Get the localized device name in the UI process, and send it to the WebContent process as part of the
process creation parameters.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/LocalizedDeviceModel.mm: Added.

(TEST):

10:19 AM Changeset in webkit [256838] by youenn@apple.com
  • 15 edits
    1 copy in trunk/Source

Use more ObjectIdentifier in WebRTC MDNS register
https://bugs.webkit.org/show_bug.cgi?id=207548

Reviewed by Eric Carlson.

Source/WebCore:

Pass document identifiers instead of uint64_t to mdns register.
No change of behavior.

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::registerMDNSName):

  • dom/Document.cpp:

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

  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:

Source/WebKit:

Use ObjectIdentifier for MDNSRegister for more type and IPC safety.
Update MDNSRegister to also use DocumentIdentifier where more appropriate.

  • NetworkProcess/webrtc/NetworkMDNSRegister.cpp:

(WebKit::PendingRegistrationRequest::PendingRegistrationRequest):
(WebKit::NetworkMDNSRegister::registerMDNSName):
(): Deleted.

  • NetworkProcess/webrtc/NetworkMDNSRegister.h:
  • NetworkProcess/webrtc/NetworkMDNSRegister.messages.in:
  • Scripts/webkit/messages.py:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Network/webrtc/LibWebRTCProvider.cpp:

(WebKit::LibWebRTCProvider::unregisterMDNSNames):
(WebKit::LibWebRTCProvider::registerMDNSName):

  • WebProcess/Network/webrtc/LibWebRTCProvider.h:
  • WebProcess/Network/webrtc/WebMDNSRegister.cpp:

(WebKit::WebMDNSRegister::finishedRegisteringMDNSName):
(WebKit::WebMDNSRegister::unregisterMDNSNames):
(WebKit::WebMDNSRegister::registerMDNSName):

  • WebProcess/Network/webrtc/WebMDNSRegister.h:

(): Deleted.

  • WebProcess/Network/webrtc/WebMDNSRegister.messages.in:
10:09 AM Changeset in webkit [256837] by Kate Cheney
  • 6 edits
    2 adds in trunk

Web socket loads should be captured for logging per-page prevalent domains
https://bugs.webkit.org/show_bug.cgi?id=207840
<rdar://problem/59511746>

Reviewed by Chris Dumez.

Source/WebCore:

Test: http/tests/websocket/web-socket-loads-captured-in-per-page-domains.html

Captures a domain connection via WebSocket to check if it should be
logged as a prevalent resource.

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::connect):

LayoutTests:

Resource load statistics is only supported on mac and iOS, we should
skip this on other platforms.

  • http/tests/websocket/web-socket-loads-captured-in-per-page-domains-expected.txt: Added.
  • http/tests/websocket/web-socket-loads-captured-in-per-page-domains.html: Added.
  • platform/gtk/TestExpectations:
  • platform/win/TestExpectations:
9:46 AM Changeset in webkit [256836] by dino@apple.com
  • 116 edits in trunk/LayoutTests

[WebGL] Update WebGL2 results with ANGLE backend
https://bugs.webkit.org/show_bug.cgi?id=207872

Reviewed by Myles Maxfield.

Now that ANGLE is on by default, update a bunch of expected results.
Note that any possible regressions are tracked in:
https://bugs.webkit.org/show_bug.cgi?id=207858

  • webgl/2.0.0/conformance/context/context-lost-restored-expected.txt:
  • webgl/2.0.0/conformance/extensions/ext-sRGB-expected.txt:
  • webgl/2.0.0/conformance/extensions/oes-texture-float-expected.txt:
  • webgl/2.0.0/conformance/extensions/oes-texture-half-float-expected.txt:
  • webgl/2.0.0/conformance/extensions/oes-vertex-array-object-expected.txt:
  • webgl/2.0.0/conformance/extensions/webgl-depth-texture-expected.txt:
  • webgl/2.0.0/conformance/extensions/webgl-draw-buffers-expected.txt:
  • webgl/2.0.0/conformance/extensions/webgl-draw-buffers-framebuffer-unsupported-expected.txt:
  • webgl/2.0.0/conformance/glsl/misc/shader-struct-scope-expected.txt:
  • webgl/2.0.0/conformance/glsl/misc/shaders-with-invariance-expected.txt:
  • webgl/2.0.0/conformance/glsl/misc/shaders-with-name-conflicts-expected.txt:
  • webgl/2.0.0/conformance/limits/gl-line-width-expected.txt:
  • webgl/2.0.0/conformance/misc/object-deletion-behaviour-expected.txt:
  • webgl/2.0.0/conformance/misc/webgl-specific-expected.txt:
  • webgl/2.0.0/conformance/ogles/GL/biuDepthRange/biuDepthRange_001_to_002-expected.txt:
  • webgl/2.0.0/conformance/ogles/GL/gl_FragCoord/gl_FragCoord_001_to_003-expected.txt:
  • webgl/2.0.0/conformance/programs/program-test-expected.txt:
  • webgl/2.0.0/conformance/reading/read-pixels-test-expected.txt:
  • webgl/2.0.0/conformance/renderbuffers/feedback-loop-expected.txt:
  • webgl/2.0.0/conformance/rendering/point-no-attributes-expected.txt:
  • webgl/2.0.0/conformance/state/gl-object-get-calls-expected.txt:
  • webgl/2.0.0/conformance/textures/misc/cube-incomplete-fbo-expected.txt:
  • webgl/2.0.0/conformance/textures/misc/texture-copying-feedback-loops-expected.txt:
  • webgl/2.0.0/conformance2/attribs/gl-vertexattribipointer-expected.txt:
  • webgl/2.0.0/conformance2/attribs/gl-vertexattribipointer-offsets-expected.txt:
  • webgl/2.0.0/conformance2/buffers/bound-buffer-size-change-test-expected.txt:
  • webgl/2.0.0/conformance2/buffers/buffer-copying-contents-expected.txt:
  • webgl/2.0.0/conformance2/buffers/buffer-data-and-buffer-sub-data-sub-source-expected.txt:
  • webgl/2.0.0/conformance2/buffers/buffer-type-restrictions-expected.txt:
  • webgl/2.0.0/conformance2/buffers/get-buffer-sub-data-expected.txt:
  • webgl/2.0.0/conformance2/buffers/one-large-uniform-buffer-expected.txt:
  • webgl/2.0.0/conformance2/context/context-attributes-depth-stencil-antialias-obeyed-expected.txt:
  • webgl/2.0.0/conformance2/extensions/ext-color-buffer-float-expected.txt:
  • webgl/2.0.0/conformance2/extensions/promoted-extensions-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/no-attribute-vertex-shader-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/shader-linking-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/shader-with-invalid-characters-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/shader-with-mis-matching-uniform-block-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/valid-invariant-expected.txt:
  • webgl/2.0.0/conformance2/misc/expando-loss-2-expected.txt:
  • webgl/2.0.0/conformance2/misc/instanceof-test-expected.txt:
  • webgl/2.0.0/conformance2/misc/object-deletion-behaviour-2-expected.txt:
  • webgl/2.0.0/conformance2/query/query-expected.txt:
  • webgl/2.0.0/conformance2/reading/read-pixels-from-fbo-test-expected.txt:
  • webgl/2.0.0/conformance2/reading/read-pixels-pack-parameters-expected.txt:
  • webgl/2.0.0/conformance2/renderbuffers/invalidate-framebuffer-expected.txt:
  • webgl/2.0.0/conformance2/renderbuffers/multisample-with-full-sample-counts-expected.txt:
  • webgl/2.0.0/conformance2/renderbuffers/multisampled-renderbuffer-initialization-expected.txt:
  • webgl/2.0.0/conformance2/rendering/attrib-type-match-expected.txt:
  • webgl/2.0.0/conformance2/rendering/blitframebuffer-stencil-only-expected.txt:
  • webgl/2.0.0/conformance2/rendering/blitframebuffer-test-expected.txt:
  • webgl/2.0.0/conformance2/rendering/canvas-resizing-with-pbo-bound-expected.txt:
  • webgl/2.0.0/conformance2/rendering/clear-func-buffer-type-match-expected.txt:
  • webgl/2.0.0/conformance2/rendering/clear-srgb-color-buffer-expected.txt:
  • webgl/2.0.0/conformance2/rendering/clipping-wide-points-expected.txt:
  • webgl/2.0.0/conformance2/rendering/framebuffer-unsupported-expected.txt:
  • webgl/2.0.0/conformance2/rendering/fs-color-type-mismatch-color-buffer-type-expected.txt:
  • webgl/2.0.0/conformance2/rendering/instanced-arrays-expected.txt:
  • webgl/2.0.0/conformance2/rendering/instanced-rendering-bug-expected.txt:
  • webgl/2.0.0/conformance2/rendering/rendering-sampling-feedback-loop-expected.txt:
  • webgl/2.0.0/conformance2/rendering/rgb-format-support-expected.txt:
  • webgl/2.0.0/conformance2/state/gl-get-calls-expected.txt:
  • webgl/2.0.0/conformance2/state/gl-object-get-calls-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba16f-rgba-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba16f-rgba-half_float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba32f-rgba-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-rgba8ui-rgba_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-srgb8-rgb-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_image/tex-3d-srgb8_alpha8-rgba-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba16f-rgba-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba16f-rgba-half_float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba32f-rgba-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba4-rgba-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba4-rgba-unsigned_short_4_4_4_4-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba8-rgba-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-rgba8ui-rgba_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-srgb8-rgb-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_video/tex-2d-srgb8_alpha8-rgba-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r11f_g11f_b10f-rgb-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r11f_g11f_b10f-rgb-half_float-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r8-red-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/image_bitmap_from_video/tex-3d-r8ui-red_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/active-3d-texture-bug-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/copy-texture-image-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-3d-size-limit-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-image-with-bad-args-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-mipmap-levels-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-new-formats-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-storage-2d-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/texture-npot-expected.txt:
  • webgl/2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-half_float-expected.txt:
  • webgl/2.0.0/conformance2/textures/video/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev-expected.txt:
  • webgl/2.0.0/conformance2/textures/video/tex-2d-r16f-red-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/video/tex-2d-r16f-red-half_float-expected.txt:
  • webgl/2.0.0/conformance2/textures/video/tex-2d-r32f-red-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/video/tex-2d-rg16f-rg-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/video/tex-2d-rg16f-rg-half_float-expected.txt:
  • webgl/2.0.0/conformance2/textures/video/tex-2d-rg32f-rg-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/video/tex-2d-rg8-rg-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/video/tex-2d-rg8ui-rg_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/video/tex-2d-rgb5_a1-rgba-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/webgl_canvas/tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev-expected.txt:
  • webgl/2.0.0/conformance2/textures/webgl_canvas/tex-2d-r16f-red-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/webgl_canvas/tex-2d-r16f-red-half_float-expected.txt:
  • webgl/2.0.0/conformance2/textures/webgl_canvas/tex-2d-r32f-red-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/webgl_canvas/tex-2d-r8ui-red_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg16f-rg-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg16f-rg-half_float-expected.txt:
  • webgl/2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg32f-rg-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg8-rg-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/webgl_canvas/tex-2d-rg8ui-rg_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/textures/webgl_canvas/tex-2d-rgb8ui-rgb_integer-unsigned_byte-expected.txt:
  • webgl/2.0.0/conformance2/vertex_arrays/vertex-array-object-expected.txt:
  • webgl/TestExpectations:
9:32 AM Changeset in webkit [256835] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r256784?) [ iOS wk2 ] fast/canvas/webgl/oes-vertex-array-object.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=207896

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
9:24 AM Changeset in webkit [256834] by Simon Fraser
  • 37 edits
    1 move in trunk

Move from "layer flush" terminology to "rendering update"
https://bugs.webkit.org/show_bug.cgi?id=207870

Reviewed by Tim Horton.
Source/WebCore:

Rename various functions and member variables to move away from the legacy "layer flush"
terminology and instead use "rendering update", matching Page::updateRendering(). The fact
that we have layers is an implementation detail.

Change LayerFlushThrottlingState to be an OptionSet<>.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::scheduleStyleRecalc):
(WebCore::Document::shouldScheduleLayout):

  • loader/EmptyClients.h:
  • page/ChromeClient.h:

(WebCore::ChromeClient::renderingUpdateThrottlingIsActive const):
(WebCore::ChromeClient::adjustRenderUpdateThrottling):
(WebCore::ChromeClient::layerFlushThrottlingIsActive const): Deleted.
(WebCore::ChromeClient::adjustLayerFlushThrottling): Deleted.

  • page/FrameView.cpp:

(WebCore::determineLayerFlushThrottleState):
(WebCore::FrameView::disableLayerFlushThrottlingTemporarilyForInteraction):
(WebCore::FrameView::updateLayerFlushThrottling):

  • page/RenderingUpdateScheduler.cpp:

(WebCore::RenderingUpdateScheduler::scheduleImmediateRenderingUpdate):

  • page/RenderingUpdateThrottleState.h: Renamed from Source/WebCore/page/LayerFlushThrottleState.h.

Source/WebKit:

Rename various functions and member variables to move away from the legacy "layer flush"
terminology and instead use "rendering update", matching Page::updateRendering(). The fact
that we have layers is an implementation detail.

Change LayerFlushThrottlingState to be an OptionSet<>.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::scheduleRenderingUpdate):
(WebKit::WebChromeClient::adjustRenderUpdateThrottling):
(WebKit::WebChromeClient::renderingUpdateThrottlingIsActive const):
(WebKit::WebChromeClient::scheduleCompositingLayerFlush): Deleted.
(WebKit::WebChromeClient::adjustLayerFlushThrottling): Deleted.
(WebKit::WebChromeClient::layerFlushThrottlingIsActive const): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/DrawingArea.h:

(WebKit::DrawingArea::renderingUpdateThrottlingIsActive const):
(WebKit::DrawingArea::adjustRenderUpdateThrottling):
(WebKit::DrawingArea::layerFlushThrottlingIsActive const): Deleted.
(WebKit::DrawingArea::adjustLayerFlushThrottling): Deleted.

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:

(WebKit::RemoteLayerTreeContext::setNextFlushIsForImmediatePaint):
(WebKit::RemoteLayerTreeContext::nextFlushIsForImmediatePaint const):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:

(WebKit::RemoteLayerTreeDisplayRefreshMonitor::requestRefreshCallback):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
(WebKit::RemoteLayerTreeDrawingArea::setRootCompositingLayer):
(WebKit::RemoteLayerTreeDrawingArea::updateGeometry):
(WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen):
(WebKit::RemoteLayerTreeDrawingArea::forceRepaint):
(WebKit::RemoteLayerTreeDrawingArea::setExposedContentRect):
(WebKit::RemoteLayerTreeDrawingArea::scheduleImmediateRenderingUpdate):
(WebKit::RemoteLayerTreeDrawingArea::scheduleInitialDeferredPaint):
(WebKit::RemoteLayerTreeDrawingArea::scheduleRenderingUpdate):
(WebKit::RemoteLayerTreeDrawingArea::adjustRenderUpdateThrottling):
(WebKit::RemoteLayerTreeDrawingArea::updateRendering):
(WebKit::RemoteLayerTreeDrawingArea::didUpdate):
(WebKit::RemoteLayerTreeDrawingArea::activityStateDidChange):
(WebKit::RemoteLayerTreeDrawingArea::addTransactionCallbackID):
(WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlushImmediately): Deleted.
(WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlush): Deleted.
(WebKit::RemoteLayerTreeDrawingArea::adjustLayerFlushThrottling): Deleted.
(WebKit::RemoteLayerTreeDrawingArea::flushLayers): Deleted.

  • WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm:

(WebKit::RemoteScrollingCoordinator::scheduleTreeStateCommit):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::scheduleFullEditorStateUpdate):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::dynamicViewportSizeUpdate):

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
(WebKit::TiledCoreAnimationDrawingArea::~TiledCoreAnimationDrawingArea):
(WebKit::TiledCoreAnimationDrawingArea::forceRepaint):
(WebKit::TiledCoreAnimationDrawingArea::setLayerTreeStateIsFrozen):
(WebKit::TiledCoreAnimationDrawingArea::scheduleRenderingUpdate):
(WebKit::TiledCoreAnimationDrawingArea::scheduleImmediateRenderingUpdate):
(WebKit::TiledCoreAnimationDrawingArea::attachViewOverlayGraphicsLayer):
(WebKit::TiledCoreAnimationDrawingArea::setShouldScaleViewToFitDocument):
(WebKit::TiledCoreAnimationDrawingArea::dispatchAfterEnsuringUpdatedScrollPosition):
(WebKit::TiledCoreAnimationDrawingArea::addTransactionCallbackID):
(WebKit::TiledCoreAnimationDrawingArea::updateRendering):
(WebKit::TiledCoreAnimationDrawingArea::suspendPainting):
(WebKit::TiledCoreAnimationDrawingArea::updateGeometry):
(WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToPage):
(WebKit::TiledCoreAnimationDrawingArea::updateRenderingRunLoopCallback):
(WebKit::TiledCoreAnimationDrawingArea::invalidateRenderingUpdateRunLoopObserver):
(WebKit::TiledCoreAnimationDrawingArea::scheduleRenderingUpdateRunLoopObserver):
(WebKit::TiledCoreAnimationDrawingArea::adjustRenderUpdateThrottling):
(WebKit::TiledCoreAnimationDrawingArea::renderingUpdateThrottlingIsActive const):
(WebKit::TiledCoreAnimationDrawingArea::startRenderThrottlingTimer):
(WebKit::TiledCoreAnimationDrawingArea::renderThrottlingTimerFired):
(WebKit::TiledCoreAnimationDrawingArea::scheduleCompositingLayerFlush): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::scheduleCompositingLayerFlushImmediately): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::flushLayers): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::layerFlushRunLoopCallback): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::invalidateLayerFlushRunLoopObserver): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::scheduleLayerFlushRunLoopObserver): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::adjustLayerFlushThrottling): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::layerFlushThrottlingIsActive const): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::startLayerFlushThrottlingTimer): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::layerFlushThrottlingTimerFired): Deleted.

Source/WebKitLegacy/mac:

Rename various functions and member variables to move away from the legacy "layer flush"
terminology and instead use "rendering update", matching Page::updateRendering(). The fact
that we have layers is an implementation detail.

Change LayerFlushThrottlingState to be an OptionSet<>.

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::scheduleRenderingUpdate):
(WebChromeClient::scheduleCompositingLayerFlush): Deleted.

  • WebView/WebView.mm:

(-[WebView _scheduleUpdateRendering]):
(-[WebView _scheduleCompositingLayerFlush]): Deleted.

  • WebView/WebViewData.h:
  • WebView/WebViewInternal.h:

Source/WTF:

  • wtf/SystemTracing.h:

Tools:

Rename various functions and member variables to move away from the legacy "layer flush"
terminology and instead use "rendering update", matching Page::updateRendering(). The fact
that we have layers is an implementation detail.

Change LayerFlushThrottlingState to be an OptionSet<>.

  • Tracing/SystemTracePoints.plist:
9:11 AM Changeset in webkit [256833] by dbates@webkit.org
  • 10 edits in trunk/Source/WebKit

Rename dispatchDidReceiveEditorStateAfterFocus() to dispatchDidUpdateEditorState() to better describe its purpose
https://bugs.webkit.org/show_bug.cgi?id=207865

Reviewed by Wenson Hsieh.

Although the iOS implementation bails out unless it was called after WebPageProxy::elementDidFocus()
this platform-independent function is actually invoked whenever the UI process receives either
an editor state update or a layer tree commit. Renaming this function to better describe its multi-
function purpose, which is to allow the UI process a chance to run post-editor update logic.

  • UIProcess/PageClient.h:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:

(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):

  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::didUpdateEditorState):
(WebKit::PageClientImpl::didReceiveEditorStateUpdateAfterFocus): Deleted.

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

(-[WKContentView _didUpdateEditorState]):
(-[WKContentView _didReceiveEditorStateUpdateAfterFocus]): Deleted.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::dispatchDidUpdateEditorState):
(WebKit::WebPageProxy::dispatchDidReceiveEditorStateAfterFocus): Deleted.

9:06 AM Changeset in webkit [256832] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] http/wpt/beacon/beacon-quota.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207894

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
9:00 AM Changeset in webkit [256831] by Chris Dumez
  • 3 edits
    2 adds in trunk

ASSERT_NOT_REACHED() under WebPageProxy::suspendCurrentPageIfPossible()
https://bugs.webkit.org/show_bug.cgi?id=207868
<rdar://problem/59464606>

Reviewed by John Wilander.

Source/WebCore:

Test: http/tests/navigation/process-swap-on-client-side-redirect-private.html

  • loader/HistoryController.cpp:

(WebCore::HistoryController::updateForSameDocumentNavigation):
Methods in HistoryController avoids updating visited links and calling updateGlobalHistory()
on the FrameLoaderClient when in an ephemeral session. However, updateForSameDocumentNavigation()
was returning early in ephemeral sessions, which was overly aggressive and bypasses things we
really need to do, like updating the current HistoryItem's url.

LayoutTests:

Add layout test that was hitting the assertion before my change.

  • http/tests/navigation/process-swap-on-client-side-redirect-private-expected.txt: Added.
  • http/tests/navigation/process-swap-on-client-side-redirect-private.html: Added.
8:38 AM Changeset in webkit [256830] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r254092?) [ Mac wk1 ] imported/w3c/web-platform-tests/css/css-position/fixed-z-index-blend.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207891

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
8:02 AM Changeset in webkit [256829] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[LFC][IFC] Add missing float check in inline line layout
https://bugs.webkit.org/show_bug.cgi?id=207878
<rdar://problem/59537467>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/float-in-inline-context-simple.html

Make sure float content gets laid out as well.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::isAtSoftWrapOpportunity):
(WebCore::Layout::nextWrapOpportunity):

LayoutTests:

  • fast/layoutformattingcontext/float-in-inline-context-simple-expected.html: Added.
  • fast/layoutformattingcontext/float-in-inline-context-simple.html: Added.
7:55 AM Changeset in webkit [256828] by Jacob Uphoff
  • 3 edits in trunk/Source/WebCore

Unreviewed, rolling out r256804.

This broke 50+ media tests on mac debug

Reverted changeset:

"MediaSource.isTypeSupported() says
"video/mp4;codecs=\"avc3.42C015\"" is not supported, but it
is"
https://bugs.webkit.org/show_bug.cgi?id=207622
https://trac.webkit.org/changeset/256804

6:57 AM Changeset in webkit [256827] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][TreeBuilding] Take createLineBreakBox's return value
https://bugs.webkit.org/show_bug.cgi?id=207879
<rdar://problem/59537585>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/br-in-inline-content-simple.html

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createLayoutBox):

LayoutTests:

  • fast/layoutformattingcontext/br-in-inline-content-simple-expected.html: Added.
  • fast/layoutformattingcontext/br-in-inline-content-simple.html: Added.
6:47 AM Changeset in webkit [256826] by Oriol Brufau
  • 3 edits in trunk/Source/WebCore

[css-grid] Improve performance of track sizing algorithm for spanning items
https://bugs.webkit.org/show_bug.cgi?id=207852

Reviewed by Javier Fernandez.

Calculating the used sizing function for a track is not a very expensive
operation, but it's not trivial either, and the track sizing algorithm
needs to access sizing functions all over the place. This ends up having
a performance cost, especially for spanning items.

Intrinsic contributions from items that span a single track are handled
in a simpler way than when the span is greater than 1. In the former
case, SizeTrackToFitNonSpanningItem only calculates the track sizing
function of each track once per each item in that track. But in the
latter case we not only calculate the track sizing function of multiple
tracks per item, we also repeat this 5 times in order to handle the
various TrackSizeComputationPhase.

Therefore, to increase performance, this patch caches the used track
sizing functions in the tracks themselves.

This is a port of these Chromium patches:

Chromium has a auto-grid-lots-of-spanning-data perf test. In WebKit, its
performance improves by 40% with this patch.

  • rendering/GridTrackSizingAlgorithm.cpp:

(WebCore::GridTrack::setCachedTrackSize):
(WebCore::GridTrackSizingAlgorithm::sizeTrackToFitNonSpanningItem):
(WebCore::GridTrackSizingAlgorithm::spanningItemCrossesFlexibleSizedTracks const):
(WebCore::GridTrackSizingAlgorithm::increaseSizesToAccommodateSpanningItems):
(WebCore::GridTrackSizingAlgorithm::estimatedGridAreaBreadthForChild const):
(WebCore::GridTrackSizingAlgorithm::isIntrinsicSizedGridArea const):
(WebCore::GridTrackSizingAlgorithm::calculateGridTrackSize const):
(WebCore::GridTrackSizingAlgorithm::computeFlexFactorUnitSize const):
(WebCore::GridTrackSizingAlgorithm::computeFlexSizedTracksGrowth const):
(WebCore::GridTrackSizingAlgorithm::findFrUnitSize const):
(WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild const):
(WebCore::normalizedFlexFraction):
(WebCore::IndefiniteSizeStrategy::findUsedFlexFraction const):
(WebCore::GridTrackSizingAlgorithm::initializeTrackSizes):
(WebCore::GridTrackSizingAlgorithm::tracksAreWiderThanMinTrackBreadth const):

  • rendering/GridTrackSizingAlgorithm.h:

(WebCore::GridTrack::cachedTrackSize const):

6:15 AM Changeset in webkit [256825] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[ARM] Build failure on arm due to invalid use of incomplete type 'class WebCore::ImageData' in FEBlendNEON.h
https://bugs.webkit.org/show_bug.cgi?id=207885

Patch by Chris Lord <Chris Lord> on 2020-02-18
Reviewed by Carlos Alberto Lopez Perez.

No new tests, no functional change.

  • platform/graphics/cpu/arm/filters/FEBlendNEON.h:
3:13 AM Changeset in webkit [256824] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

[WPE] Add support for rendering progress bars
https://bugs.webkit.org/show_bug.cgi?id=207688

Reviewed by Adrian Perez de Castro.

  • platform/wpe/RenderThemeWPE.cpp:

(WebCore::RenderThemeWPE::animationRepeatIntervalForProgressBar const):
(WebCore::RenderThemeWPE::animationDurationForProgressBar const):
(WebCore::RenderThemeWPE::progressBarRectForBounds const):
(WebCore::RenderThemeWPE::paintProgressBar):

  • platform/wpe/RenderThemeWPE.h:
2:48 AM Changeset in webkit [256823] by Carlos Garcia Campos
  • 4 edits in trunk/Source/WebCore

[WPE] Add support for rendering spin buttons
https://bugs.webkit.org/show_bug.cgi?id=207686

Reviewed by Adrian Perez de Castro.

  • platform/wpe/RenderThemeWPE.cpp:

(WebCore::RenderThemeWPE::popupInternalPaddingBox const): Rename arrowSize as menuListButtonArrowSize.
(WebCore::RenderThemeWPE::paintMenuList): Use ThemeWPE::paintArrow().

  • platform/wpe/ThemeWPE.cpp:

(WebCore::ThemeWPE::paintArrow): Moved from RenderThemeWPE and added direction parameter.
(WebCore::ThemeWPE::controlSize const): Set size of spin buttons.
(WebCore::ThemeWPE::paint): Call paintSpinButton() for spin buttons.
(WebCore::ThemeWPE::paintSpinButton): Paint the buttons.

  • platform/wpe/ThemeWPE.h:
1:31 AM Changeset in webkit [256822] by commit-queue@webkit.org
  • 29 edits in trunk/Source/WebCore

Make ImageBuffer::getImageData() and putImageData() return and take ImageData
https://bugs.webkit.org/show_bug.cgi?id=206621

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-02-18
Reviewed by Tim Horton.

-- Combine ImageBuffer::getUnmultipliedImageData() and getPremultipliedImageData()

in one function and name it getImageData();

-- Make getImageData() returns a RefPtr<ImageData> since the canvas code

used to encapsulate the returned the returned Uint8ClampedArray into
an ImageData and send it to JavaScriptCore.

-- Rename ImageBuffer::putByteArray() to ImageBuffer::putImageData() and

make it take an ImageData since the byte array has to be associated
with an IntSize and separating them does not look a good design.

-- Remove the enum ImageBuffer::CoordinateSystem. All the callers need to

pass rectangles and sizes in logical coordinates. The ImageData has to
be scaled according to the ImgeBuffer::resolutionScale().

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::dumpImageBitmap):
(WebCore::CloneDeserializer::readImageBitmap):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::getImageData const):
(WebCore::CanvasRenderingContext2DBase::putImageData):

  • html/canvas/CanvasRenderingContext2DBase.h:
  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::screenshot):

  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::convertToLuminanceMask):
(WebCore::ImageBuffer::transformColorSpace): Deleted.
Move this function to ImageBufferCairo.cpp.

(WebCore::ImageBuffer::genericConvertToLuminanceMask): Deleted.
convertToLuminanceMask() and genericConvertToLuminanceMask() are not
overridden by any platform. So delete genericConvertToLuminanceMask() and
move its body to convertToLuminanceMask().

  • platform/graphics/ImageBuffer.h:

(WebCore::ImageBuffer::draw):
(WebCore::ImageBuffer::drawPattern):
(WebCore::ImageBuffer::drawConsuming):
(WebCore::ImageBuffer::putImageData):
Make the private functions be public and remove the friend classes.

  • platform/graphics/ShadowBlur.cpp:

(WebCore::ShadowBlur::blurShadowBuffer):

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::transformColorSpace):
(WebCore::getData):
(WebCore::ImageBuffer::getImageData const):
(WebCore::ImageBuffer::putImageData):
(WebCore::getImageData): Deleted.
(WebCore::logicalUnit): Deleted.
(WebCore::backingStoreUnit): Deleted.
(WebCore::ImageBuffer::getUnmultipliedImageData const): Deleted.
(WebCore::ImageBuffer::getPremultipliedImageData const): Deleted.
(WebCore::ImageBuffer::putByteArray): Deleted.

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::ImageBuffer::getImageData const):
(WebCore::ImageBuffer::putImageData):
(WebCore::ImageBuffer::toCFData const):
(WebCore::ImageBuffer::getUnmultipliedImageData const): Deleted.
(WebCore::ImageBuffer::getPremultipliedImageData const): Deleted.
(WebCore::ImageBuffer::putByteArray): Deleted.

  • platform/graphics/cg/ImageBufferDataCG.cpp:

(WebCore::ImageBufferData::getData const):
(WebCore::ImageBufferData::putData):

  • platform/graphics/cg/ImageBufferDataCG.h:

All the rectangles and sizes have to be passed in logical coordinates. To
deal with the pixels' data we need to scale them by the resolutionScale().

  • platform/graphics/cpu/arm/filters/FEBlendNEON.h:

(WebCore::FEBlend::platformApplySoftware):

  • platform/graphics/filters/FEColorMatrix.cpp:

(WebCore::FEColorMatrix::platformApplySoftware):

  • platform/graphics/filters/FEComponentTransfer.cpp:

(WebCore::FEComponentTransfer::platformApplySoftware):

  • platform/graphics/filters/FEComposite.cpp:

(WebCore::FEComposite::platformApplySoftware):

  • platform/graphics/filters/FEConvolveMatrix.cpp:

(WebCore::FEConvolveMatrix::platformApplySoftware):

  • platform/graphics/filters/FEDisplacementMap.cpp:

(WebCore::FEDisplacementMap::platformApplySoftware):

  • platform/graphics/filters/FEDropShadow.cpp:

(WebCore::FEDropShadow::platformApplySoftware):
This was the only place which was passing a rectangle in a the back-end
coordinates along with BackingStoreCoordinateSystem. Instead we can pass
the rectangle in logical coordinates and then use ImageData::size() since
it must be scaled with resolutionScale() when the ImageData is created.

  • platform/graphics/filters/FEGaussianBlur.cpp:

(WebCore::FEGaussianBlur::platformApplySoftware):

  • platform/graphics/filters/FELighting.cpp:

(WebCore::FELighting::platformApplySoftware):

  • platform/graphics/filters/FEMorphology.cpp:

(WebCore::FEMorphology::platformApplySoftware):

  • platform/graphics/filters/FETurbulence.cpp:

(WebCore::FETurbulence::platformApplySoftware):

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::forceValidPreMultipliedPixels):
(WebCore::FilterEffect::imageBufferResult):
(WebCore::FilterEffect::copyUnmultipliedResult):
(WebCore::FilterEffect::copyPremultipliedResult):
(WebCore::FilterEffect::createImageBufferResult):
(WebCore::FilterEffect::createUnmultipliedImageResult):
(WebCore::FilterEffect::createPremultipliedImageResult):

  • platform/graphics/filters/FilterEffect.h:
  • platform/graphics/win/ImageBufferDataDirect2D.cpp:

(WebCore::ImageBufferData::getData const):
(WebCore::ImageBufferData::putData):

  • platform/graphics/win/ImageBufferDataDirect2D.h:
  • platform/graphics/win/ImageBufferDirect2D.cpp:

(WebCore::ImageBuffer::getImageData const):
(WebCore::ImageBuffer::putImageData):
(WebCore::ImageBuffer::getUnmultipliedImageData const): Deleted.
(WebCore::ImageBuffer::getPremultipliedImageData const): Deleted.
(WebCore::ImageBuffer::putByteArray): Deleted.

  • rendering/shapes/Shape.cpp:

(WebCore::Shape::createRasterShape):

Feb 17, 2020:

11:38 PM Changeset in webkit [256821] by Wenson Hsieh
  • 5 edits
    2 adds in trunk

Selection cannot be modified via text interaction in some areas of the compose body field in Gmail
https://bugs.webkit.org/show_bug.cgi?id=207854
<rdar://problem/59218824>

Reviewed by Tim Horton.

Source/WebCore:

Currently, several codepaths that are consulted when performing text interaction gestures on iOS to make and
modify text selections (e.g. double taps and long presses) rely on Frame::visiblePositionForPoint to map the
touch location to a visible editing position on the page. visiblePositionForPoint uses the hit-testing option
AllowChildFrameContent, which allows it to find and select text within subframes. However, this option also
includes content in hidden ("visibility: hidden;") frames. This means that text selection gestures on iOS are
unable to find otherwise selectable text, if a hidden child frame overlaps the text.

To fix this, we instead use the AllowVisibleChildFrameContentOnly hit-testing option, which will ignore such
hidden subframes.

Test: editing/selection/ios/select-text-under-hidden-subframe.html

  • page/Frame.cpp:

(WebCore::Frame::visiblePositionForPoint const):

Source/WebKit:

Adjusts more call sites in WebKit to ignore child frames that are hidden when hit-testing. See WebCore/ChangeLog
for more details.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::rectForElementAtInteractionLocation const):
(WebKit::WebPage::handleStylusSingleTapAtPoint):
(WebKit::rangeForPointInRootViewCoordinates):
(WebKit::WebPage::setFocusedFrameBeforeSelectingTextAtLocation):
(WebKit::selectionPositionInformation):
(WebKit::textInteractionPositionInformation):
(WebKit::WebPage::positionInformation):

LayoutTests:

Add a new layout test to verify that the hit-testing codepaths exercised by text interaction gestures on iOS
successfully ignore a hidden child frame that covers the page.

  • editing/selection/ios/select-text-under-hidden-subframe-expected.txt: Added.
  • editing/selection/ios/select-text-under-hidden-subframe.html: Added.
10:32 PM Changeset in webkit [256820] by Chris Dumez
  • 38 edits
    2 copies
    8 adds in trunk

[WK2][Cocoa] Implement in-WebProcess cookie cache to avoid sync IPC for document.cookie in most cases
https://bugs.webkit.org/show_bug.cgi?id=207593
<rdar://problem/56027027>

Reviewed by Antti Koivisto.

Source/WebCore:

Implement in-WebProcess DOM cookie cache for serving document.cookie requests from JavaScript.

The first time document.cookie is called for a given host, the WebProcess will pull in all the
non-HTTPOnly cookies for that host from the NetworkProcess (still via sync IPC) and store them
in an in-memory cookie store. Later document.cookie calls for this host from this WebProcess
will then leverage the in-memory cookie store and avoid doing a sync IPC to the NetworkProcess
entirely.

To maintain the in-process cookie store up-to-date, the WebProcess subscribe for cookie-change
notifications from the NetworkProcess, only for the hosts it is interested in.

If the page's JavaScript sets a cookie by setting document.cookie, we will not invalidate the
cache for performance reasons. Instead, we set the cookie in our in-memory cookie before
sending the new cookie to the NetworkProcess.

For compatibility reasons, any sync IPC to a given host will currently invalidate the cookie
cache for this host. This is because this synchronous load may cause cookies to get set
synchronously and the page could access document.cookie right after the sync XHR. This behavior
is covered by the following existing test:

  • http/tests/cookies/sync-xhr-set-cookie-invalidates-cache.html

Another limitation of the current implementation of the cookie cache is that it is currently
only leveraged for first party content. This is suboptimal and could be improved in a later
iteration. However, the default behavior in Safari is that third-party iframes do not have
cookie access unless they request it using the storage access API. We also currently have
a limit of 5 hosts with cached cookies per WebProcess.

Tests: http/tests/cookies/document-cookie-after-showModalDialog.html

http/tests/cookies/document-cookie-during-iframe-parsing.html

  • dom/Document.cpp:

(WebCore::Document::didLoadResourceSynchronously):

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

(WebCore::ScriptExecutionContext::didLoadResourceSynchronously):

  • dom/ScriptExecutionContext.h:
  • loader/CookieJar.h:
  • loader/ThreadableLoader.cpp:

(WebCore::ThreadableLoader::loadResourceSynchronously):

  • page/MemoryRelease.cpp:

(WebCore::releaseCriticalMemory):

  • page/Settings.yaml:
  • platform/network/NetworkStorageSession.h:

(WebCore::CookieChangeObserver::~CookieChangeObserver):

  • platform/network/cf/NetworkStorageSessionCFNet.cpp:

(WebCore::NetworkStorageSession::NetworkStorageSession):
(WebCore::NetworkStorageSession::cookieStorage const):

  • platform/network/cocoa/NetworkStorageSessionCocoa.mm:

(WebCore::NetworkStorageSession::~NetworkStorageSession):
(WebCore::NetworkStorageSession::setCookie):
(WebCore::NetworkStorageSession::setCookies):
(WebCore::NetworkStorageSession::deleteCookie):
(WebCore::nsCookiesToCookieVector):
(WebCore::NetworkStorageSession::nsCookieStorage const):
(WebCore::createPrivateStorageSession):
(WebCore::NetworkStorageSession::httpCookies const):
(WebCore::NetworkStorageSession::deleteHTTPCookie const):
(WebCore::NetworkStorageSession::setHTTPCookiesForURL const):
(WebCore::NetworkStorageSession::httpCookiesForURL const):
(WebCore::filterCookies):
(WebCore::NetworkStorageSession::cookiesForURL const):
(WebCore::NetworkStorageSession::cookiesForSession const):
(WebCore::NetworkStorageSession::cookiesForDOM const):
(WebCore::NetworkStorageSession::cookieRequestHeaderFieldValue const):
(WebCore::NetworkStorageSession::setCookiesFromDOM const):
(WebCore::NetworkStorageSession::getRawCookies const):
(WebCore::NetworkStorageSession::deleteCookiesForHostnames):
(WebCore::NetworkStorageSession::registerCookieChangeListenersIfNecessary):
(WebCore::NetworkStorageSession::unregisterCookieChangeListenersIfNecessary):
(WebCore::NetworkStorageSession::startListeningForCookieChangeNotifications):
(WebCore::NetworkStorageSession::stopListeningForCookieChangeNotifications):
(WebCore::NetworkStorageSession::domCookiesForHost):
(WebCore::NetworkStorageSession::supportsCookieChangeListenerAPI const):

Source/WebCore/PAL:

Add new CFNetwork SPI to CFNetworkSPI.h for open source builds and for using respondsToSelector.

  • pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

See WebCore ChangeLog.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::~NetworkConnectionToWebProcess):
(WebKit::NetworkConnectionToWebProcess::domCookiesForHost):
(WebKit::NetworkConnectionToWebProcess::unsubscribeFromCookieChangeNotifications):
(WebKit::NetworkConnectionToWebProcess::cookiesAdded):
(WebKit::NetworkConnectionToWebProcess::cookiesDeleted):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • Scripts/webkit/messages.py:
  • Shared/WebPreferences.yaml:
  • Sources.txt:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::cookiesAdded):
(WebKit::NetworkProcessConnection::cookiesDeleted):

  • WebProcess/Network/NetworkProcessConnection.h:
  • WebProcess/Network/NetworkProcessConnection.messages.in:
  • WebProcess/WebPage/Cocoa/WebCookieCacheCocoa.mm: Copied from Source/WebKit/WebProcess/WebPage/WebCookieJar.h.

(WebKit::WebCookieCache::inMemoryStorageSession):

  • WebProcess/WebPage/WebCookieCache.cpp: Added.

(WebKit::WebCookieCache::isFunctional):
(WebKit::WebCookieCache::cookiesForDOM):
(WebKit::WebCookieCache::setCookiesFromDOM):
(WebKit::WebCookieCache::cookiesAdded):
(WebKit::WebCookieCache::cookiesDeleted):
(WebKit::WebCookieCache::clear):
(WebKit::WebCookieCache::clearForHost):
(WebKit::WebCookieCache::pruneCacheIfNecessary):

  • WebProcess/WebPage/WebCookieCache.h: Copied from Source/WebKit/WebProcess/WebPage/WebCookieJar.h.
  • WebProcess/WebPage/WebCookieJar.cpp:

(WebKit::WebCookieJar::isEligibleForCache const):
(WebKit::WebCookieJar::cookies const):
(WebKit::WebCookieJar::setCookies):
(WebKit::WebCookieJar::cookiesAdded):
(WebKit::WebCookieJar::cookiesDeleted):
(WebKit::WebCookieJar::clearCache):
(WebKit::WebCookieJar::clearCacheForHost):

  • WebProcess/WebPage/WebCookieJar.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_overriddenMediaType):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::WebProcess):

  • WebProcess/WebProcess.h:

(WebKit::WebProcess::cookieJar):

Source/WTF:

Add build time flags for new feature.

  • wtf/PlatformEnable.h:
  • wtf/PlatformHave.h:

LayoutTests:

Add layout test coverage.

  • http/tests/cookies/document-cookie-after-showModalDialog-expected.txt: Added.
  • http/tests/cookies/document-cookie-after-showModalDialog.html: Added.
  • http/tests/cookies/document-cookie-during-iframe-parsing-expected.txt: Added.
  • http/tests/cookies/document-cookie-during-iframe-parsing.html: Added.
  • http/tests/cookies/resources/close-modal-dialog.html: Added.
  • http/tests/cookies/resources/document-cookie-during-iframe-parsing-iframe.html: Added.
  • http/tests/cookies/resources/set-cookie-and-serve.php: Added.
10:10 PM Changeset in webkit [256819] by Alan Coon
  • 2 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r256584. rdar://problem/59449390

MediaToolbox may not be available; check before calling MTOverrideShouldPlayHDRVideo()
https://bugs.webkit.org/show_bug.cgi?id=207733
<rdar://problem/59441647>

Reviewed by Maciej Stachowiak.

  • platform/mac/PlatformScreenMac.mm: (WebCore::setShouldOverrideScreenSupportsHighDynamicRange):

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

10:10 PM Changeset in webkit [256818] by Alan Coon
  • 11 edits in branches/safari-609-branch/Source

Cherry-pick r255881. rdar://problem/59447271

Adopt MTOverrideShouldPlayHDRVideo()
https://bugs.webkit.org/show_bug.cgi?id=207275
<rdar://problem/58837093>

Reviewed by Eric Carlson.

Source/WebCore:

  • platform/PlatformScreen.h:
  • platform/mac/PlatformScreenMac.mm: (WebCore::setShouldOverrideScreenSupportsHighDynamicRange):

Source/WebCore/PAL:

  • pal/cocoa/MediaToolboxSoftLink.cpp:
  • pal/cocoa/MediaToolboxSoftLink.h:

Source/WebKit:

The WebProcess sandbox can block access to the services necessary for MediaToolbox to determine whether
the current display is capable of displaying HDR. Rather than opening up the sandbox, provide the information
gathered by the UIProcess by way of MTOverrideShouldPlayHDRVideo().

  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::windowScreenDidChange): (WebKit::WebPage::displayID const):
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::setScreenProperties): Deleted.
  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::setScreenProperties): (WebKit::WebProcess::updatePageScreenProperties):

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

10:10 PM Changeset in webkit [256817] by Alan Coon
  • 26 edits in branches/safari-609-branch

Cherry-pick r256632. rdar://problem/59478906

NetworkLoadMetrics should be shared by multiple ResourceResponse instances
https://bugs.webkit.org/show_bug.cgi?id=207747

Reviewed by Keith Miller.

Source/WebCore:

ResourceResponse is value data, and it is copied multiple times in various places, (1) to create a new ResourceResponse
which has slightly different fields, or (1) to hold ResourceResponse even after loading finishes. For example, DocumentLoader
has Vector<ResourceResponse> to replay response dispatching in the case of loading from BackForwardCache. The problem is
that ResourceResponse is very large: 440 bytes.

While we sometimes copy ResourceResponse to modify some part of it, NetworkLoadMetrics is immutable. It is set when response is created,
and is never changed. And NetworkLoadMetrics is large: sizeof(NetworkLoadMetrics) is 184 bytes. Given that we have multiple
copies of ResourceResponse in WebCore, we should share NetworkLoadMetrics by them.

This patch puts Box<NetworkLoadMetrics> in ResourceResponse to share it with all copied ResourceResponses. We do not make NetworkLoadMetrics
RefCounted<> for now since some legit data structures embed NetworkLoadMetrics. This patch adds ArgumentCoder for Box so that we
can encode / decode Box<NetworkLoadMetrics> in ResourceResponse in IPC. To ensure NetworkLoadMetrics in ResourceResponse immutable,
we add ResourceResponse::setDeprecatedNetworkLoadMetrics instead of modifying NetworkLoadMetrics already created in ResourceResponse.

We also attempt to compact ResourceResponse more by using bit-fields. And removing m_isValid field in ParsedContentRange since
this can be represented by the different field. These changes make sizeof(ResourceResponse) from 440 to 248.

No behavior change.

  • inspector/agents/InspectorNetworkAgent.cpp: (WebCore::InspectorNetworkAgent::buildObjectForTiming): (WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):
  • inspector/agents/InspectorNetworkAgent.h:
  • loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::loadRequest):
  • loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::didFinishLoading):
  • page/PerformanceTiming.cpp: (WebCore::PerformanceTiming::domainLookupStart const): (WebCore::PerformanceTiming::domainLookupEnd const): (WebCore::PerformanceTiming::connectStart const): (WebCore::PerformanceTiming::connectEnd const): (WebCore::PerformanceTiming::secureConnectionStart const): (WebCore::PerformanceTiming::requestStart const): (WebCore::PerformanceTiming::responseStart const):
  • platform/network/NetworkLoadMetrics.h:
  • platform/network/ParsedContentRange.cpp: (WebCore::areContentRangeValuesValid): (WebCore::parseContentRange): (WebCore::ParsedContentRange::ParsedContentRange): (WebCore::ParsedContentRange::headerValue const):
  • platform/network/ParsedContentRange.h: (WebCore::ParsedContentRange::isValid const): (WebCore::ParsedContentRange::invalidValue): (WebCore::ParsedContentRange::MarkableTraits::isEmptyValue): (WebCore::ParsedContentRange::MarkableTraits::emptyValue): (WebCore::ParsedContentRange::ParsedContentRange): Deleted.
  • platform/network/ResourceHandle.h:
  • platform/network/ResourceResponseBase.cpp: (WebCore::ResourceResponseBase::ResourceResponseBase): (WebCore::ResourceResponseBase::crossThreadData const): (WebCore::ResourceResponseBase::fromCrossThreadData): (WebCore::ResourceResponseBase::compare):
  • platform/network/ResourceResponseBase.h: (WebCore::ResourceResponseBase::deprecatedNetworkLoadMetricsOrNull const): (WebCore::ResourceResponseBase::setDeprecatedNetworkLoadMetrics): (WebCore::ResourceResponseBase::encode const): (WebCore::ResourceResponseBase::decode): (WebCore::ResourceResponseBase::deprecatedNetworkLoadMetrics const): Deleted.
  • platform/network/cf/ResourceResponse.h: (WebCore::ResourceResponse::ResourceResponse):
  • platform/network/cocoa/NetworkLoadMetrics.mm: (WebCore::copyTimingData):
  • platform/network/curl/CurlResourceHandleDelegate.cpp: (WebCore::CurlResourceHandleDelegate::curlDidReceiveResponse):
  • platform/network/curl/ResourceResponse.h:
  • platform/network/curl/ResourceResponseCurl.cpp: (WebCore::ResourceResponse::setDeprecatedNetworkLoadMetrics): Deleted.
  • platform/network/mac/ResourceHandleMac.mm: (WebCore::ResourceHandle::getConnectionTimingData):
  • platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):

Source/WebKit:

Add ArgumentCoder support for Box<T>.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
  • NetworkProcess/soup/NetworkDataTaskSoup.cpp: (WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse):
  • Platform/IPC/ArgumentCoders.h: (IPC::ArgumentCoder<Box<T>>::encode): (IPC::ArgumentCoder<Box<T>>::decode):

Tools:

  • TestWebKitAPI/Tests/WebCore/ParsedContentRange.cpp: (TestWebKitAPI::TEST):

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

10:09 PM Changeset in webkit [256816] by Alan Coon
  • 2 edits in branches/safari-609-branch/LayoutTests

Cherry-pick r256435. rdar://problem/59446986

REGRESSION: (256400) tiled-drawing/scrolling/fixed/fixed-during-rubberband.html is failing
https://bugs.webkit.org/show_bug.cgi?id=207631

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:

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

10:09 PM Changeset in webkit [256815] by Alan Coon
  • 15 edits in branches/safari-609-branch/Source/JavaScriptCore

Apply patch. rdar://problem/59446991

This is a custom patch Yusuke did for the JazzkonE branch which contains content from r255540, r255987, and r256015,
in addition to whatever he saw fit for integration.

10:09 PM Changeset in webkit [256814] by Alan Coon
  • 17 edits
    2 copies in branches/safari-609-branch/Source/WebCore

Cherry-pick r256610. rdar://problem/59478918

[Web Animations] Make all animation event types inherit from the same base class
https://bugs.webkit.org/show_bug.cgi?id=207629

Reviewed by Simon Fraser.

Currently we dispatch events CSS Transitions and CSS Animations events using a dedicated event queue on DeclarativeAnimation, while the events
added by the Web Animations specification (of type AnimationPlaybackEvent) are dispatched using a shared queue on the DocumentTimeline that is
processed during the "update animations and send events procedure". The Web Animations specification dictates that all events should be dispatched
during that procedure, which includes sorting of such events based on their timeline time and associated animation relative composite order.

In this patch, we prepare the work towards spec compliance for animation events dispatch by making all event types (AnimationPlaybackEvent,
TransitionEvent and AnimationEvent) inherit from a single AnimationEventBase interface. This will allow DocumentTimeline to enqueue, sort and
dispatch all such events with a single queue in a future patch.

Due to CSSAnimationController, we must make the "timeline time" and "animation" parameters optional. When we drop support for CSSAnimationController
we'll be able to enforce stronger requirements for these.

No new test since this should not introduce any behavior change.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/AnimationEventBase.cpp: Added. (WebCore::AnimationEventBase::AnimationEventBase):
  • animation/AnimationEventBase.h: Added. (WebCore::AnimationEventBase::create): (WebCore::AnimationEventBase::isAnimationPlaybackEvent const): (WebCore::AnimationEventBase::isAnimationEvent const): (WebCore::AnimationEventBase::isTransitionEvent const): (WebCore::AnimationEventBase::timelineTime const): (WebCore::AnimationEventBase::animation const):
  • animation/AnimationPlaybackEvent.cpp: (WebCore::AnimationPlaybackEvent::AnimationPlaybackEvent): (WebCore::AnimationPlaybackEvent::bindingsTimelineTime const):
  • animation/AnimationPlaybackEvent.h:
  • animation/CSSAnimation.cpp: (WebCore::CSSAnimation::createEvent):
  • animation/CSSAnimation.h:
  • animation/CSSTransition.cpp: (WebCore::CSSTransition::createEvent):
  • animation/CSSTransition.h:
  • animation/DeclarativeAnimation.cpp: (WebCore::DeclarativeAnimation::enqueueDOMEvent):
  • animation/DeclarativeAnimation.h:
  • animation/WebAnimation.cpp: (WebCore::WebAnimation::enqueueAnimationPlaybackEvent):
  • dom/AnimationEvent.cpp: (WebCore::AnimationEvent::AnimationEvent):
  • dom/AnimationEvent.h:
  • dom/TransitionEvent.cpp: (WebCore::TransitionEvent::TransitionEvent):
  • dom/TransitionEvent.h:
  • page/animation/CSSAnimationController.cpp: (WebCore::CSSAnimationControllerPrivate::fireEventsAndUpdateStyle):

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

10:09 PM Changeset in webkit [256813] by Alan Coon
  • 4 edits
    2 adds in branches/safari-609-branch

Cherry-pick r256513. rdar://problem/59446986

REGRESSION (r255037): Zooming in and out on Quip in macOS Safari can cause the content to be offset to the side
https://bugs.webkit.org/show_bug.cgi?id=207674
rdar://problem/59404866

Reviewed by Antti Koivisto.

Source/WebCore:

Remove the early return in ScrollingStateScrollingNode::setRequestedScrollData(); comparing
with the last m_requestedScrollData is wrong, because requested scroll positions are not "state"
in the scrolling tree, they are requests to scroll. Ideally, they would be represented in some
different way in the scrolling tree.

Test: fast/scrolling/programmatic-scroll-to-zero-zero.html

  • page/scrolling/ScrollingStateScrollingNode.cpp: (WebCore::ScrollingStateScrollingNode::setRequestedScrollData):

LayoutTests:

Test that does a programmatic scroll to 0,0, does a user scroll, then a second programmatic scroll to 0,0,
which is expected to work.

  • fast/scrolling/programmatic-scroll-to-zero-zero-expected.html: Added.
  • fast/scrolling/programmatic-scroll-to-zero-zero.html: Added.
  • platform/ios/TestExpectations: Skip the new test on iOS (it relies on eventSender) and sort the grouping.

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

10:09 PM Changeset in webkit [256812] by Alan Coon
  • 4 edits in branches/safari-609-branch

Cherry-pick r256432. rdar://problem/59446974

WebSWServerConnection::registerServiceWorkerClient is not sending IPC message to UIProcess when it should
https://bugs.webkit.org/show_bug.cgi?id=207537

Reviewed by Chris Dumez.

Source/WebKit:

Covered by added API test.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: (WebKit::WebSWServerConnection::registerServiceWorkerClient): Fix use after move so that we can get the context connection and send the IPC message to UIProcess as expected.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

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

10:09 PM Changeset in webkit [256811] by Alan Coon
  • 3 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r256400. rdar://problem/59446986

Unreviewed, partial rollout of r255037.
<rdar://problem/59240559>

  • page/scrolling/cocoa/ScrollingTreeFixedNode.mm: (WebCore::ScrollingTreeFixedNode::applyLayerPositions):
  • page/scrolling/cocoa/ScrollingTreeStickyNode.mm: (WebCore::ScrollingTreeStickyNode::computeLayerPosition const):

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

10:09 PM Changeset in webkit [256810] by Alan Coon
  • 4 edits in branches/safari-609-branch

Cherry-pick r256383. rdar://problem/59446974

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

It is breaking an API test (Requested by youenn on #webkit).

Reverted changeset:

"WebSWServerConnection::registerServiceWorkerClient is not
sending IPC message to UIProcess when it should"
https://bugs.webkit.org/show_bug.cgi?id=207537
https://trac.webkit.org/changeset/256314

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

10:09 PM Changeset in webkit [256809] by Alan Coon
  • 45 edits
    5 adds in branches/safari-609-branch

Cherry-pick r255037. rdar://problem/59446986

Fixed elements no longer stay fixed with elastic overscroll
https://bugs.webkit.org/show_bug.cgi?id=206227
rdar://problem/58707084

Reviewed by Antti Koivisto.
Source/WebCore:

Intended behavior on iOS and macOS is for position:fixed and sticky elements to maintain
their position relative to the view bounds when rubber-banding ("overscrolling"). This broke
some time back. This change restores the correct behavior with the call to layoutViewportRespectingRubberBanding()
in ScrollingTreeFixedNode::applyLayerPositions() and ScrollingTreeStickyNode::computeLayerPosition().
layoutViewportRespectingRubberBanding() computes a layout viewport without clamping.

The rest of the changes are to support testing. internals.unconstrainedScrollTo()
didn't work for main frame scrolling because of scroll position clamping in various places,
so propagate ScrollClamping in more places (and replace the redundant ScrollPositionClamp with ScrollClamping).

"requested scroll position" updates now carry along both clamping and "is programmatic" data, wrapped in a struct
which is passed around the scrolling tree. This allows us to not clamp the scroll position (for testing) in more places.

Internals::unconstrainedScrollTo() needs one weird hack to trigger a layout (and thus a scrolling tree commit),
because the layout is normally triggered by a layout viewport change, but when rubber-banding we clamp the layoutViewport
used for layout, so those layouts are never triggered.

Tests: tiled-drawing/scrolling/fixed/fixed-during-rubberband.html

tiled-drawing/scrolling/sticky/sticky-during-rubberband.html

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Element.cpp: (WebCore::Element::scrollTo):
  • page/DOMWindow.cpp: (WebCore::DOMWindow::scrollTo const):
  • page/FrameView.cpp: (WebCore::FrameView::setScrollPosition): (WebCore::FrameView::requestScrollPositionUpdate):
  • page/FrameView.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp: (WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollingCoordinator.cpp:
  • page/scrolling/ScrollingCoordinator.h: (WebCore::ScrollingCoordinator::requestScrollPositionUpdate):
  • page/scrolling/ScrollingStateScrollingNode.cpp: (WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode): (WebCore::ScrollingStateScrollingNode::setRequestedScrollData): (WebCore::ScrollingStateScrollingNode::dumpProperties const): (WebCore::ScrollingStateScrollingNode::setRequestedScrollPosition): Deleted.
  • page/scrolling/ScrollingStateScrollingNode.h: (WebCore::RequestedScrollData::operator== const): (WebCore::ScrollingStateScrollingNode::requestedScrollData const): (WebCore::ScrollingStateScrollingNode::requestedScrollPosition const): Deleted. (WebCore::ScrollingStateScrollingNode::requestedScrollPositionRepresentsProgrammaticScroll const): Deleted.
  • page/scrolling/ScrollingTree.h: (WebCore::ScrollingTree::scrollingTreeNodeRequestsScroll):
  • page/scrolling/ScrollingTreeFrameScrollingNode.cpp: (WebCore::ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition const): (WebCore::ScrollingTreeFrameScrollingNode::layoutViewportRespectingRubberBanding const):
  • page/scrolling/ScrollingTreeFrameScrollingNode.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp: (WebCore::ScrollingTreeScrollingNode::commitStateAfterChildren): (WebCore::ScrollingTreeScrollingNode::adjustedScrollPosition const): (WebCore::ScrollingTreeScrollingNode::scrollBy): (WebCore::ScrollingTreeScrollingNode::scrollTo): (WebCore::ScrollingTreeScrollingNode::wasScrolledByDelegatedScrolling):
  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/cocoa/ScrollingTreeFixedNode.mm: (WebCore::ScrollingTreeFixedNode::applyLayerPositions):
  • page/scrolling/cocoa/ScrollingTreeStickyNode.mm: (WebCore::ScrollingTreeStickyNode::computeLayerPosition const):
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateAfterChildren): (WebCore::ScrollingTreeFrameScrollingNodeMac::adjustedScrollPosition const):
  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm: (WebCore::ScrollingTreeOverflowScrollingNodeMac::commitStateAfterChildren): (WebCore::ScrollingTreeOverflowScrollingNodeMac::adjustedScrollPosition const):
  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm: (WebCore::ScrollingTreeScrollingNodeDelegateMac::immediateScrollByWithoutContentEdgeConstraints):
  • platform/ScrollTypes.cpp: Added. (WebCore::operator<<):
  • platform/ScrollTypes.h:
  • platform/ScrollView.cpp: (WebCore::ScrollView::setContentsScrollPosition): (WebCore::ScrollView::setScrollPosition):
  • platform/ScrollView.h:
  • platform/ScrollableArea.cpp: (WebCore::ScrollableArea::setScrollOffsetFromAnimation):
  • platform/ScrollableArea.h: (WebCore::ScrollableArea::requestScrollPositionUpdate):
  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::scrollToOffset):
  • testing/Internals.cpp: (WebCore::Internals::unconstrainedScrollTo):

Source/WebKit:

Intended behavior on iOS and macOS is for position:fixed and sticky elements to maintain
their position relative to the view bounds when rubber-banding ("overscrolling"). This broke
some time back. This change restores the correct behavior with the call to layoutViewportRespectingRubberBanding()
in ScrollingTreeFixedNode::applyLayerPositions() and ScrollingTreeStickyNode::computeLayerPosition().
layoutViewportRespectingRubberBanding() computes a layout viewport without clamping.

The rest of the changes are to support testing. internals.unconstrainedScrollTo()
didn't work for main frame scrolling because of scroll position clamping in various places,
so propagate ScrollClamping in more places (and replace the redundant ScrollPositionClamp with ScrollClamping).

"requested scroll position" updates now carry along both clamping and "is programmatic" data, wrapped in a struct
which is passed around the scrolling tree. This allows us to not clamp the scroll position (for testing) in more places.

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: (ArgumentCoder<ScrollingStateScrollingNode>::encode): (ArgumentCoder<ScrollingStateScrollingNode>::decode): (ArgumentCoder<RequestedScrollData>::encode): (ArgumentCoder<RequestedScrollData>::decode): (WebKit::dump):
  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp: (WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeRequestsScroll):
  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
  • UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp: (WebKit::RemoteScrollingTree::scrollingTreeNodeRequestsScroll):
  • UIProcess/RemoteLayerTree/RemoteScrollingTree.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm: (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren):
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

LayoutTests:

  • tiled-drawing/scrolling/fixed/fixed-during-rubberband-expected.html: Added.
  • tiled-drawing/scrolling/fixed/fixed-during-rubberband.html: Added.
  • tiled-drawing/scrolling/sticky/sticky-during-rubberband-expected.html: Added.
  • tiled-drawing/scrolling/sticky/sticky-during-rubberband.html: Added.

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

7:12 PM Changeset in webkit [256808] by Chris Dumez
  • 14 edits in trunk

Defer execution of async scripts until until the document is loaded
https://bugs.webkit.org/show_bug.cgi?id=207698
<rdar://problem/57625747>

LayoutTests/imported/w3c:

Reviewed by Antti Koivisto.

Rebaseline WPT test to reflect behavior change. Some tests start passing and some other are now failing because
they rely on specific ordering at network level.

  • web-platform-tests/content-security-policy/script-src/scripthash-changed-1-expected.txt:
  • web-platform-tests/content-security-policy/script-src/scripthash-changed-2-expected.txt:
  • web-platform-tests/content-security-policy/script-src/scriptnonce-changed-1-expected.txt:
  • web-platform-tests/content-security-policy/script-src/scriptnonce-changed-2-expected.txt:
  • web-platform-tests/html/semantics/scripting-1/the-script-element/async_005-expected.txt:
  • web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing/085-expected.txt:
  • web-platform-tests/html/semantics/scripting-1/the-script-element/script-text-modifications-expected.txt:

Source/WebCore:

Reviewed Antti Koivisto.

Defer execution of async scripts until until the document is loaded by default to reduce time
to first paint.

  • dom/ScriptElement.h:
  • dom/ScriptRunner.cpp:

(WebCore::ScriptRunner::timerFired):
Make sure we do not defer scripts that were not added by the parser and that do not have the
'async' attribute set.

  • page/Settings.yaml:

Source/WebKit:

Reviewed by Antti Koivisto.

Defer execution of async scripts until until the document is loaded by default to reduce time
to first paint.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):

7:04 PM Changeset in webkit [256807] by zhifei_fang@apple.com
  • 4 edits in trunk/Tools

[Webkit.css] Adding popover style element
This help to prevent us reinventing the wheel ever again
https://bugs.webkit.org/show_bug.cgi?id=207787

Reviewed by Dean Jackson.

  • resultsdbpy/resultsdbpy/view/static/library/css/docs.yaml:
  • resultsdbpy/resultsdbpy/view/static/library/css/index.html:
  • resultsdbpy/resultsdbpy/view/static/library/css/webkit.css:

(.popover):
(.popover>.content):
(.popover.display):
(.popover .arrow):
(.popover .arrow.point-top):
(.popover .arrow.point-bottom):
(.popover .arrow.point-left):
(.popover .arrow.point-right):
(@media (prefers-color-scheme: dark) .popover>.content):
(@media (prefers-color-scheme: dark) .popover.display):
(@media (prefers-color-scheme: dark) .popover .arrow):
(.popover>.content>.section): Deleted.
(.popover:focus>.content, .popover:hover>.content): Deleted.
(.popover.right>.content): Deleted.
(.popover.right :focus>.content, .popover.right:hover>.content): Deleted.
(.popover.left>.content): Deleted.
(.popover.left :focus>.content, .popover.left:hover>.content): Deleted.
(.popover.bottom>.content): Deleted.
(.popover.bottom :focus>.content, .popover.bottom:hover>.content): Deleted.

6:51 PM Changeset in webkit [256806] by timothy_horton@apple.com
  • 5 edits in trunk/Source

Add and adopt HAVE(LOOKUP_GESTURE_RECOGNIZER)
https://bugs.webkit.org/show_bug.cgi?id=207876

Reviewed by Wenson Hsieh.

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

(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
(-[WKContentView gestureRecognizer:shouldReceiveTouch:]):
For symmetry's sake, introduce a HAVE for this gesture.

6:48 PM Changeset in webkit [256805] by youenn@apple.com
  • 4 edits in trunk/Source

Do not call whenReady callbacks in case of network process crash
https://bugs.webkit.org/show_bug.cgi?id=207661

Reviewed by Chris Dumez.

Source/WebCore:

  • workers/service/WorkerSWClientConnection.cpp:

(WebCore::WorkerSWClientConnection::~WorkerSWClientConnection):
The callback is a Function so it is fine not calling it and calling it with a default value is not safe.

Source/WebKit:

  • WebProcess/Storage/WebSWClientConnection.cpp:

(WebKit::WebSWClientConnection::clear):
The callback is a Function so it is fine not calling it and calling it with a default value is not safe.

6:31 PM Changeset in webkit [256804] by Peng Liu
  • 3 edits in trunk/Source/WebCore

MediaSource.isTypeSupported() says "video/mp4;codecs=\"avc3.42C015\"" is not supported, but it is
https://bugs.webkit.org/show_bug.cgi?id=207622

Reviewed by Eric Carlson.

Revert the behavior change of MediaPlayerPrivateMediaSourceAVFObjC::supportsType() in r253952.

  • platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm:

(WebCore::AVAssetMIMETypeCache::canDecodeExtendedType):

6:24 PM Changeset in webkit [256803] by Alan Coon
  • 3 edits in branches/safari-609-branch/LayoutTests

Cherry-pick r255384. rdar://problem/59447276

REGRESSION: (253807) [ macOS iOS ] storage/indexeddb/intversion-long-queue-private.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=206965

Unreviewed test gardening.

Patch by Jacob Uphoff <Jacob Uphoff> on 2020-01-29

  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:

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

5:52 PM Changeset in webkit [256802] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Changed results due to ANGLE use
https://bugs.webkit.org/show_bug.cgi?id=207858

Unreviewed test gardening.

Mark fast/canvas/webgl/program-test.html and webgl/1.0.3/conformance/programs/program-test.html as failing.

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
5:35 PM Changeset in webkit [256801] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

WebSocketChannelInspector.cpp should include ProgressTracker.h
https://bugs.webkit.org/show_bug.cgi?id=207862

Unreviewed, build fix.

  • Modules/websockets/WebSocketChannelInspector.cpp:
5:21 PM Changeset in webkit [256800] by Russell Epstein
  • 34 edits
    2 adds in branches/safari-609-branch/Source

Apply patch. rdar://problem/59447004

Apply content from rdar://problem/59447004

5:21 PM Changeset in webkit [256799] by Russell Epstein
  • 4 edits in branches/safari-609-branch/LayoutTests

Cherry-pick r256235. rdar://problem/59447276

REGRESSION: (253807) [ macOS iOS ] storage/indexeddb/intversion-long-queue-private.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=206965
<rdar://problem/59005652>

Reviewed by Ryosuke Niwa.

Modify a test to make it less flaky. Based on our current implementation, there is no guarantee that Block event on
delete request would be fired before Complete event on transaction from connection2 in this test. The events
sequence we are sure are:

  1. UpgradeNeeded event on openRequest2 -> VersionChange event on connection2 -> Complete event on VersionChange transaction on connection2 -> Success event on openRequest2.
  2. VersionChange event on connection2 -> Block event on delete request. Therefore I am changing the test to ensure sequence 1.
  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
  • storage/indexeddb/intversion-long-queue-expected.txt:
  • storage/indexeddb/intversion-long-queue-private-expected.txt:
  • storage/indexeddb/resources/intversion-long-queue.js: (connection2Blocked): (connection2UpgradeNeeded): (connection2VersionChangeCallback): (deleteDatabaseBlockedCallback): Deleted.

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

5:21 PM Changeset in webkit [256798] by Russell Epstein
  • 4 edits
    1 add in branches/safari-609-branch

Cherry-pick r256225. rdar://problem/59446983

[watchOS] Notification listener is never unregistered
https://bugs.webkit.org/show_bug.cgi?id=207459
Source/WebKit:

<rdar://problem/58923393>

Reviewed by Maciej Stachowiak.

On watchOS, the backlight changed notification is registered in WebProcessPool::registerNotificationObservers(),
but not unregistered in WebProcessPool::unregisterNotificationObservers().

API test: WebKit.BacklightLevelNotificationCrash

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::unregisterNotificationObservers):

Tools:

Reviewed by Maciej Stachowiak.

Add a test which tests that posting a backlight level change notification will not cause a crash.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/BacklightLevelNotification.mm: Added. (TEST):

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

5:21 PM Changeset in webkit [256797] by Russell Epstein
  • 2 edits in branches/safari-609-branch/LayoutTests

Cherry-pick r256213. rdar://problem/59447008

[ Mac Debug wk2 ] imported/w3c/web-platform-tests/fetch/api/request/destination/fetch-destination-worker.https.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=207509

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:

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

5:21 PM Changeset in webkit [256796] by Russell Epstein
  • 29 edits
    4 copies
    6 adds in branches/safari-609-branch

Cherry-pick r256191. rdar://problem/59447003

Disallow setting base URL to a data or JavaScript URL
https://bugs.webkit.org/show_bug.cgi?id=207136

Source/WebCore:

Reviewed by Brent Fulgham.

Inspired by <https://bugs.chromium.org/p/chromium/issues/detail?id=679318>.

Block setting the base URL to a data URL or JavaScript URL as such usage is questionable.
This makes WebKit match the behavior of Chrome and Firefox and is in the spirit of the
discussion in <https://github.com/whatwg/html/issues/2249>.

On Mac and iOS, this restriction is applied only to apps linked against a future SDK to
avoid breaking shipped apps.

For all other ports, this restriction is enabled by default.

Tests: fast/url/relative2.html

fast/url/segments-from-data-url2.html
http/tests/security/allowed-base-url-data-url-via-setting.html
http/tests/security/denied-base-url-data-url.html
http/tests/security/denied-base-url-javascript-url.html

  • dom/Document.cpp: (WebCore::Document::processBaseElement): Condition updating the parsed base URL on whether is has an allowed scheme, if restrictions are enabled. Otherwise, do what we do now. If the scheme is disallowed then log a message to the console to explain this to web developers.
  • html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::scan): Pass whether to apply restrictons to the base URL to updatePredictedBaseURL(). This depends on whether the setting is enabled or not. (WebCore::TokenPreloadScanner::updatePredictedBaseURL): Modifed to take a boolean as to whether to apply restrictions. If restrictions are not to be applied do what we do now. Otherwise, only do what we do now if the scheme for the predicated base URL is allowed.
  • html/parser/HTMLPreloadScanner.h:
  • page/SecurityPolicy.cpp: (WebCore::SecurityPolicy::isBaseURLSchemeAllowed): Added.
  • page/SecurityPolicy.h:
  • page/Settings.yaml: Add a setting to toggle restrictions on the base URL scheme.

Source/WebKit:

Reviewed by Brent Fulgham.

Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/Cocoa/WKWebView.mm: (shouldRestrictBaseURLSchemes): Added. (-[WKWebView _setupPageConfiguration:]): Update settings.
  • UIProcess/Cocoa/VersionChecks.h:

Source/WebKitLegacy/mac:

Reviewed by Brent Fulgham.

Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

  • Misc/WebKitVersionChecks.h:
  • WebView/WebView.mm: (shouldRestrictBaseURLSchemes): Added. (-[WebView _commonInitializationWithFrameName:groupName:]): Update settings.

Source/WTF:

Reviewed by Brent Fulgham.

Add some more macro definitions.

  • wtf/spi/darwin/dyldSPI.h:

LayoutTests:

RReviewed by Brent Fulgham.

Add some tests. Update others to toggle the setting to apply or unapply the new behavior.

The test denied-base-url-javascript-url.html is derived from the test base-url-javascript.html,
included in <https://chromium.googlesource.com/chromium/src.git/+/c133efa0b915430701930b76a7cfe35608b9a403>.

  • fast/url/relative-expected.txt:
  • fast/url/relative.html:
  • fast/url/relative2-expected.txt: Copied from LayoutTests/fast/url/relative-expected.txt.
  • fast/url/relative2.html: Copied from LayoutTests/fast/url/relative.html.
  • fast/url/resources/utilities.js: (setShouldEllipsizeFileURLPaths): Added. Toggles ellipsizing the path portion of a file URL to simplify matching. Otherwise, file URLs could be machine-specific. (canonicalizedPathname): Added. (segments): Modified to optionally call canonicalizedPathname. (canonicalize): Ditto.
  • fast/url/segments-from-data-url-expected.txt:
  • fast/url/segments-from-data-url.html:
  • fast/url/segments-from-data-url2-expected.txt: Copied from LayoutTests/fast/url/segments-from-data-url-expected.txt.
  • fast/url/segments-from-data-url2.html: Copied from LayoutTests/fast/url/segments-from-data-url.html.
  • fetch/fetch-url-serialization-expected.txt:
  • http/tests/plugins/navigation-during-load-embed.html:
  • http/tests/plugins/navigation-during-load.html:
  • http/tests/security/allowed-base-url-data-url-via-setting-expected.txt: Added.
  • http/tests/security/allowed-base-url-data-url-via-setting.html: Added.
  • http/tests/security/denied-base-url-data-url-expected.txt: Added.
  • http/tests/security/denied-base-url-data-url.html: Added.
  • http/tests/security/denied-base-url-javascript-url-expected.txt: Added.
  • http/tests/security/denied-base-url-javascript-url.html: Added.

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

5:21 PM Changeset in webkit [256795] by Russell Epstein
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r256426. rdar://problem/59447008

[ Mac Debug wk2 ] ASSERTION FAILED: m_wasConstructedOnMainThread == isMainThread()
https://bugs.webkit.org/show_bug.cgi?id=207509
<rdar://problem/59325466>

Reviewed by Chris Dumez.

Covered by existing tests.

  • NetworkProcess/cache/CacheStorageEngine.cpp: (WebKit::CacheStorage::Engine::writeSizeFile): Make sure completion handler is always called on the main thread. Minor refactoring to make things more efficient.

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

5:21 PM Changeset in webkit [256794] by Russell Epstein
  • 4 edits in branches/safari-609-branch

Cherry-pick r256314. rdar://problem/59446974

WebSWServerConnection::registerServiceWorkerClient is not sending IPC message to UIProcess when it should
https://bugs.webkit.org/show_bug.cgi?id=207537

Reviewed by Chris Dumez.

Source/WebKit:

Covered by added API test.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: (WebKit::WebSWServerConnection::registerServiceWorkerClient): Fix use after move so that we can get the context connection and send the IPC message to UIProcess as expected.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

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

5:21 PM Changeset in webkit [256793] by Russell Epstein
  • 1 edit in branches/safari-609-branch/Source/JavaScriptCore/runtime/OptionsList.h

Apply patch. rdar://problem/59447266

5:19 PM Changeset in webkit [256792] by achristensen@apple.com
  • 4 edits in trunk/Source

Ephemeral session data leaks between processes
https://bugs.webkit.org/show_bug.cgi?id=207404

Patch by Alex Christensen <achristensen@webkit.org> and Pavel Feldman <pavel.feldman@gmail.com> on 2020-02-17
Reviewed by Darin Adler.

Source/WebKit:

If two processes with the same bundle identifier create an ephemeral WKWebsiteDataStore, we were calling
_CFURLStorageSessionCreate with the same string, which caused our cookies to be shared. To prevent this,
add a UUID to the identifier to make them truly unique.

We don't have test infrastructure for multiple UI processes at the same time, but I manually verified
that this fixes the bug.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::ensureSession):

Source/WebKitLegacy:

  • WebCoreSupport/NetworkStorageSessionMap.cpp:

(NetworkStorageSessionMap::ensureSession):

5:07 PM Changeset in webkit [256791] by mark.lam@apple.com
  • 62 edits in trunk/Source

getVTablePointer() should return a const void*.
https://bugs.webkit.org/show_bug.cgi?id=207871
<rdar://problem/59525721>

Reviewed by Yusuke Suzuki.

Source/WebCore:

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

  • bindings/scripts/test/JS/JSInterfaceName.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSMapLike.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSReadOnlySetLike.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSSetLike.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestCEReactions.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestCallTracer.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestEnabledForContext.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestException.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestIterable.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestNode.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestPluginInterface.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestSerialization.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestStringifier.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/test/JS/JSTestTypedefs.cpp:

(WebCore::toJSNewlyCreated):

Source/WTF:

  • wtf/PointerPreparations.h:

(WTF::getVTablePointer):

4:50 PM Changeset in webkit [256790] by Megan Gardner
  • 2 edits in trunk/Source/WebKit

Data detectors do not trigger on macCatalyst
https://bugs.webkit.org/show_bug.cgi?id=207860
<rdar://problem/59038913>

Reviewed by Tim Horton.

The lookup gesture which run data detection needs touch information to function. Allow touches to be sent to the gesture.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView gestureRecognizer:shouldReceiveTouch:]):

4:43 PM Changeset in webkit [256789] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

macCatalyst: I-beam is still too aggressive in non-editable content, shows up beyond the end of text
https://bugs.webkit.org/show_bug.cgi?id=207867
<rdar://problem/59528927>

Reviewed by Wenson Hsieh.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::populateCaretContext):
Only expand the I-beam region to the end of the line in editable text.
This better matches the macOS behavior.

4:26 PM Changeset in webkit [256788] by Nikita Vasilyev
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Add "outline focused element" debug setting
https://bugs.webkit.org/show_bug.cgi?id=207819
<rdar://problem/59489993>

Reviewed by Timothy Hatcher.

When debugging accessibility issues of Web Inspector, it's helpful
to know what element is focused. Many elements have outline: none
and no clear indication of what's focused.

Add a debug setting to display a bright purple outline for all focused
elements.

  • UserInterface/Base/Main.js:

(WI.contentLoaded):

  • UserInterface/Base/Setting.js:
  • UserInterface/Views/Main.css:

(body.focus-debug *:focus):

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createDebugSettingsView):

3:45 PM Changeset in webkit [256787] by youenn@apple.com
  • 7 edits in trunk/Source/WebKit

Fix regression in NSURLSessionWebSocketTask WSS support
https://bugs.webkit.org/show_bug.cgi?id=207855

Reviewed by Alex Christensen.

Covered by http/tests/websocket/tests/hybi/simple-wss.html passing with NSURLSessionWebSocketTask code path.
When having an authentication challenge, we need to get the session from the task.
This was not working for websocket tasks.
Fix this by retrieving the session from the web socket data task, which is retrieved from the task identifier.

  • NetworkProcess/Downloads/DownloadID.h:

(WebKit::DownloadID::operator bool const):
Add operator bool for convenience.

  • NetworkProcess/NetworkSocketChannel.cpp:

(WebKit::NetworkSocketChannel::session):

  • NetworkProcess/NetworkSocketChannel.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

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

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

(WebKit::WebSocketTask::networkSession):

3:21 PM Changeset in webkit [256786] by commit-queue@webkit.org
  • 28 edits
    8 copies
    67 adds
    1 delete in trunk

Main implementation for lazy image loading
https://bugs.webkit.org/show_bug.cgi?id=200764

Patch by Rob Buis <rbuis@igalia.com> on 2020-02-17
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Set correct test option and import lazyload WPT tests into
semantics/embedded-content/the-img-element while removing
loading/lazyload directory.

  • resources/import-expectations.json:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/below-viewport-image-loading-lazy-load-event-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/below-viewport-image-loading-lazy-load-event.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/common.js: Added.

(ElementLoadPromise):
(ElementLoadPromise.prototype.element):
(is_image_fully_loaded):

  • web-platform-tests/html/semantics/embedded-content/the-img-element/disconnected-image-loading-lazy-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/disconnected-image-loading-lazy.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/iframe-loading-eager-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/loading/lazyload/iframe-loading-eager.tentative-expected.txt.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/iframe-loading-eager.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/loading/lazyload/iframe-loading-eager.tentative.html.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/iframe-loading-lazy-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/iframe-loading-lazy.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/loading/lazyload/iframe-loading-lazy.tentative.html.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-eager-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/loading/lazyload/image-loading-eager.tentative-expected.txt.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-eager.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/loading/lazyload/image-loading-eager.tentative.html.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-below-viewport-dynamic-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-below-viewport-dynamic.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-cross-origin-ifame-001.sub-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-cross-origin-ifame-001.sub.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-cross-origin-ifame-002.sub-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-cross-origin-ifame-002.sub.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-script-disabled-iframe-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-script-disabled-iframe.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-viewport-dynamic-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-viewport-dynamic.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-load-event-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-load-event.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-move-document-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-move-document.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-move-into-script-disabled-iframe-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-move-into-script-disabled-iframe.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-multicol-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-multicol.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/loading/lazyload/image-loading-lazy.tentative.html.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/invisible-image-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/invisible-image.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/move-element-and-scroll-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/move-element-and-scroll.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-below-viewport-image-loading-lazy-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-below-viewport-image-loading-lazy.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-image-loading-lazy-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-image-loading-lazy.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied-2-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied-2.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied-iframe-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied-iframe.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-crossorigin-applied.sub-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-crossorigin-applied.sub.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-referrer-policy-applied.sub-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/original-referrer-policy-applied.sub.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/picture-loading-lazy-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/picture-loading-lazy.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/remove-element-and-scroll-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/remove-element-and-scroll.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/resources/image-loading-lazy-below-viewport-iframe.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/resources/image-loading-lazy-in-viewport-iframe.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/resources/image.png: Renamed from LayoutTests/imported/w3c/web-platform-tests/loading/lazyload/resources/image.png.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/resources/newwindow.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/resources/referrer-checker-img.py: Added.

(main):

  • web-platform-tests/html/semantics/embedded-content/the-img-element/resources/subframe.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/loading/lazyload/resources/subframe.html.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/resources/w3c-import.log:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/w3c-import.log:
  • web-platform-tests/loading/lazyload/resources/w3c-import.log: Removed.
  • web-platform-tests/loading/lazyload/w3c-import.log: Removed.

Source/WebCore:

Implement lazy image loading as specified here [1]. Lazy image loading
is controlled by the loading attribute on <img>. When the loading attribute is
not specified, the behavior is like before this patch, i.e. loading is
eager.

Not all loading=lazy requests will turn into actual lazy image loads, when
scripting is turned off they will not be deferred [2].

This implementation relies on Intersection Observer and hence works on WK2 only.

Deferred images are painted using a simple outline until fully loaded.

[1] https://html.spec.whatwg.org/#attr-img-loading
[2] https://html.spec.whatwg.org/#will-lazy-load-image-steps

Tests: http/tests/lazyload/attribute.html

http/tests/lazyload/js-image.html
http/tests/lazyload/lazy-image-load-in-iframes-scripting-disabled.html
http/tests/lazyload/lazy-image-load-in-iframes-scripting-enabled.html
http/tests/lazyload/lazy.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/below-viewport-image-loading-lazy-load-event.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/disconnected-image-loading-lazy.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/iframe-loading-eager.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/iframe-loading-lazy.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-eager.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-below-viewport-dynamic.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-cross-origin-ifame-001.sub.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-cross-origin-ifame-002.sub.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-script-disabled-iframe.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-viewport-dynamic.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-load-event.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-move-document.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-move-into-script-disabled-iframe.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-multicol.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/invisible-image.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/move-element-and-scroll.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-below-viewport-image-loading-lazy.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-image-loading-lazy.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied-2.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied-iframe.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/original-base-url-applied.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/original-crossorigin-applied.sub.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/original-referrer-policy-applied.sub.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/picture-loading-lazy.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/remove-element-and-scroll.html

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::lazyLoadImageObserver):

  • dom/Document.h:
  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::HTMLImageElement):
(WebCore::HTMLImageElement::create):
(WebCore::HTMLImageElement::hasLazyLoadableAttributeValue):
(WebCore::HTMLImageElement::parseAttribute):
(WebCore::HTMLImageElement::loadDeferredImage):
(WebCore::HTMLImageElement::didMoveToNewDocument):
(WebCore::HTMLImageElement::loadingForBindings const):
(WebCore::HTMLImageElement::setLoadingForBindings):
(WebCore::HTMLImageElement::isDeferred const):
(WebCore::HTMLImageElement::isLazyLoadable const):

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::createdByParser const): Deleted.

  • html/HTMLImageElement.idl:
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::didMoveToNewDocument):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::didMoveToNewDocument):

  • html/HTMLTagNames.in:
  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::didMoveToNewDocument):

  • html/LazyLoadImageObserver.cpp: Added.

(WebCore::LazyLoadImageObserver::observe):
(WebCore::LazyLoadImageObserver::unobserve):
(WebCore::LazyLoadImageObserver::intersectionObserver):
(WebCore::LazyLoadImageObserver::isObserved const):

  • html/LazyLoadImageObserver.h: Added.

(WebCore::LazyLoadImageObserver::create):

  • html/parser/HTMLPreloadScanner.cpp:

(WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest):
(WebCore::TokenPreloadScanner::StartTagScanner::processAttribute):

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::updateFromElement):
(WebCore::ImageLoader::notifyFinished):
(WebCore::ImageLoader::elementDidMoveToNewDocument):
(WebCore::ImageLoader::loadDeferredImage):

  • loader/ImageLoader.h:

(WebCore::ImageLoader::isDeferred const):

  • loader/cache/CachedImage.h:
  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestImage):
(WebCore::CachedResourceLoader::requestResource):
(WebCore::CachedResourceLoader::determineRevalidationPolicy const):
(WebCore::CachedResourceLoader::clientDefersImage const):
(WebCore::CachedResourceLoader::shouldDeferImageLoad const):
(WebCore::CachedResourceLoader::reloadImagesIfNotDeferred):

  • loader/cache/CachedResourceLoader.h:
  • rendering/RenderImage.cpp:

(WebCore::isDeferredImage):
(WebCore::RenderImage::paintReplaced):

  • svg/SVGImageElement.cpp:

(WebCore::SVGImageElement::didMoveToNewDocument):

LayoutTests:

Import relevant tests into http/tests/lazyload.
Skip lazy image load tests for WK1 and windows, which
has IntersectionObserver turned off by default.

  • TestExpectations:
  • http/tests/lazyload/attribute-expected.txt: Added.
  • http/tests/lazyload/attribute.html: Added.
  • http/tests/lazyload/js-image-expected.txt: Added.
  • http/tests/lazyload/js-image.html: Added.
  • http/tests/lazyload/lazy-expected.txt: Added.
  • http/tests/lazyload/lazy-image-load-in-iframes-scripting-disabled-expected.txt: Added.
  • http/tests/lazyload/lazy-image-load-in-iframes-scripting-disabled.html: Added.
  • http/tests/lazyload/lazy-image-load-in-iframes-scripting-enabled-expected.txt: Added.
  • http/tests/lazyload/lazy-image-load-in-iframes-scripting-enabled.html: Added.
  • http/tests/lazyload/lazy.html: Added.
  • http/tests/lazyload/placeholder.js: Added.

(is_image_fully_loaded):

  • http/tests/lazyload/resources/lazy-load-in-iframe.html: Added.
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
3:19 PM Changeset in webkit [256785] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] webgpu/whlsl/do-while-loop-continue.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=207864

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:10 PM Changeset in webkit [256784] by dino@apple.com
  • 25 edits
    1 delete in trunk

[WebGL] Enable ANGLE by default for Cocoa platforms
https://bugs.webkit.org/show_bug.cgi?id=205483
rdar://56925821

Reviewed by Simon Fraser.

Source/WTF:

  • wtf/Platform.h:

LayoutTests:

Rebaseline a bunch of tests and mark expectations.

  • fast/canvas/webgl/copy-tex-image-and-sub-image-2d-bad-input-expected.txt:
  • fast/canvas/webgl/draw-elements-out-of-bounds-uint-index-expected.txt:
  • fast/canvas/webgl/drawElements-empty-vertex-data-expected.txt:
  • fast/canvas/webgl/readPixels-float-expected.txt:
  • fast/canvas/webgl/simulated-vertexAttrib0-invalid-indicies-expected.txt:
  • fast/canvas/webgl/simulated-vertexAttrib0-invalid-indicies.html:
  • fast/canvas/webgl/vertexAttribPointer-with-bad-offset-expected.txt:
  • fast/canvas/webgl/webgl-drawarrays-crash-2-expected.txt:
  • fast/canvas/webgl/webgl-drawarrays-crash-expected.txt:
  • fast/canvas/webgl/webgl2-texture-upload-enums-expected.txt:
  • platform/ios-device/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/ios/webgl/1.0.3/conformance/extensions/oes-texture-float-expected.txt: Removed.
  • platform/mac/TestExpectations:
  • webgl/1.0.3/conformance/context/context-lost-restored-expected.txt:
  • webgl/1.0.3/conformance/extensions/oes-texture-float-expected.txt:
  • webgl/1.0.3/conformance/extensions/oes-texture-half-float-expected.txt:
  • webgl/1.0.3/conformance/glsl/misc/shader-struct-scope-expected.txt:
  • webgl/1.0.3/conformance/glsl/misc/shaders-with-invariance-expected.txt:
  • webgl/1.0.3/conformance/glsl/misc/shaders-with-name-conflicts-expected.txt:
  • webgl/1.0.3/conformance/misc/webgl-specific-expected.txt:
  • webgl/1.0.3/conformance/rendering/point-no-attributes-expected.txt:
  • webgl/1.0.3/conformance/textures/texture-copying-feedback-loops-expected.txt:
3:05 PM Changeset in webkit [256783] by Alan Coon
  • 1 copy in tags/Safari-609.1.19.1

Tag Safari-609.1.19.1.

3:02 PM Changeset in webkit [256782] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-2d-overflow.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=148405

RUnreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:02 PM Changeset in webkit [256781] by Alan Coon
  • 1 copy in branches/safari-610.1.4-branch

New branch.

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

Allow suffixes on com.apple.WebKit.WebContent XPC service name
https://bugs.webkit.org/show_bug.cgi?id=207856
<rdar://problem/59455881>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-02-17
Reviewed by Chris Dumez.

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:

(WebKit::XPCServiceEventHandler):

2:58 PM Changeset in webkit [256779] by ysuzuki@apple.com
  • 9 edits
    1 add in trunk

[JSC] JITThunk should be HashSet<Weak<NativeExecutable>> with appropriate GC weakness handling
https://bugs.webkit.org/show_bug.cgi?id=207715

Reviewed by Darin Adler.

JSTests:

  • stress/stress-jitthunks.js: Added.

(let.set newGlobal):
(set catch):

Source/JavaScriptCore:

This patch refines JITThunks GC-aware Weak hash map for NativeExecutable. Previously, we have
HashMap<std::tuple<TaggedNativeFunction, TaggedNativeFunction, String>, Weak<NativeExecutable>> table.
But this is not good because the first tuple's information is already in NativeExecutable.
But we were using this design since Weak<NativeExecutable> can be nullified because of Weak<>. If this
happens, we could have invalid Entry in HashMap which does not have corresponding values. This will
cause crash when rehasing requires hash code for this entry.

But this HashMap is very bad in terms of memory usage. Each entry has 32 bytes, and this table gets enough
large. We identified that this table is consuming much memory in Membuster. So it is worth designing
carefully crafted data structure which only holds Weak<NativeExecutable> by leveraging the deep interaction
with our GC implementation.

This patch implements new design of JITThunks, which uses HashSet<Weak<NativeExecutable>> and carefully crafted
HashTraits / KeyTraits to handle Weak<> well.

  1. Each Weak should have finalizer, and this finalizer should remove dead Weak<NativeExecutable> from HashSet.

This is ensuring that all the keys in HashSet is, even if Weak<> is saying it is Dead, it still has an way
to access content of NativeExecutable if the content is not a JS objects. For example, we can get function
pointer from dead Weak<NativeExecutable> if it is not yet finalized. Since we remove all finalized Weak<>
from the table, this finalizer mechanism allows us to access function pointers etc. from Weak<NativeExecutable>
so long as it is held in this table.

  1. Getting NativeExecutable* from JITThunks should have special protocol.

When getting NativeExecutable* from JITThunks, we do the following,

  1. First, we check we have an Entry in JITThunks. If it does not exist, we should insert it anyway.

1.1. If it exists, we should check whether this Weak<NativeExecutable> is dead or not. It is possible that

dead one is still in the table because "dead" does not mean that it is "finalized". Until finalizing happens (and
it can be delayed by incremental-sweeper), Weak<NativeExecutable> can be dead but still accessible. So the table
is still holding dead one. If we get dead one, we should insert a new one.

1.2. If it is not dead, we return it.

  1. Second, we create a new NativeExecutable and insert it. In that case, it is possible that the table already has Weak<NativeExecutable>, but it is dead. In that case, we need to explicitly replace it with newly created one since old one is holding old content. If we replaced, finalizer of Weak<> will not be invoked since it immediately deallocates Weak<>. So, it does not happen that this newly inserted NativeExecutable* is removed by the finalizer registered by the old Weak<>.

This change makes memory usage of JITThunks table 1/4.

  • heap/Weak.cpp:

(JSC::weakClearSlowCase):

  • heap/Weak.h:

(JSC::Weak::Weak):
(JSC::Weak::isHashTableEmptyValue const):
(JSC::Weak::unsafeImpl const):
(WTF::HashTraits<JSC::Weak<T>>::isEmptyValue):

  • heap/WeakInlines.h:

(JSC::Weak<T>::Weak):

  • jit/JITThunks.cpp:

(JSC::JITThunks::JITThunks):
(JSC::JITThunks::WeakNativeExecutableHash::hash):
(JSC::JITThunks::WeakNativeExecutableHash::equal):
(JSC::JITThunks::HostKeySearcher::hash):
(JSC::JITThunks::HostKeySearcher::equal):
(JSC::JITThunks::NativeExecutableTranslator::hash):
(JSC::JITThunks::NativeExecutableTranslator::equal):
(JSC::JITThunks::NativeExecutableTranslator::translate):
(JSC::JITThunks::finalize):
(JSC::JITThunks::hostFunctionStub):
(JSC::JITThunks::clearHostFunctionStubs): Deleted.

  • jit/JITThunks.h:
  • runtime/NativeExecutable.h:
  • tools/JSDollarVM.cpp:

(JSC::functionGCSweepAsynchronously):
(JSC::functionCreateEmptyFunctionWithName):
(JSC::JSDollarVM::finishCreation):

2:56 PM Changeset in webkit [256778] by Alan Coon
  • 1 copy in tags/Safari-610.1.3.1

Tag Safari-610.1.3.1.

2:54 PM Changeset in webkit [256777] by Brent Fulgham
  • 5 edits
    1 add in trunk/Tools

Update WebKit Tools to issue mach extensions as needed
https://bugs.webkit.org/show_bug.cgi?id=207850
<rdar://problem/59521019>

Reviewed by Per Arne Vollan.

Revise the codesign settings for our testing tools to allow the process to vend mach extensions
to its child processes (WebContent, GPU, Network, etc.) as needed.

  • MiniBrowser/MiniBrowser.entitlements:
  • TestWebKitAPI/Configurations/TestWebKitAPI-macOS.entitlements: Added.
  • TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • WebKitTestRunner/Configurations/WebKitTestRunner.entitlements:
2:53 PM Changeset in webkit [256776] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-rotated.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207861

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
2:47 PM Changeset in webkit [256775] by Alan Coon
  • 8 edits in branches/safari-610.1.3-branch/Source

Versioning.

2:40 PM Changeset in webkit [256774] by Jon Davis
  • 29 edits
    9 adds in trunk/Source/WebInspectorUI

Update resource, type, and instrument icons for light, dark, and override colors
https://bugs.webkit.org/show_bug.cgi?id=207587

Reviewed by Timothy Hatcher.

  • UserInterface/Images/ApplicationCacheManifest.svg: Added.
  • UserInterface/Images/Beacon.svg:
  • UserInterface/Images/ClippingIcons.svg: Added.
  • UserInterface/Images/Cookie.svg: Added.
  • UserInterface/Images/Database.svg: Added.
  • UserInterface/Images/DocumentIcons.svg: Added.
  • UserInterface/Images/FolderGeneric.svg: Added.
  • UserInterface/Images/InstrumentIcons.svg: Added.
  • UserInterface/Images/Origin.svg:
  • UserInterface/Images/Stopwatch.svg:
  • UserInterface/Images/TableIcons.svg: Added.
  • UserInterface/Images/TypeIcons.svg: Added.
  • UserInterface/Views/AuditTreeElement.css:

(.audit.test-case .icon):
(.audit.test-group .icon):
(.audit.test-case-result .icon):
(.audit.test-group-result .icon):
(@media (prefers-color-scheme: dark) .audit.test-case .icon):
(@media (prefers-color-scheme: dark) .audit.test-group .icon):
(@media (prefers-color-scheme: dark) .audit.test-case-result .icon):
(@media (prefers-color-scheme: dark) .audit.test-group-result .icon):

  • UserInterface/Views/BreakpointTreeElement.css:

(.breakpoint-exception-icon .icon):
(.breakpoint-assertion-icon .icon):
(.breakpoint-microtask-icon .icon):
(.breakpoint-paused-icon .icon):
(@media (prefers-color-scheme: dark) .breakpoint-exception-icon .icon):
(@media (prefers-color-scheme: dark) .breakpoint-assertion-icon .icon):
(@media (prefers-color-scheme: dark) .breakpoint-microtask-icon .icon):
(@media (prefers-color-scheme: dark) .breakpoint-paused-icon .icon):

  • UserInterface/Views/CallFrameIcons.css:

(.program-icon .icon):
(.function-icon .icon):
(.event-listener-icon .icon):
(.native-icon .icon):
(.tail-deleted .icon):
(@media (prefers-color-scheme: dark) .program-icon .icon):
(@media (prefers-color-scheme: dark) .function-icon .icon):
(@media (prefers-color-scheme: dark) .event-listener-icon .icon):
(@media (prefers-color-scheme: dark) .native-icon .icon):
(@media (prefers-color-scheme: dark) .tail-deleted .icon):

  • UserInterface/Views/CanvasSidebarPanel.css:

(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.folder-icon > .icon):
(@media (prefers-color-scheme: dark) .sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.folder-icon > .icon):

  • UserInterface/Views/DOMBreakpointTreeElement.css:

(.breakpoint.dom.breakpoint-for-subtree-modified:not(.breakpoint-paused-icon) .icon):
(.breakpoint.dom.breakpoint-for-attribute-modified:not(.breakpoint-paused-icon) .icon):
(.breakpoint.dom.breakpoint-for-node-removed:not(.breakpoint-paused-icon) .icon):
(@media (prefers-color-scheme: dark) .breakpoint.dom.breakpoint-for-subtree-modified:not(.breakpoint-paused-icon) .icon):
(@media (prefers-color-scheme: dark) .breakpoint.dom.breakpoint-for-attribute-modified:not(.breakpoint-paused-icon) .icon):
(@media (prefers-color-scheme: dark) .breakpoint.dom.breakpoint-for-node-removed:not(.breakpoint-paused-icon) .icon):

  • UserInterface/Views/DOMNodeTreeElement.css:

(.tree-outline .item.dom-node .icon):
(@media (prefers-color-scheme: dark) .tree-outline .item.dom-node .icon):

  • UserInterface/Views/FolderIcon.css:

(.folder-icon .icon):
(.tree-outline:focus .folder-icon.selected .icon):
(.origin-icon .icon):
(.tree-outline:focus .origin-icon.selected .icon):
(@media (prefers-color-scheme: dark) .folder-icon .icon):
(@media (prefers-color-scheme: dark) .origin-icon .icon):

  • UserInterface/Views/HeapAllocationsTimelineOverviewGraph.css:

(.timeline-overview-graph.heap-allocations > img.snapshot):
(@media (prefers-color-scheme: dark) .timeline-overview-graph.heap-allocations > img.snapshot):

  • UserInterface/Views/HeapAllocationsTimelineView.css:

(.timeline-view.heap-allocations > .data-grid td .icon.heap-snapshot):
(@media (prefers-color-scheme: dark) .timeline-view.heap-allocations > .data-grid td .icon.heap-snapshot):

  • UserInterface/Views/HeapSnapshotInstancesContentView.css:

(.heap-snapshot .icon):
(.heap-snapshot .icon.native):
(.heap-snapshot .icon.boolean):
(.heap-snapshot .icon.function):
(.heap-snapshot .icon.number):
(.heap-snapshot .icon.bigint):
(.heap-snapshot .icon.object):
(.heap-snapshot .icon.node):
(.heap-snapshot .icon.regex):
(.heap-snapshot .icon.string):
(.heap-snapshot .icon.symbol):
(@media (prefers-color-scheme: dark) .heap-snapshot .icon):
(@media (prefers-color-scheme: dark) .heap-snapshot .icon.native):
(@media (prefers-color-scheme: dark) .heap-snapshot .icon.boolean):
(@media (prefers-color-scheme: dark) .heap-snapshot .icon.function):
(@media (prefers-color-scheme: dark) .heap-snapshot .icon.number):
(@media (prefers-color-scheme: dark) .heap-snapshot .icon.bigint):
(@media (prefers-color-scheme: dark) .heap-snapshot .icon.object):
(@media (prefers-color-scheme: dark) .heap-snapshot .icon.node):
(@media (prefers-color-scheme: dark) .heap-snapshot .icon.regex):
(@media (prefers-color-scheme: dark) .heap-snapshot .icon.string):
(@media (prefers-color-scheme: dark) .heap-snapshot .icon.symbol):

  • UserInterface/Views/IdleTreeElement.css:

(.details-section.call-stack .idle .icon):
(@media (prefers-color-scheme: dark) .details-section.call-stack .idle .icon):

  • UserInterface/Views/LayerDetailsSidebarPanel.css:

(.panel.details.layer .name-column .icon):
(.panel.details.layer tr.reflection .name-column .icon):
(.panel.details.layer tr.pseudo-element .name-column .icon):
(@media (prefers-color-scheme: dark) .panel.details.layer .name-column .icon):
(@media (prefers-color-scheme: dark) .panel.details.layer tr.reflection .name-column .icon):
(@media (prefers-color-scheme: dark) .panel.details.layer tr.pseudo-element .name-column .icon):

  • UserInterface/Views/LayerTreeDetailsSidebarPanel.css:

(.panel.details.layer-tree .name-column .icon):
(.panel.details.layer-tree tr.reflection .name-column .icon):
(.panel.details.layer-tree tr.pseudo-element .name-column .icon):
(@media (prefers-color-scheme: dark) .panel.details.layer-tree .name-column .icon):
(@media (prefers-color-scheme: dark) .panel.details.layer-tree tr.reflection .name-column .icon):
(@media (prefers-color-scheme: dark) .panel.details.layer-tree tr.pseudo-element .name-column .icon):

  • UserInterface/Views/NetworkTableContentView.css:

(.network-table > .table li:not(.selected) .cell:not(.current-session)):
(.network-table > .table .cell.dom-node.name .icon):
(@media (prefers-color-scheme: dark) .breakpoint-assertion-icon .icon):
(@media (prefers-color-scheme: dark) .network-table > .table .cell.dom-node.name .icon):
(.network-table .cell.dom-node.name .icon): Deleted.

  • UserInterface/Views/ObjectTreePropertyTreeElement.css:

(.object-tree-property.boolean > .icon):
(.object-tree-property.function > .icon):
(.object-tree-property.number > .icon):
(.object-tree-property.bigint > .icon):
(.object-tree-property.object > .icon):
(.object-tree-property.object.null > .icon):
(.object-tree-property.object.node > .icon):
(.object-tree-property.regex > .icon):
(.object-tree-property.string > .icon):
(.object-tree-property.symbol > .icon):
(.object-tree-property.accessor > .icon,):
(.object-tree-property.had-error > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.boolean > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.function > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.number > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.bigint > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.object > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.object.null > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.object.node > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.regex > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.string > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.symbol > .icon):
(@media (prefers-color-scheme: dark) .object-tree-property.accessor > .icon,):
(@media (prefers-color-scheme: dark) .object-tree-property.had-error > .icon):

  • UserInterface/Views/PathComponentIcons.css:

(.request-icon .icon):
(.response-icon .icon):
(.heap-snapshot-summary-icon .icon):
(.heap-snapshot-instances-icon .icon):
(.heap-snapshot-object-graph-icon .icon):
(.dom-element-icon .icon):
(.dom-pseudo-element-icon .icon):
(.dom-text-node-icon .icon):
(.dom-comment-icon .icon):
(.dom-document-type-icon .icon):
(.dom-document-icon .icon):
(.dom-character-data-icon .icon):
(.dom-node-icon .icon):
(.object-icon .icon):
(.function-icon .icon):
(.native-icon .icon):
(.program-icon .icon):
(.events-icon .icon):
(.call-trees-icon .icon):
(.snapshot-list-icon .icon):
(.snapshot-diff-icon .icon):
(.image-icon .icon):
(.source-icon .icon):
(@media (prefers-color-scheme: dark) .request-icon .icon):
(@media (prefers-color-scheme: dark) .response-icon .icon):
(@media (prefers-color-scheme: dark) .heap-snapshot-summary-icon .icon):
(@media (prefers-color-scheme: dark) .heap-snapshot-instances-icon .icon):
(@media (prefers-color-scheme: dark) .heap-snapshot-object-graph-icon .icon):
(@media (prefers-color-scheme: dark) .dom-element-icon .icon):
(@media (prefers-color-scheme: dark) .dom-pseudo-element-icon .icon):
(@media (prefers-color-scheme: dark) .dom-text-node-icon .icon):
(@media (prefers-color-scheme: dark) .dom-comment-icon .icon):
(@media (prefers-color-scheme: dark) .dom-document-type-icon .icon):
(@media (prefers-color-scheme: dark) .dom-document-icon .icon):
(@media (prefers-color-scheme: dark) .dom-character-data-icon .icon):
(@media (prefers-color-scheme: dark) .dom-node-icon .icon):
(@media (prefers-color-scheme: dark) .object-icon .icon):
(@media (prefers-color-scheme: dark) .function-icon .icon):
(@media (prefers-color-scheme: dark) .native-icon .icon):
(@media (prefers-color-scheme: dark) .program-icon .icon):
(@media (prefers-color-scheme: dark) .events-icon .icon):
(@media (prefers-color-scheme: dark) .call-trees-icon .icon):
(@media (prefers-color-scheme: dark) .snapshot-list-icon .icon):
(@media (prefers-color-scheme: dark) .snapshot-diff-icon .icon):
(@media (prefers-color-scheme: dark) .source-icon .icon):

  • UserInterface/Views/ProfileView.css:

(.profile > .data-grid td .icon.function-icon):
(.profile > .data-grid td .icon.native-icon):
(.profile > .data-grid td .icon.program-icon):
(@media (prefers-color-scheme: dark) .profile > .data-grid td .icon.function-icon):
(@media (prefers-color-scheme: dark) .profile > .data-grid td .icon.native-icon):
(@media (prefers-color-scheme: dark) .profile > .data-grid td .icon.program-icon):

  • UserInterface/Views/ResourceIcons.css:

(.resource-icon .icon):
(.resource-icon.override .icon):
(.resource-icon.resource-type-document .icon):
(.resource-icon.resource-type-document.override .icon):
(.resource-icon.resource-type-image .icon):
(.resource-icon.resource-type-image.override .icon):
(.resource-icon.resource-type-font .icon):
(.resource-icon.resource-type-font.override .icon):
(:matches(.resource-icon.resource-type-style-sheet, .style-sheet-icon) .icon):
(:matches(.resource-icon.resource-type-style-sheet.override, .style-sheet-icon.override) .icon):
(.resource-icon.resource-type-script .icon):
(.resource-icon.resource-type-script.override .icon):
(.anonymous-script-icon .icon):
(.source-map-resource.resource-icon .icon):
(.source-map-resource.resource-icon.resource-type-style-sheet .icon):
(.source-map-resource.resource-icon.resource-type-script .icon):
(.script.worker-icon .icon):
(.script.worker-icon.override .icon):
(.resource-icon.resource-type-websocket .icon):
(.resource-icon.resource-type-ping .icon,):
(.resource-icon.resource-type-range .icon):
(@media (prefers-color-scheme: dark) .resource-icon .icon):
(@media (prefers-color-scheme: dark) .resource-icon.override .icon):
(@media (prefers-color-scheme: dark) .resource-icon.resource-type-document .icon):
(@media (prefers-color-scheme: dark) .resource-icon.resource-type-document.override .icon):
(@media (prefers-color-scheme: dark) .resource-icon.resource-type-image .icon):
(@media (prefers-color-scheme: dark) .resource-icon.resource-type-image.override .icon):
(@media (prefers-color-scheme: dark) .resource-icon.resource-type-font .icon):
(@media (prefers-color-scheme: dark) .resource-icon.resource-type-font.override .icon):
(@media (prefers-color-scheme: dark) :matches(.resource-icon.resource-type-style-sheet, .style-sheet-icon) .icon):
(@media (prefers-color-scheme: dark) :matches(.resource-icon.resource-type-style-sheet.override, .style-sheet-icon.override) .icon):
(@media (prefers-color-scheme: dark) .resource-icon.resource-type-script .icon):
(@media (prefers-color-scheme: dark) .resource-icon.resource-type-script.override .icon):
(@media (prefers-color-scheme: dark) .anonymous-script-icon .icon):
(@media (prefers-color-scheme: dark) .source-map-resource.resource-icon .icon):
(@media (prefers-color-scheme: dark) .source-map-resource.resource-icon.resource-type-style-sheet .icon):
(@media (prefers-color-scheme: dark) .source-map-resource.resource-icon.resource-type-script .icon):
(@media (prefers-color-scheme: dark) .script.worker-icon .icon):
(@media (prefers-color-scheme: dark) .script.worker-icon.override .icon):
(@media (prefers-color-scheme: dark) .resource-icon.resource-type-websocket .icon):
(@media (prefers-color-scheme: dark) .resource-icon.resource-type-ping .icon,):
(@media (prefers-color-scheme: dark) .resource-icon.resource-type-range .icon):
(.large .resource-icon .icon): Deleted.
(.large .resource-icon.resource-type-document .icon): Deleted.
(.large .resource-icon.resource-type-image .icon): Deleted.
(.large .resource-icon.resource-type-font .icon): Deleted.
(.large :matches(.resource-icon.resource-type-style-sheet, .style-sheet-icon) .icon): Deleted.
(.large .resource-icon.resource-type-script .icon): Deleted.
(.large .anonymous-script-icon .icon): Deleted.
(.large .source-map-resource.resource-icon .icon): Deleted.
(.large .source-map-resource.resource-icon.resource-type-style-sheet .icon): Deleted.
(.large .source-map-resource.resource-icon.resource-type-script .icon): Deleted.
(.large .script.worker-icon .icon): Deleted.
(.large .resource-icon.resource-type-websocket .icon): Deleted.
(.large .resource-icon.resource-type-range .icon): Deleted.

  • UserInterface/Views/SearchIcons.css:

(.dom-match-element-icon .icon):
(.dom-match-text-node-icon .icon):
(.dom-match-comment-icon .icon):
(.dom-match-document-type-icon .icon):
(.dom-match-character-data-icon .icon):
(.dom-match-node-icon .icon):
(.source-code-match .icon):
(@media (prefers-color-scheme: dark) .dom-match-element-icon .icon):
(@media (prefers-color-scheme: dark) .dom-match-text-node-icon .icon):
(@media (prefers-color-scheme: dark) .dom-match-comment-icon .icon):
(@media (prefers-color-scheme: dark) .dom-match-document-type-icon .icon):
(@media (prefers-color-scheme: dark) .dom-match-character-data-icon .icon):
(@media (prefers-color-scheme: dark) .dom-match-node-icon .icon):
(@media (prefers-color-scheme: dark) .source-code-match .icon):

  • UserInterface/Views/StorageIcons.css:

(.application-cache-manifest .icon):
(.application-cache-frame .icon):
(.cookie-icon .icon):
(.local-storage-icon .icon):
(.session-storage-icon .icon):
(.database-icon .icon):
(.database-table-icon .icon):
(@media (prefers-color-scheme: dark) .application-cache-manifest .icon):
(@media (prefers-color-scheme: dark) .application-cache-frame .icon):
(@media (prefers-color-scheme: dark) .local-storage-icon .icon):
(@media (prefers-color-scheme: dark) .session-storage-icon .icon):
(@media (prefers-color-scheme: dark) .database-icon .icon):
(@media (prefers-color-scheme: dark) .database-table-icon .icon):

  • UserInterface/Views/StyleRuleIcons.css:

(.author-style-rule-icon .icon):
(.author-style-rule-icon.pseudo-selector .icon):
(.user-style-rule-icon .icon):
(.user-style-rule-icon.pseudo-selector .icon):
(.user-agent-style-rule-icon .icon):
(.user-agent-style-rule-icon.pseudo-selector .icon):
(.inspector-style-rule-icon .icon):
(.inspector-style-rule-icon.pseudo-selector .icon):
(.inherited-style-rule-icon .icon):
(.inherited-element-style-rule-icon .icon):
(@media (prefers-color-scheme: dark) .author-style-rule-icon .icon):
(@media (prefers-color-scheme: dark) .author-style-rule-icon.pseudo-selector .icon):
(@media (prefers-color-scheme: dark) .user-style-rule-icon .icon):
(@media (prefers-color-scheme: dark) .user-style-rule-icon.pseudo-selector .icon):
(@media (prefers-color-scheme: dark) .user-agent-style-rule-icon .icon):
(@media (prefers-color-scheme: dark) .user-agent-style-rule-icon.pseudo-selector .icon):
(@media (prefers-color-scheme: dark) .inspector-style-rule-icon .icon):
(@media (prefers-color-scheme: dark) .inspector-style-rule-icon.pseudo-selector .icon):
(@media (prefers-color-scheme: dark) .inherited-style-rule-icon .icon):
(@media (prefers-color-scheme: dark) .inherited-element-style-rule-icon .icon):

  • UserInterface/Views/TimelineIcons.css:

(.network-icon .icon):
(.script-icon .icon):
(.cpu-icon .icon):
(.memory-icon .icon):
(.heap-allocations-icon .icon):
(.layout-icon .icon):
(.rendering-frame-icon .icon):
(.media-icon .icon):
(.stopwatch-icon .icon):
(.style-record .icon):
(.layout-record .icon):
(.paint-record .icon):
(.composite-record .icon):
(.rendering-frame-record .icon):
(.api-record .icon):
(.evaluated-record .icon):
(.event-record .icon):
(.probe-record .icon):
(.console-profile-record .icon):
(.garbage-collection-profile-record .icon):
(.timer-record .icon):
(.animation-frame-record .icon):
(.css-animation-record .icon):
(.css-transition-record .icon):
(.media-element-record .icon):
(.heap-snapshot-record .icon):
(@media (prefers-color-scheme: dark) .network-icon .icon):
(@media (prefers-color-scheme: dark) .script-icon .icon):
(@media (prefers-color-scheme: dark) .cpu-icon .icon):
(@media (prefers-color-scheme: dark) .memory-icon .icon):
(@media (prefers-color-scheme: dark) .heap-allocations-icon .icon):
(@media (prefers-color-scheme: dark) .layout-icon .icon):
(@media (prefers-color-scheme: dark) .rendering-frame-icon .icon):
(@media (prefers-color-scheme: dark) .media-icon .icon):
(@media (prefers-color-scheme: dark) .stopwatch-icon .icon):
(@media (prefers-color-scheme: dark) .style-record .icon):
(@media (prefers-color-scheme: dark) .layout-record .icon):
(@media (prefers-color-scheme: dark) .paint-record .icon):
(@media (prefers-color-scheme: dark) .composite-record .icon):
(@media (prefers-color-scheme: dark) .rendering-frame-record .icon):
(@media (prefers-color-scheme: dark) .api-record .icon):
(@media (prefers-color-scheme: dark) .evaluated-record .icon):
(@media (prefers-color-scheme: dark) .event-record .icon):
(@media (prefers-color-scheme: dark) .probe-record .icon):
(@media (prefers-color-scheme: dark) .console-profile-record .icon):
(@media (prefers-color-scheme: dark) .garbage-collection-profile-record .icon):
(@media (prefers-color-scheme: dark) .timer-record .icon):
(@media (prefers-color-scheme: dark) .animation-frame-record .icon):
(@media (prefers-color-scheme: dark) .css-animation-record .icon):
(@media (prefers-color-scheme: dark) .css-transition-record .icon):
(@media (prefers-color-scheme: dark) .media-element-record .icon):
(@media (prefers-color-scheme: dark) .heap-snapshot-record .icon):

  • UserInterface/Views/URLBreakpointTreeElement.css:

(.breakpoint.url:not(.breakpoint-paused-icon) .icon):
(@media (prefers-color-scheme: dark) .breakpoint.url:not(.breakpoint-paused-icon) .icon):

2:23 PM Changeset in webkit [256773] by Alan Bujtas
  • 5 edits
    4 adds in trunk

Inline boxes for images that represent nothing should collapse to empty.
https://bugs.webkit.org/show_bug.cgi?id=207740
<rdar://problem/57339992>

Reviewed by Darin Adler.

Source/WebCore:

Tests: fast/images/inline-image-box-with-no-alt-should-collapse-no-quirks.html

fast/images/inline-image-box-with-no-alt-should-collapse-quirks.html

Let's collapse inline boxes when we would display a broken image only and

  1. alt attribute is explicitly set to empty and
  2. both height and width are auto or we are in standards mode.

https://html.spec.whatwg.org/multipage/rendering.html#images-3

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::shouldCollapseToEmpty const):
(WebCore::RenderImage::computeReplacedLogicalWidth const):
(WebCore::RenderImage::computeReplacedLogicalHeight const):
(WebCore::RenderImage::imageChanged):
(WebCore::RenderImage::layout):

  • rendering/RenderImage.h:

LayoutTests:

  • fast/images/inline-image-box-with-no-alt-should-collapse-no-quirks-expected.txt: Added.
  • fast/images/inline-image-box-with-no-alt-should-collapse-no-quirks.html: Added.
  • fast/images/inline-image-box-with-no-alt-should-collapse-quirks-expected.txt: Added.
  • fast/images/inline-image-box-with-no-alt-should-collapse-quirks.html: Added.
  • tables/mozilla/bugs/bug56201.html:
2:19 PM Changeset in webkit [256772] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac ] fast/images/webp-as-image.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=207718

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:00 PM Changeset in webkit [256771] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ macOS ] fast/images/slower-decoding-than-animation-image.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207859

Unreviewed test gardening

  • platform/mac/TestExpectations:
1:55 PM Changeset in webkit [256770] by Peng Liu
  • 20 edits
    1 move in trunk

Fix check-webkit-style errors related to AVFoundationSPI.h
https://bugs.webkit.org/show_bug.cgi?id=207834

Reviewed by Eric Carlson.

Source/WebCore:

No new tests, no functional change.

This patch fixes check-webkit-style errors, especially the ones related to soft-link headers.
The soft-link headers should be included after other headers.

  • platform/audio/ios/AudioSessionIOS.mm:
  • platform/audio/ios/MediaSessionManagerIOS.mm:
  • platform/graphics/avfoundation/MediaPlaybackTargetCocoa.mm:
  • platform/graphics/avfoundation/objc/AVStreamDataParserMIMETypeCache.mm:
  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
  • platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:
  • platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
  • platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

Source/WebCore/PAL:

Move AVFoundationSPI.h from folder "mac" to "cocoa" because it is used by both iOS and Mac.

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/AVFoundationSPI.h: Renamed from Source/WebCore/PAL/pal/spi/mac/AVFoundationSPI.h.

Source/WTF:

Add HAVE_VIDEO_PERFORMANCE_METRICS and USE_AV_SAMPLE_BUFFER_DISPLAY_LAYER to fix check-webkit-style errors.

  • wtf/PlatformHave.h:
  • wtf/PlatformUse.h:

Tools:

We need to use case-insensitive comparison to check whether the headers are alphabetically sorted in each header section.
Soft-link headers can be included as either "file.h" or <file.h>.

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

(_classify_include):
(check_include_line):

1:49 PM Changeset in webkit [256769] by Ryan Haddad
  • 2 edits in branches/safari-609-branch/Tools

Cherry-pick r255566. rdar://problem/59524417

Unreviewed, disable ResponsivenessTimer test in Debug / ASAN

The ResponsivenessTimer is disabled for those configurations as of r255518.

  • TestWebKitAPI/Tests/WebKit/ResponsivenessTimerCrash.mm:

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

1:45 PM Changeset in webkit [256768] by Ryan Haddad
  • 2 edits in branches/safari-609-branch/Tools

Unreviewed build fix. rdar://59461287

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
1:44 PM Changeset in webkit [256767] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

[ Mojave wk1 ] fast/canvas/webgl/texImage2D-mse-flipY-false.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=207857

Unreviewed test gardening

  • platform/mac-wk1/TestExpectations:
1:24 PM Changeset in webkit [256766] by Tadeu Zagallo
  • 3 edits
    1 add in trunk

[Wasm] REGRESSION(r256665): Wasm->JS call IC needs to save memory size register
https://bugs.webkit.org/show_bug.cgi?id=207849

Reviewed by Mark Lam.

JSTests:

  • wasm/regress/regress-256665.js: Added.

(f):

Source/JavaScriptCore:

When generating the call IC, we should select the callee saves using BoundsChecking mode in order
to obey to the calling conventions described in r256665. Currently, we won't restore the memory size
register when calling the Wasm LLInt through the call IC.

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::calleeSaves const):

1:22 PM Changeset in webkit [256765] by Keith Rollin
  • 2 edits in trunk/Tools

Unreviewed build fix after r256715.

Fix tvOS and watchOS builds.

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:
1:13 PM Changeset in webkit [256764] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Null Ptr Deref @ WebCore::Node::Treescope
https://bugs.webkit.org/show_bug.cgi?id=207748

Patch by Pinki Gyanchandani <pgyanchandani@apple.com> on 2020-02-17
Reviewed by Darin Adler.

Source/WebCore:

Added a check for isTextField after updateLayoutIgnorePendingStylesheets as that could cause modification of input element type.

Test: editing/selection/ignore-selection-range-on-input-style-change.html

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::setSelectionRange):

LayoutTests:

Added a regression test provided by Ryosuke Niwa to verify the fix.

  • editing/selection/ignore-selection-range-on-input-style-change-expected.txt: Added.
  • editing/selection/ignore-selection-range-on-input-style-change.html: Added.
1:06 PM Changeset in webkit [256763] by Alan Bujtas
  • 3 edits
    186 copies
    1 add
    1 delete in trunk/LayoutTests

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

Move LFC regression tests under fast/layoutformattingcontext/ and skip them on iOS for now.

  • fast/layoutformattingcontext/block-only/abs-pos-with-border-padding-and-float-child-expected.html: Renamed from LayoutTests/fast/block/block-only/abs-pos-with-border-padding-and-float-child-expected.html.
  • fast/layoutformattingcontext/block-only/abs-pos-with-border-padding-and-float-child.html: Renamed from LayoutTests/fast/block/block-only/abs-pos-with-border-padding-and-float-child.html.
  • fast/layoutformattingcontext/block-only/absolute-auto-with-sibling-margin-bottom-expected.txt: Renamed from LayoutTests/fast/block/block-only/absolute-auto-with-sibling-margin-bottom-expected.txt.
  • fast/layoutformattingcontext/block-only/absolute-auto-with-sibling-margin-bottom.html: Renamed from LayoutTests/fast/block/block-only/absolute-auto-with-sibling-margin-bottom.html.
  • fast/layoutformattingcontext/block-only/absolute-height-stretch-expected.txt: Renamed from LayoutTests/fast/block/block-only/absolute-height-stretch-expected.txt.
  • fast/layoutformattingcontext/block-only/absolute-height-stretch.html: Renamed from LayoutTests/fast/block/block-only/absolute-height-stretch.html.
  • fast/layoutformattingcontext/block-only/absolute-left-auto-expected.txt: Renamed from LayoutTests/fast/block/block-only/absolute-left-auto-expected.txt.
  • fast/layoutformattingcontext/block-only/absolute-left-auto.html: Renamed from LayoutTests/fast/block/block-only/absolute-left-auto.html.
  • fast/layoutformattingcontext/block-only/absolute-left-right-top-bottom-auto-expected.txt: Renamed from LayoutTests/fast/block/block-only/absolute-left-right-top-bottom-auto-expected.txt.
  • fast/layoutformattingcontext/block-only/absolute-left-right-top-bottom-auto.html: Renamed from LayoutTests/fast/block/block-only/absolute-left-right-top-bottom-auto.html.
  • fast/layoutformattingcontext/block-only/absolute-nested-expected.txt: Renamed from LayoutTests/fast/block/block-only/absolute-nested-expected.txt.
  • fast/layoutformattingcontext/block-only/absolute-nested.html: Renamed from LayoutTests/fast/block/block-only/absolute-nested.html.
  • fast/layoutformattingcontext/block-only/absolute-nested2-expected.txt: Renamed from LayoutTests/fast/block/block-only/absolute-nested2-expected.txt.
  • fast/layoutformattingcontext/block-only/absolute-nested2.html: Renamed from LayoutTests/fast/block/block-only/absolute-nested2.html.
  • fast/layoutformattingcontext/block-only/absolute-position-left-right-margin-expected.html: Renamed from LayoutTests/fast/block/block-only/absolute-position-left-right-margin-expected.html.
  • fast/layoutformattingcontext/block-only/absolute-position-left-right-margin.html: Renamed from LayoutTests/fast/block/block-only/absolute-position-left-right-margin.html.
  • fast/layoutformattingcontext/block-only/absolute-position-min-max-height-expected.txt: Renamed from LayoutTests/fast/block/block-only/absolute-position-min-max-height-expected.txt.
  • fast/layoutformattingcontext/block-only/absolute-position-min-max-height.html: Renamed from LayoutTests/fast/block/block-only/absolute-position-min-max-height.html.
  • fast/layoutformattingcontext/block-only/absolute-position-min-max-width-expected.txt: Renamed from LayoutTests/fast/block/block-only/absolute-position-min-max-width-expected.txt.
  • fast/layoutformattingcontext/block-only/absolute-position-min-max-width.html: Renamed from LayoutTests/fast/block/block-only/absolute-position-min-max-width.html.
  • fast/layoutformattingcontext/block-only/absolute-position-when-containing-block-is-not-in-the-formatting-context-expected.txt: Renamed from LayoutTests/fast/block/block-only/absolute-position-when-containing-block-is-not-in-the-formatting-context-expected.txt.
  • fast/layoutformattingcontext/block-only/absolute-position-when-containing-block-is-not-in-the-formatting-context.html: Renamed from LayoutTests/fast/block/block-only/absolute-position-when-containing-block-is-not-in-the-formatting-context.html.
  • fast/layoutformattingcontext/block-only/absolute-position-when-containing-block-is-not-in-the-formatting-context2-expected.txt: Renamed from LayoutTests/fast/block/block-only/absolute-position-when-containing-block-is-not-in-the-formatting-context2-expected.txt.
  • fast/layoutformattingcontext/block-only/absolute-position-when-containing-block-is-not-in-the-formatting-context2.html: Renamed from LayoutTests/fast/block/block-only/absolute-position-when-containing-block-is-not-in-the-formatting-context2.html.
  • fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple-expected.html: Renamed from LayoutTests/fast/block/block-only/absolute-position-with-margin-auto-simple-expected.html.
  • fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple.html: Renamed from LayoutTests/fast/block/block-only/absolute-position-with-margin-auto-simple.html.
  • fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple2-expected.html: Renamed from LayoutTests/fast/block/block-only/absolute-position-with-margin-auto-simple2-expected.html.
  • fast/layoutformattingcontext/block-only/absolute-position-with-margin-auto-simple2.html: Renamed from LayoutTests/fast/block/block-only/absolute-position-with-margin-auto-simple2.html.
  • fast/layoutformattingcontext/block-only/absolute-positioned-min-max-percentage-with-parent-padding-expected.html: Renamed from LayoutTests/fast/block/block-only/absolute-positioned-min-max-percentage-with-parent-padding-expected.html.
  • fast/layoutformattingcontext/block-only/absolute-positioned-min-max-percentage-with-parent-padding.html: Renamed from LayoutTests/fast/block/block-only/absolute-positioned-min-max-percentage-with-parent-padding.html.
  • fast/layoutformattingcontext/block-only/absolute-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/absolute-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/absolute-simple.html: Renamed from LayoutTests/fast/block/block-only/absolute-simple.html.
  • fast/layoutformattingcontext/block-only/absolute-width-shrink-to-fit-expected.txt: Renamed from LayoutTests/fast/block/block-only/absolute-width-shrink-to-fit-expected.txt.
  • fast/layoutformattingcontext/block-only/absolute-width-shrink-to-fit.html: Renamed from LayoutTests/fast/block/block-only/absolute-width-shrink-to-fit.html.
  • fast/layoutformattingcontext/block-only/absolute-width-stretch-expected.txt: Renamed from LayoutTests/fast/block/block-only/absolute-width-stretch-expected.txt.
  • fast/layoutformattingcontext/block-only/absolute-width-stretch.html: Renamed from LayoutTests/fast/block/block-only/absolute-width-stretch.html.
  • fast/layoutformattingcontext/block-only/absolute-with-static-block-position-nested-expected.txt: Renamed from LayoutTests/fast/block/block-only/absolute-with-static-block-position-nested-expected.txt.
  • fast/layoutformattingcontext/block-only/absolute-with-static-block-position-nested.html: Renamed from LayoutTests/fast/block/block-only/absolute-with-static-block-position-nested.html.
  • fast/layoutformattingcontext/block-only/almost-intruding-left-float-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/almost-intruding-left-float-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/almost-intruding-left-float-simple.html: Renamed from LayoutTests/fast/block/block-only/almost-intruding-left-float-simple.html.
  • fast/layoutformattingcontext/block-only/block-replaced-with-vertical-margins-expected.html: Renamed from LayoutTests/fast/block/block-only/block-replaced-with-vertical-margins-expected.html.
  • fast/layoutformattingcontext/block-only/block-replaced-with-vertical-margins.html: Renamed from LayoutTests/fast/block/block-only/block-replaced-with-vertical-margins.html.
  • fast/layoutformattingcontext/block-only/body-height-with-auto-html-height-quirk-expected.txt: Renamed from LayoutTests/fast/block/block-only/body-height-with-auto-html-height-quirk-expected.txt.
  • fast/layoutformattingcontext/block-only/body-height-with-auto-html-height-quirk.html: Renamed from LayoutTests/fast/block/block-only/body-height-with-auto-html-height-quirk.html.
  • fast/layoutformattingcontext/block-only/body-height-with-auto-html-height-quirk2-expected.txt: Renamed from LayoutTests/fast/block/block-only/body-height-with-auto-html-height-quirk2-expected.txt.
  • fast/layoutformattingcontext/block-only/body-height-with-auto-html-height-quirk2.html: Renamed from LayoutTests/fast/block/block-only/body-height-with-auto-html-height-quirk2.html.
  • fast/layoutformattingcontext/block-only/body-height-with-non-auto-html-height-quirk-expected.txt: Renamed from LayoutTests/fast/block/block-only/body-height-with-non-auto-html-height-quirk-expected.txt.
  • fast/layoutformattingcontext/block-only/body-height-with-non-auto-html-height-quirk.html: Renamed from LayoutTests/fast/block/block-only/body-height-with-non-auto-html-height-quirk.html.
  • fast/layoutformattingcontext/block-only/body-height-with-non-auto-html-height-quirk2-expected.txt: Renamed from LayoutTests/fast/block/block-only/body-height-with-non-auto-html-height-quirk2-expected.txt.
  • fast/layoutformattingcontext/block-only/body-height-with-non-auto-html-height-quirk2.html: Renamed from LayoutTests/fast/block/block-only/body-height-with-non-auto-html-height-quirk2.html.
  • fast/layoutformattingcontext/block-only/border-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/border-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/border-simple.html: Renamed from LayoutTests/fast/block/block-only/border-simple.html.
  • fast/layoutformattingcontext/block-only/box-sizing-inflow-out-of-flow-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/box-sizing-inflow-out-of-flow-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/box-sizing-inflow-out-of-flow-simple.html: Renamed from LayoutTests/fast/block/block-only/box-sizing-inflow-out-of-flow-simple.html.
  • fast/layoutformattingcontext/block-only/collapsed-margin-with-min-height-expected.txt: Renamed from LayoutTests/fast/block/block-only/collapsed-margin-with-min-height-expected.txt.
  • fast/layoutformattingcontext/block-only/collapsed-margin-with-min-height.html: Renamed from LayoutTests/fast/block/block-only/collapsed-margin-with-min-height.html.
  • fast/layoutformattingcontext/block-only/collapsed-through-siblings-expected.txt: Renamed from LayoutTests/fast/block/block-only/collapsed-through-siblings-expected.txt.
  • fast/layoutformattingcontext/block-only/collapsed-through-siblings.html: Renamed from LayoutTests/fast/block/block-only/collapsed-through-siblings.html.
  • fast/layoutformattingcontext/block-only/collapsed-through-with-parent-expected.txt: Renamed from LayoutTests/fast/block/block-only/collapsed-through-with-parent-expected.txt.
  • fast/layoutformattingcontext/block-only/collapsed-through-with-parent.html: Renamed from LayoutTests/fast/block/block-only/collapsed-through-with-parent.html.
  • fast/layoutformattingcontext/block-only/fixed-nested-expected.txt: Renamed from LayoutTests/fast/block/block-only/fixed-nested-expected.txt.
  • fast/layoutformattingcontext/block-only/fixed-nested.html: Renamed from LayoutTests/fast/block/block-only/fixed-nested.html.
  • fast/layoutformattingcontext/block-only/float-and-siblings-with-margins-expected.txt: Renamed from LayoutTests/fast/block/block-only/float-and-siblings-with-margins-expected.txt.
  • fast/layoutformattingcontext/block-only/float-and-siblings-with-margins.html: Renamed from LayoutTests/fast/block/block-only/float-and-siblings-with-margins.html.
  • fast/layoutformattingcontext/block-only/float-avoider-multiple-roots-expected.txt: Renamed from LayoutTests/fast/block/block-only/float-avoider-multiple-roots-expected.txt.
  • fast/layoutformattingcontext/block-only/float-avoider-multiple-roots.html: Renamed from LayoutTests/fast/block/block-only/float-avoider-multiple-roots.html.
  • fast/layoutformattingcontext/block-only/float-avoider-simple-left-expected.txt: Renamed from LayoutTests/fast/block/block-only/float-avoider-simple-left-expected.txt.
  • fast/layoutformattingcontext/block-only/float-avoider-simple-left.html: Renamed from LayoutTests/fast/block/block-only/float-avoider-simple-left.html.
  • fast/layoutformattingcontext/block-only/float-avoider-simple-right-expected.txt: Renamed from LayoutTests/fast/block/block-only/float-avoider-simple-right-expected.txt.
  • fast/layoutformattingcontext/block-only/float-avoider-simple-right.html: Renamed from LayoutTests/fast/block/block-only/float-avoider-simple-right.html.
  • fast/layoutformattingcontext/block-only/float-avoider-with-margins-expected.txt: Renamed from LayoutTests/fast/block/block-only/float-avoider-with-margins-expected.txt.
  • fast/layoutformattingcontext/block-only/float-avoider-with-margins.html: Renamed from LayoutTests/fast/block/block-only/float-avoider-with-margins.html.
  • fast/layoutformattingcontext/block-only/float-left-when-container-has-padding-margin-expected.txt: Renamed from LayoutTests/fast/block/block-only/float-left-when-container-has-padding-margin-expected.txt.
  • fast/layoutformattingcontext/block-only/float-left-when-container-has-padding-margin.html: Renamed from LayoutTests/fast/block/block-only/float-left-when-container-has-padding-margin.html.
  • fast/layoutformattingcontext/block-only/float-min-max-height-expected.txt: Renamed from LayoutTests/fast/block/block-only/float-min-max-height-expected.txt.
  • fast/layoutformattingcontext/block-only/float-min-max-height.html: Renamed from LayoutTests/fast/block/block-only/float-min-max-height.html.
  • fast/layoutformattingcontext/block-only/float-min-max-width-expected.txt: Renamed from LayoutTests/fast/block/block-only/float-min-max-width-expected.txt.
  • fast/layoutformattingcontext/block-only/float-min-max-width.html: Renamed from LayoutTests/fast/block/block-only/float-min-max-width.html.
  • fast/layoutformattingcontext/block-only/floating-and-next-previous-inflow-with-margin-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-and-next-previous-inflow-with-margin-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-and-next-previous-inflow-with-margin-with-no-border-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-and-next-previous-inflow-with-margin-with-no-border-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-and-next-previous-inflow-with-margin-with-no-border.html: Renamed from LayoutTests/fast/block/block-only/floating-and-next-previous-inflow-with-margin-with-no-border.html.
  • fast/layoutformattingcontext/block-only/floating-and-next-previous-inflow-with-margin.html: Renamed from LayoutTests/fast/block/block-only/floating-and-next-previous-inflow-with-margin.html.
  • fast/layoutformattingcontext/block-only/floating-box-clear-both-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-box-clear-both-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-box-clear-both-simple.html: Renamed from LayoutTests/fast/block/block-only/floating-box-clear-both-simple.html.
  • fast/layoutformattingcontext/block-only/floating-box-clear-right-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-box-clear-right-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-box-clear-right-simple.html: Renamed from LayoutTests/fast/block/block-only/floating-box-clear-right-simple.html.
  • fast/layoutformattingcontext/block-only/floating-box-left-and-right-multiple-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-box-left-and-right-multiple-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-box-left-and-right-multiple-with-top-offset-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-box-left-and-right-multiple-with-top-offset-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-box-left-and-right-multiple-with-top-offset.html: Renamed from LayoutTests/fast/block/block-only/floating-box-left-and-right-multiple-with-top-offset.html.
  • fast/layoutformattingcontext/block-only/floating-box-left-and-right-multiple.html: Renamed from LayoutTests/fast/block/block-only/floating-box-left-and-right-multiple.html.
  • fast/layoutformattingcontext/block-only/floating-box-right-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-box-right-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-box-right-simple.html: Renamed from LayoutTests/fast/block/block-only/floating-box-right-simple.html.
  • fast/layoutformattingcontext/block-only/floating-box-with-clear-siblings-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-box-with-clear-siblings-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-box-with-clear-siblings.html: Renamed from LayoutTests/fast/block/block-only/floating-box-with-clear-siblings.html.
  • fast/layoutformattingcontext/block-only/floating-box-with-clear-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-box-with-clear-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-box-with-clear-simple.html: Renamed from LayoutTests/fast/block/block-only/floating-box-with-clear-simple.html.
  • fast/layoutformattingcontext/block-only/floating-box-with-new-formatting-context-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-box-with-new-formatting-context-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-box-with-new-formatting-context.html: Renamed from LayoutTests/fast/block/block-only/floating-box-with-new-formatting-context.html.
  • fast/layoutformattingcontext/block-only/floating-box-with-relative-positioned-sibling-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-box-with-relative-positioned-sibling-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-box-with-relative-positioned-sibling.html: Renamed from LayoutTests/fast/block/block-only/floating-box-with-relative-positioned-sibling.html.
  • fast/layoutformattingcontext/block-only/floating-left-and-right-with-clearance-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-left-and-right-with-clearance-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-left-and-right-with-clearance.html: Renamed from LayoutTests/fast/block/block-only/floating-left-and-right-with-clearance.html.
  • fast/layoutformattingcontext/block-only/floating-left-right-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-left-right-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-left-right-simple.html: Renamed from LayoutTests/fast/block/block-only/floating-left-right-simple.html.
  • fast/layoutformattingcontext/block-only/floating-left-right-with-all-margins-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-left-right-with-all-margins-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-left-right-with-all-margins.html: Renamed from LayoutTests/fast/block/block-only/floating-left-right-with-all-margins.html.
  • fast/layoutformattingcontext/block-only/floating-lefts-and-rights-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-lefts-and-rights-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-lefts-and-rights-simple.html: Renamed from LayoutTests/fast/block/block-only/floating-lefts-and-rights-simple.html.
  • fast/layoutformattingcontext/block-only/floating-multiple-lefts-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-multiple-lefts-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-multiple-lefts-in-body-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-multiple-lefts-in-body-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-multiple-lefts-in-body.html: Renamed from LayoutTests/fast/block/block-only/floating-multiple-lefts-in-body.html.
  • fast/layoutformattingcontext/block-only/floating-multiple-lefts-multiple-lines-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-multiple-lefts-multiple-lines-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-multiple-lefts-multiple-lines.html: Renamed from LayoutTests/fast/block/block-only/floating-multiple-lefts-multiple-lines.html.
  • fast/layoutformattingcontext/block-only/floating-multiple-lefts.html: Renamed from LayoutTests/fast/block/block-only/floating-multiple-lefts.html.
  • fast/layoutformattingcontext/block-only/floating-with-new-block-formatting-context-expected.txt: Renamed from LayoutTests/fast/block/block-only/floating-with-new-block-formatting-context-expected.txt.
  • fast/layoutformattingcontext/block-only/floating-with-new-block-formatting-context.html: Renamed from LayoutTests/fast/block/block-only/floating-with-new-block-formatting-context.html.
  • fast/layoutformattingcontext/block-only/floats-and-block-formatting-roots-expected.html: Renamed from LayoutTests/fast/block/block-only/floats-and-block-formatting-roots-expected.html.
  • fast/layoutformattingcontext/block-only/floats-and-block-formatting-roots.html: Renamed from LayoutTests/fast/block/block-only/floats-and-block-formatting-roots.html.
  • fast/layoutformattingcontext/block-only/inflow-min-max-height-expected.txt: Renamed from LayoutTests/fast/block/block-only/inflow-min-max-height-expected.txt.
  • fast/layoutformattingcontext/block-only/inflow-min-max-height.html: Renamed from LayoutTests/fast/block/block-only/inflow-min-max-height.html.
  • fast/layoutformattingcontext/block-only/inflow-min-max-width-expected.txt: Renamed from LayoutTests/fast/block/block-only/inflow-min-max-width-expected.txt.
  • fast/layoutformattingcontext/block-only/inflow-min-max-width.html: Renamed from LayoutTests/fast/block/block-only/inflow-min-max-width.html.
  • fast/layoutformattingcontext/block-only/margin-collapse-bottom-bottom-expected.txt: Renamed from LayoutTests/fast/block/block-only/margin-collapse-bottom-bottom-expected.txt.
  • fast/layoutformattingcontext/block-only/margin-collapse-bottom-bottom.html: Renamed from LayoutTests/fast/block/block-only/margin-collapse-bottom-bottom.html.
  • fast/layoutformattingcontext/block-only/margin-collapse-bottom-nested-expected.txt: Renamed from LayoutTests/fast/block/block-only/margin-collapse-bottom-nested-expected.txt.
  • fast/layoutformattingcontext/block-only/margin-collapse-bottom-nested.html: Renamed from LayoutTests/fast/block/block-only/margin-collapse-bottom-nested.html.
  • fast/layoutformattingcontext/block-only/margin-collapse-first-last-are-floating-expected.txt: Renamed from LayoutTests/fast/block/block-only/margin-collapse-first-last-are-floating-expected.txt.
  • fast/layoutformattingcontext/block-only/margin-collapse-first-last-are-floating.html: Renamed from LayoutTests/fast/block/block-only/margin-collapse-first-last-are-floating.html.
  • fast/layoutformattingcontext/block-only/margin-collapse-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/margin-collapse-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/margin-collapse-simple.html: Renamed from LayoutTests/fast/block/block-only/margin-collapse-simple.html.
  • fast/layoutformattingcontext/block-only/margin-collapse-top-nested-expected.txt: Renamed from LayoutTests/fast/block/block-only/margin-collapse-top-nested-expected.txt.
  • fast/layoutformattingcontext/block-only/margin-collapse-top-nested.html: Renamed from LayoutTests/fast/block/block-only/margin-collapse-top-nested.html.
  • fast/layoutformattingcontext/block-only/margin-collapse-when-child-has-padding-border-expected.txt: Renamed from LayoutTests/fast/block/block-only/margin-collapse-when-child-has-padding-border-expected.txt.
  • fast/layoutformattingcontext/block-only/margin-collapse-when-child-has-padding-border.html: Renamed from LayoutTests/fast/block/block-only/margin-collapse-when-child-has-padding-border.html.
  • fast/layoutformattingcontext/block-only/margin-collapse-with-block-formatting-context-expected.txt: Renamed from LayoutTests/fast/block/block-only/margin-collapse-with-block-formatting-context-expected.txt.
  • fast/layoutformattingcontext/block-only/margin-collapse-with-block-formatting-context.html: Renamed from LayoutTests/fast/block/block-only/margin-collapse-with-block-formatting-context.html.
  • fast/layoutformattingcontext/block-only/margin-collapse-with-block-formatting-context2-expected.txt: Renamed from LayoutTests/fast/block/block-only/margin-collapse-with-block-formatting-context2-expected.txt.
  • fast/layoutformattingcontext/block-only/margin-collapse-with-block-formatting-context2.html: Renamed from LayoutTests/fast/block/block-only/margin-collapse-with-block-formatting-context2.html.
  • fast/layoutformattingcontext/block-only/margin-collapse-with-clearance-expected.txt: Renamed from LayoutTests/fast/block/block-only/margin-collapse-with-clearance-expected.txt.
  • fast/layoutformattingcontext/block-only/margin-collapse-with-clearance.html: Renamed from LayoutTests/fast/block/block-only/margin-collapse-with-clearance.html.
  • fast/layoutformattingcontext/block-only/margin-left-right-sizing-expected.txt: Renamed from LayoutTests/fast/block/block-only/margin-left-right-sizing-expected.txt.
  • fast/layoutformattingcontext/block-only/margin-left-right-sizing-out-of-flow-expected.txt: Renamed from LayoutTests/fast/block/block-only/margin-left-right-sizing-out-of-flow-expected.txt.
  • fast/layoutformattingcontext/block-only/margin-left-right-sizing-out-of-flow.html: Renamed from LayoutTests/fast/block/block-only/margin-left-right-sizing-out-of-flow.html.
  • fast/layoutformattingcontext/block-only/margin-left-right-sizing.html: Renamed from LayoutTests/fast/block/block-only/margin-left-right-sizing.html.
  • fast/layoutformattingcontext/block-only/margin-propagation-simple-content-height-expected.txt: Renamed from LayoutTests/fast/block/block-only/margin-propagation-simple-content-height-expected.txt.
  • fast/layoutformattingcontext/block-only/margin-propagation-simple-content-height.html: Renamed from LayoutTests/fast/block/block-only/margin-propagation-simple-content-height.html.
  • fast/layoutformattingcontext/block-only/margin-sibling-collapse-propagated-expected.txt: Renamed from LayoutTests/fast/block/block-only/margin-sibling-collapse-propagated-expected.txt.
  • fast/layoutformattingcontext/block-only/margin-sibling-collapse-propagated.html: Renamed from LayoutTests/fast/block/block-only/margin-sibling-collapse-propagated.html.
  • fast/layoutformattingcontext/block-only/margin-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/margin-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/margin-simple.html: Renamed from LayoutTests/fast/block/block-only/margin-simple.html.
  • fast/layoutformattingcontext/block-only/min-max-and-preferred-width-simple-expected.html: Renamed from LayoutTests/fast/block/block-only/min-max-and-preferred-width-simple-expected.html.
  • fast/layoutformattingcontext/block-only/min-max-and-preferred-width-simple.html: Renamed from LayoutTests/fast/block/block-only/min-max-and-preferred-width-simple.html.
  • fast/layoutformattingcontext/block-only/min-max-height-percentage-expected.txt: Renamed from LayoutTests/fast/block/block-only/min-max-height-percentage-expected.txt.
  • fast/layoutformattingcontext/block-only/min-max-height-percentage.html: Renamed from LayoutTests/fast/block/block-only/min-max-height-percentage.html.
  • fast/layoutformattingcontext/block-only/negative-margin-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/negative-margin-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/negative-margin-simple.html: Renamed from LayoutTests/fast/block/block-only/negative-margin-simple.html.
  • fast/layoutformattingcontext/block-only/non-auto-top-bottom-height-with-auto-margins-expected.txt: Renamed from LayoutTests/fast/block/block-only/non-auto-top-bottom-height-with-auto-margins-expected.txt.
  • fast/layoutformattingcontext/block-only/non-auto-top-bottom-height-with-auto-margins.html: Renamed from LayoutTests/fast/block/block-only/non-auto-top-bottom-height-with-auto-margins.html.
  • fast/layoutformattingcontext/block-only/non-auto-top-bottom-height-with-margins-expected.txt: Renamed from LayoutTests/fast/block/block-only/non-auto-top-bottom-height-with-margins-expected.txt.
  • fast/layoutformattingcontext/block-only/non-auto-top-bottom-height-with-margins.html: Renamed from LayoutTests/fast/block/block-only/non-auto-top-bottom-height-with-margins.html.
  • fast/layoutformattingcontext/block-only/non-auto-top-bottom-left-right-widht-height-out-of-flow-expected.txt: Renamed from LayoutTests/fast/block/block-only/non-auto-top-bottom-left-right-widht-height-out-of-flow-expected.txt.
  • fast/layoutformattingcontext/block-only/non-auto-top-bottom-left-right-widht-height-out-of-flow.html: Renamed from LayoutTests/fast/block/block-only/non-auto-top-bottom-left-right-widht-height-out-of-flow.html.
  • fast/layoutformattingcontext/block-only/out-of-flow-is-never-float-box-expected.html: Renamed from LayoutTests/fast/block/block-only/out-of-flow-is-never-float-box-expected.html.
  • fast/layoutformattingcontext/block-only/out-of-flow-is-never-float-box.html: Renamed from LayoutTests/fast/block/block-only/out-of-flow-is-never-float-box.html.
  • fast/layoutformattingcontext/block-only/out-of-flow-with-containing-block-border-padding-expected.txt: Renamed from LayoutTests/fast/block/block-only/out-of-flow-with-containing-block-border-padding-expected.txt.
  • fast/layoutformattingcontext/block-only/out-of-flow-with-containing-block-border-padding.html: Renamed from LayoutTests/fast/block/block-only/out-of-flow-with-containing-block-border-padding.html.
  • fast/layoutformattingcontext/block-only/padding-nested-expected.txt: Renamed from LayoutTests/fast/block/block-only/padding-nested-expected.txt.
  • fast/layoutformattingcontext/block-only/padding-nested.html: Renamed from LayoutTests/fast/block/block-only/padding-nested.html.
  • fast/layoutformattingcontext/block-only/padding-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/padding-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/padding-simple.html: Renamed from LayoutTests/fast/block/block-only/padding-simple.html.
  • fast/layoutformattingcontext/block-only/relative-auto-expected.txt: Renamed from LayoutTests/fast/block/block-only/relative-auto-expected.txt.
  • fast/layoutformattingcontext/block-only/relative-auto-with-parent-offset-expected.txt: Renamed from LayoutTests/fast/block/block-only/relative-auto-with-parent-offset-expected.txt.
  • fast/layoutformattingcontext/block-only/relative-auto-with-parent-offset.html: Renamed from LayoutTests/fast/block/block-only/relative-auto-with-parent-offset.html.
  • fast/layoutformattingcontext/block-only/relative-auto.html: Renamed from LayoutTests/fast/block/block-only/relative-auto.html.
  • fast/layoutformattingcontext/block-only/relative-bottom-expected.txt: Renamed from LayoutTests/fast/block/block-only/relative-bottom-expected.txt.
  • fast/layoutformattingcontext/block-only/relative-bottom.html: Renamed from LayoutTests/fast/block/block-only/relative-bottom.html.
  • fast/layoutformattingcontext/block-only/relative-position-when-containing-block-is-not-in-the-formatting-context-expected.txt: Renamed from LayoutTests/fast/block/block-only/relative-position-when-containing-block-is-not-in-the-formatting-context-expected.txt.
  • fast/layoutformattingcontext/block-only/relative-position-when-containing-block-is-not-in-the-formatting-context.html: Renamed from LayoutTests/fast/block/block-only/relative-position-when-containing-block-is-not-in-the-formatting-context.html.
  • fast/layoutformattingcontext/block-only/relative-right-expected.txt: Renamed from LayoutTests/fast/block/block-only/relative-right-expected.txt.
  • fast/layoutformattingcontext/block-only/relative-right.html: Renamed from LayoutTests/fast/block/block-only/relative-right.html.
  • fast/layoutformattingcontext/block-only/relative-siblings-expected.txt: Renamed from LayoutTests/fast/block/block-only/relative-siblings-expected.txt.
  • fast/layoutformattingcontext/block-only/relative-siblings.html: Renamed from LayoutTests/fast/block/block-only/relative-siblings.html.
  • fast/layoutformattingcontext/block-only/relative-simple-expected.txt: Renamed from LayoutTests/fast/block/block-only/relative-simple-expected.txt.
  • fast/layoutformattingcontext/block-only/relative-simple.html: Renamed from LayoutTests/fast/block/block-only/relative-simple.html.
  • fast/layoutformattingcontext/block-only/replaced-intrinsic-width-simple-expected.html: Renamed from LayoutTests/fast/block/block-only/replaced-intrinsic-width-simple-expected.html.
  • fast/layoutformattingcontext/block-only/replaced-intrinsic-width-simple.html: Renamed from LayoutTests/fast/block/block-only/replaced-intrinsic-width-simple.html.
  • platform/ios-wk2/TestExpectations:
12:46 PM Changeset in webkit [256762] by youenn@apple.com
  • 8 edits
    2 adds in trunk/Source

Add WebInspector support to WebKit::WebSocketChannel
https://bugs.webkit.org/show_bug.cgi?id=207794

Reviewed by Darin Adler.

Source/WebCore:

Add a wrapper around Inspector for using it in WebInspector.
This allows getting preliminary support of WebInspector for the new WebSocket path.

  • Modules/websockets/WebSocketChannelInspector.cpp: Added.

(WebCore::WebSocketChannelInspector::WebSocketChannelInspector):
(WebCore::WebSocketChannelInspector::didCreateWebSocket):
(WebCore::WebSocketChannelInspector::willSendWebSocketHandshakeRequest):
(WebCore::WebSocketChannelInspector::didReceiveWebSocketHandshakeResponse):
(WebCore::WebSocketChannelInspector::didCloseWebSocket):
(WebCore::WebSocketChannelInspector::didReceiveWebSocketFrame):
(WebCore::WebSocketChannelInspector::didSendWebSocketFrame):
(WebCore::WebSocketChannelInspector::didReceiveWebSocketFrameError):

  • Modules/websockets/WebSocketChannelInspector.h: Added.
  • Modules/websockets/WebSocketFrame.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

Call WebInspector hooks wherever needed.
We do not have access to frames so we make as if a message is part of one frame.
We do not have yet a response so provide an empty one as well.

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::notifySendFrame):
(WebKit::WebSocketChannel::createMessageQueue):
(WebKit::WebSocketChannel::WebSocketChannel):
(WebKit::WebSocketChannel::connect):
(WebKit::WebSocketChannel::sendMessage):
(WebKit::WebSocketChannel::disconnect):
(WebKit::WebSocketChannel::didConnect):
(WebKit::createWebSocketFrameForWebInspector):
(WebKit::WebSocketChannel::didReceiveText):
(WebKit::WebSocketChannel::didReceiveBinaryData):
(WebKit::WebSocketChannel::didClose):
(WebKit::WebSocketChannel::didReceiveMessageError):

  • WebProcess/Network/WebSocketChannel.h:
12:42 PM Changeset in webkit [256761] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Validate scopeURL is valid when reading it from the database
https://bugs.webkit.org/show_bug.cgi?id=207721

Reviewed by Darin Adler.

  • workers/service/server/RegistrationDatabase.cpp:

(WebCore::RegistrationDatabase::importRecords):
In case scopeURL is not good, skip the registration, as done for other registration parameters.

12:29 PM Changeset in webkit [256760] by Alan Bujtas
  • 8 edits
    2 adds in trunk

[LFC][Out-of-flow] FormattingContext::computeOutOfFlowHorizontalGeometry needs verticalConstraints
https://bugs.webkit.org/show_bug.cgi?id=207832
<rdar://problem/59499844>

Reviewed by Dean Jackson.

Source/WebCore:

Test: fast/layoutformattingcontext/simple-absolute-positioned-replaced-inline-element-with-percentage-height.html

Inline replaced width computation needs the value of the computed content height. In case of percentage value, in order to
resolve it we need the containing block's height. At this point the containing block's vertical values are usually not
computed yet, unless the current box happens to be an out-of-flow.

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::layoutOutOfFlowContent):

  • layout/FormattingContext.h:
  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin const):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeWidthAndMargin):

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):

LayoutTests:

  • fast/layoutformattingcontext/simple-absolute-positioned-replaced-inline-element-with-percentage-height-expected.html: Added.
  • fast/layoutformattingcontext/simple-absolute-positioned-replaced-inline-element-with-percentage-height.html: Added.
12:23 PM Changeset in webkit [256759] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][IFC] LineLayoutContext::nextContentForLine should be able to handle regular inline boxes
https://bugs.webkit.org/show_bug.cgi?id=207829
<rdar://problem/59498031>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/simple-inline-block.html

Add missing inline box handling.

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::nextContentForLine):

LayoutTests:

  • fast/layoutformattingcontext/simple-inline-block-expected.html: Added.
  • fast/layoutformattingcontext/simple-inline-block.html: Added.
12:08 PM Changeset in webkit [256758] by commit-queue@webkit.org
  • 7 edits
    2 deletes in trunk

ANGLE: Fix object deletion behavior.
https://bugs.webkit.org/show_bug.cgi?id=205610

Source/WebCore:

Fixes WebGL conformance tests object-deletion-behavior.html and vertex-array-object.html.

Patch by James Darpinian <James Darpinian> on 2020-02-17
Reviewed by Dean Jackson.

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::getFramebufferAttachmentParameter):

No error when getting attachment name with a null attachment.

  • html/canvas/WebGLObject.cpp:

(WebCore::WebGLObject::deleteObject):

Don't delay deleting objects when using ANGLE, becuase ANGLE handles object
deletion correctly with WebGL semantics. This fixes some conformance tests
including vertex-array-object.html.

  • html/canvas/WebGLObject.h:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::checkObjectToBeBound):

Always generate INVALID_OPERATION when the object is deleted.

(WebCore::WebGLRenderingContextBase::validateAndCacheBufferBinding):
(WebCore::WebGLRenderingContextBase::bindFramebuffer):
(WebCore::WebGLRenderingContextBase::bindRenderbuffer):
(WebCore::WebGLRenderingContextBase::bindTexture):
(WebCore::WebGLRenderingContextBase::useProgram):

  • html/canvas/WebGLRenderingContextBase.h:

LayoutTests:

Remove incorrect (out-of-date) test. This correct version of this test is still present in the WebGL
conformance tests.

Patch by James Darpinian <James Darpinian> on 2020-02-17
Reviewed by Dean Jackson.

  • fast/canvas/webgl/object-deletion-behaviour-expected.txt: Removed.
  • fast/canvas/webgl/object-deletion-behaviour.html: Removed.
11:59 AM Changeset in webkit [256757] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 Release ] fast/scrolling/latching/scroll-iframe-fragment.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207848

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:50 AM Changeset in webkit [256756] by pvollan@apple.com
  • 20 edits
    4 adds in trunk

Use CF prefs direct mode in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=203420

Reviewed by Brent Fulgham.

Source/WebCore:

Add Internals functions to read preferences.

API tests: Tests added in PreferenceChanges.mm.

  • testing/Internals.cpp:

(WebCore::Internals::readPreferenceInteger):
(WebCore::Internals::encodedPreferenceValue):

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

(WebCore::Internals::encodedPreferenceValue):

Source/WebCore/PAL:

Add SPI to enable CF prefs direct mode and declare method called when preference are changed.

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cf/CFUtilitiesSPI.h:
  • pal/spi/cocoa/NSUserDefaultsSPI.h: Added.

Source/WebKit:

Enable CF prefs direct mode, in order to avoid connecting to the CF prefs daemon in the WebContent process.
In direct mode, the prefs files will be accessed directly, and not through the CF prefs daemon. A preference
observer is added in the UI process, which will notify the WebContent process about preferences changes to a
domain. After a preference change, the WebContent process will set the new preference value for the changed
key/domain.

API tests: Tests added in PreferenceChanges.mm.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:

(WebKit::XPCServiceMain):

  • UIProcess/Cocoa/PreferenceObserver.h: Added.

(attribute):

  • UIProcess/Cocoa/PreferenceObserver.mm: Added.

(-[WKUserDefaults _notifyObserversOfChangeFromValuesForKeys:toValuesForKeys:]):
(-[WKUserDefaults observeValueForKeyPath:ofObject:change:context:]):
(-[WKUserDefaults initWithSuiteName:]):
(+[WKPreferenceObserver sharedInstance]):
(-[WKPreferenceObserver init]):
(-[WKPreferenceObserver preferenceDidChange:key:encodedValue:]):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::WebProcessPool::notifyPreferencesChanged):

  • UIProcess/WebProcessPool.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::notifyPreferencesChanged):

  • WebProcess/com.apple.WebProcess.sb.in:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/PreferenceChanges.mm: Added.

(TEST):

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

EWS should be able to file Bugzilla bugs
https://bugs.webkit.org/show_bug.cgi?id=207845

Reviewed by Alexey Proskuryakov.

  • BuildSlaveSupport/ews-build/steps.py:

(BugzillaMixin.create_bug): Method to file bugzilla bug using bugzilla REST API.

11:28 AM Changeset in webkit [256754] by Russell Epstein
  • 54 edits
    4 deletes in branches/safari-609.1.19-branch

Revert r256385. rdar://problem/59408870

11:28 AM Changeset in webkit [256753] by Russell Epstein
  • 5 edits in branches/safari-609.1.19-branch/Source/WebKit

Cherry-pick r256396. rdar://problem/59298180

Unreviewed, revert r255662 as it seems to cause blank views in SVC.
https://bugs.webkit.org/show_bug.cgi?id=207144
<rdar://problem/59334011>

  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::initializeNewWebProcess):
  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess):
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:

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

11:28 AM Changeset in webkit [256752] by Russell Epstein
  • 4 edits in branches/safari-609.1.19-branch

Cherry-pick r256317. rdar://problem/59408870

REGRESSION (r256009): [ Mojave wk2 Debug ] ASSERTION FAILED: Completion handler should always be called under WebKit::WebMDNSRegister::PendingRegistration
https://bugs.webkit.org/show_bug.cgi?id=207521
<rdar://problem/59331313>

Reviewed by Eric Carlson.

Source/WebKit:

Covered by debug assertion not hit in layout tests.

  • WebProcess/Network/webrtc/WebMDNSRegister.cpp: (WebKit::WebMDNSRegister::finishedRegisteringMDNSName): Call completion handler even if the document entry has been cleared, which can happen in suspend/destruction case. If the entry is not there, all MDNS names for the document have been unregistered. We then report a registration error.

LayoutTests:

  • platform/mac-wk2/TestExpectations:

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

11:28 AM Changeset in webkit [256751] by Russell Epstein
  • 2 edits in branches/safari-609.1.19-branch/LayoutTests

Cherry-pick r256231. rdar://problem/59408870

Regression: (r256009?) [ Mojave wk2 Debug ] webrtc/peerconnection-page-cache-long.html is crashing.
https://bugs.webkit.org/show_bug.cgi?id=207521

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:

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

11:24 AM Changeset in webkit [256750] by dino@apple.com
  • 3 edits in trunk/LayoutTests

Removing expectations for tests that no longer exist + fixing a typo.

  • platform/ios-wk2/TestExpectations:
  • platform/ios/TestExpectations:
11:23 AM Changeset in webkit [256749] by youenn@apple.com
  • 12 edits in trunk/Source

Do not send the client URL to network process
https://bugs.webkit.org/show_bug.cgi?id=207803

Reviewed by Darin Adler.

Source/WebCore:

Instead of sending the client URL through threads and IPC, we can retrieve it in NetworkProcess from the client identifier.
Implement this, as this is more efficient and safer.
No change of behavior.

  • workers/service/SWClientConnection.h:
  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::unregisterRegistration):

  • workers/service/WorkerSWClientConnection.cpp:

(WebCore::WorkerSWClientConnection::scheduleUnregisterJobInServer):

  • workers/service/WorkerSWClientConnection.h:
  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::scheduleUnregisterJob):

  • workers/service/server/SWServer.h:

Source/WebKit:

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::scheduleUnregisterJobInServer):

  • NetworkProcess/ServiceWorker/WebSWServerConnection.h:
  • NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
  • WebProcess/Storage/WebSWClientConnection.cpp:

(WebKit::WebSWClientConnection::scheduleUnregisterJobInServer):

  • WebProcess/Storage/WebSWClientConnection.h:
11:17 AM Changeset in webkit [256748] by Alan Coon
  • 8 edits in branches/safari-609-branch/Source

Versioning.

11:13 AM Changeset in webkit [256747] by Alan Coon
  • 4 edits in branches/safari-609-branch

Revert r256693. rdar://problem/59478981

10:52 AM Changeset in webkit [256746] by achristensen@apple.com
  • 2 edits in branches/safari-609-branch/Source/WebCore

Fix build after r256689

  • css/StyleProperties.h:

Add missing include that wasn't on the branch.

10:47 AM Changeset in webkit [256745] by commit-queue@webkit.org
  • 16 edits in trunk/Source

a lot gcc warnings because of %{public}s format specifier
https://bugs.webkit.org/show_bug.cgi?id=207478

Patch by Víctor Manuel Jáquez Leal <vjaquez@igalia.com> on 2020-02-17
Reviewed by Darin Adler.

Add PUBLIC_LOG_STRING macro which is defined depending on if
os_log()[1] is used or rather old printf().

OS Logging processes format specifiers for privacy matters, for
example dynamic strings, which demands %{public}s. But these
specifiers are not valid for printf().

Calls to logging with this specifier, if they are not Mac/Darwing
exclusive, use this new macro to avoid gcc warnings.

  1. https://developer.apple.com/documentation/os/logging?language=objc

Source/WebCore:

No new tests. Covered by existing tests.

  • loader/AdClickAttribution.cpp:

(WebCore::AdClickAttribution::parseConversionRequest):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

(WebCore::doReleaseLogging):

  • workers/service/server/RegistrationDatabase.cpp:

(WebCore::RegistrationDatabase::openSQLiteDatabase):

Source/WebKit:

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore):
(WebKit::ResourceLoadStatisticsDatabaseStore::openITPDatabase):
(WebKit::ResourceLoadStatisticsDatabaseStore::isCorrectTableSchema):
(WebKit::ResourceLoadStatisticsDatabaseStore::createUniqueIndices):
(WebKit::ResourceLoadStatisticsDatabaseStore::prepareStatements):

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess):
(WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener):
(WebKit::ResourceLoadStatisticsMemoryStore::ensurePrevalentResourcesForDebugMode):

  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:

(WebKit::ResourceLoadStatisticsStore::removeDataRecords):
(WebKit::ResourceLoadStatisticsStore::debugLogDomainsInBatches):

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::start):
(WebKit::NetworkResourceLoader::startNetworkLoad):
(WebKit::NetworkResourceLoader::didReceiveResponse):

  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:

(WebKit::ServiceWorkerFetchTask::didReceiveResponse):
(WebKit::ServiceWorkerFetchTask::didFail):

  • UIProcess/AuxiliaryProcessProxy.cpp:

(WebKit::AuxiliaryProcessProxy::logInvalidMessage):

  • UIProcess/ProcessThrottler.h:

(WebKit::ProcessThrottler::Activity::Activity):
(WebKit::ProcessThrottler::Activity::invalidate):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::receivedNavigationPolicyDecision):

Source/WTF:

  • wtf/Assertions.h:
  • wtf/MemoryPressureHandler.cpp:

(WTF::MemoryPressureHandler::ReliefLogger::logMemoryUsageChange):

10:33 AM Changeset in webkit [256744] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r256232?) [ Mac wk1 Release ] resize-observer/delete-observers-in-callbacks.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207847

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
10:31 AM Changeset in webkit [256743] by Russell Epstein
  • 8 edits in branches/safari-609.1.19-branch/Source

Versioning.

10:29 AM Changeset in webkit [256742] by pvollan@apple.com
  • 18 edits in trunk/Source

Mach lookup to com.apple.webinspector should not be allowed in WebKit's WebContent process
https://bugs.webkit.org/show_bug.cgi?id=203214

Reviewed by Brent Fulgham.

Source/JavaScriptCore:

Add static flag in RemoteInspector to indicate whether a sandbox extension is needed. The remote inspector will only be
started if the sandbox extension is not needed. Only the WebContent process will need a sandbox extension, since this
patch removes mach access to 'com.apple.webinspector' for this process. Also add name and domain for the
'Enable Remote Inspector' setting, since this will be used in the UI process.

  • inspector/remote/RemoteInspector.cpp:
  • inspector/remote/RemoteInspector.h:
  • inspector/remote/RemoteInspectorConstants.h:
  • inspector/remote/cocoa/RemoteInspectorCocoa.mm:

(Inspector::RemoteInspector::singleton):

Source/WebKit:

If the Web inspector is enabled when the WebContent process is started, a sandbox extension is created
for 'com.apple.webinspector' and a message is sent to the WebContent process, where the extension will
be consumed, and the remote Web inspector will be started. The same happens if Web inspector is enabled
by the user while Safari is running. When RemoteInspector::singleton() is called in the UI process there
is no need for an extension, since access to the Web inspector daemon is already allowed.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::backlightLevelDidChangeCallback):
(WebKit::WebProcessPool::remoteWebInspectorEnabledCallback):
(WebKit::WebProcessPool::registerNotificationObservers):
(WebKit::WebProcessPool::unregisterNotificationObservers):

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::enableRemoteInspectorIfNeeded):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

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

(WebKit::WebProcessProxy::mayBecomeUnresponsive):

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

(WebKit::WebProcess::initializeWebProcess):

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

(WebKit::WebProcess::enableRemoteWebInspector):

  • WebProcess/com.apple.WebProcess.sb.in:
10:23 AM Changeset in webkit [256741] by Russell Epstein
  • 1 copy in branches/safari-609.1.19-branch

New branch.

10:18 AM Changeset in webkit [256740] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Add telemetry with backtrace for specific rules
https://bugs.webkit.org/show_bug.cgi?id=207494

Reviewed by Brent Fulgham.

For specific sandbox mach lookup rules in the WebContent process, add telemetry with backtrace.

No new tests, no behavior change.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
10:02 AM Changeset in webkit [256739] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] storage/indexeddb/detached-iframe.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207844

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
9:44 AM Changeset in webkit [256738] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebCore

IndexedDB: index cursor iteration is slow when there are a lot of index records from different object stores
https://bugs.webkit.org/show_bug.cgi?id=207377
<rdar://problem/59288679>

Reviewed by Brady Eidson.

Make the Index of IndexRecords table include indexID since we always perform search with indexID.
This would let SQLite optimize the index statement in SQLiteCursor with Covering Index and fix the slowness.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidIndexRecordsIndex):
(WebCore::IDBServer::v1IndexRecordsIndexSchema): Deleted.

8:48 AM Changeset in webkit [256737] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

EWS should be able to comment on Bugzilla
https://bugs.webkit.org/show_bug.cgi?id=201927

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(BugzillaMixin.comment_on_bug): Method to comment on bugzilla bug.
(BugzillaMixin.remove_flags_on_patch): Drive-by fix to correctly identify failure based on status code.
(BugzillaMixin.close_bug): Ditto.
(CommentOnBug): Build step to comment on bugzilla bug.

8:45 AM Changeset in webkit [256736] by Antti Koivisto
  • 7 edits in trunk

[macOS] Add trace points for layer flush runloop observer
https://bugs.webkit.org/show_bug.cgi?id=207837

Reviewed by Sam Weinig.

Source/WebKit:

Add trace points to see how much scheduled layer flushes get delayed by timers and other runloop activities.

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen):

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::setLayerTreeStateIsFrozen):

Also add trace points for layer tree freezing (iOS too).

(WebKit::TiledCoreAnimationDrawingArea::layerFlushRunLoopCallback):
(WebKit::TiledCoreAnimationDrawingArea::invalidateLayerFlushRunLoopObserver):
(WebKit::TiledCoreAnimationDrawingArea::scheduleLayerFlushRunLoopObserver):

Source/WTF:

  • wtf/SystemTracing.h:

Tools:

  • Tracing/SystemTracePoints.plist:
8:40 AM Changeset in webkit [256735] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r256712?) [ iOS wk2 ] fast/block/block-only/floats-and-block-formatting-roots.html is crashing.
https://bugs.webkit.org/show_bug.cgi?id=207841

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
8:16 AM Changeset in webkit [256734] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] webgpu/whlsl/loops-break.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207839

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
8:03 AM Changeset in webkit [256733] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[LFC] Remove ReplacedBox::m_layoutBox
https://bugs.webkit.org/show_bug.cgi?id=207830
<rdar://problem/59498829>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/simple-absolute-positioned-inline-element.html

This is not needed after r256380 ([LFC] Introduce Layout::ReplacedBox).

  • layout/layouttree/LayoutReplacedBox.cpp:

(WebCore::Layout::ReplacedBox::hasIntrinsicWidth const):
(WebCore::Layout::ReplacedBox::hasIntrinsicHeight const):
(WebCore::Layout::ReplacedBox::intrinsicWidth const):
(WebCore::Layout::ReplacedBox::intrinsicHeight const):
(WebCore::Layout::ReplacedBox::hasAspectRatio const):

  • layout/layouttree/LayoutReplacedBox.h:

LayoutTests:

  • fast/layoutformattingcontext/simple-absolute-positioned-inline-element-expected.html: Added.
  • fast/layoutformattingcontext/simple-absolute-positioned-inline-element.html: Added.
7:53 AM Changeset in webkit [256732] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC] The initial containing block does not necessarily have in-flow content.
https://bugs.webkit.org/show_bug.cgi?id=207833
<rdar://problem/59500650>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/html-is-absolute-positioned.html

When the <html> is out-of-flow positioned, the initial containing block has no in-flow direct children.

  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::layoutFormattingContextSubtree):

LayoutTests:

  • fast/layoutformattingcontext/html-is-absolute-positioned-expected.html: Added.
  • fast/layoutformattingcontext/html-is-absolute-positioned.html: Added.
7:37 AM Changeset in webkit [256731] by don.olmstead@sony.com
  • 29 edits
    1 add
    1 delete in trunk

[CMake] Use builtin targets
https://bugs.webkit.org/show_bug.cgi?id=205166

Reviewed by Darin Adler.

.:

Add WebKitFindPackage.cmake which wraps CMake's find_package to provide targets
for common libraries.

Rationale:

  1. There are a number of libraries which are found using CMake's internal Find modules that contain targets but not all of them are available in the minimum version of CMake we support, 3.10.
  2. Updating to CMake 3.12 or higher is not possible due to the WebKit GTK's support policy. It looks like the next time we can bump the version is spring 2021.
  3. Apple builds, both Mac and Windows, have libraries that won't be found using the stock CMake modules. AppleWin also has internal builds where all libraries have a DEBUG_SUFFIX of _debug that would not be picked up.

In the implementation of find_package any Apple specific requirements are dealt with
and the expected CMake values are populated. For all other cases CMake's original
find_package is called so there's no behavior change. Afterwards if there is a library
that has a target but the target was not created it is created from the definitions
that are present from the find module at CMake 3.10.

This makes it so all ports consistently have targets across all versions of CMake
above the current minimum.

  • Source/cmake/OptionsAppleWin.cmake:
  • Source/cmake/OptionsPlayStation.cmake:
  • Source/cmake/WebKitCommon.cmake:
  • Source/cmake/WebKitFindPackage.cmake: Added.
  • Source/cmake/target/icu.cmake: Removed.

PerformanceTests:

  • MallocBench/MallocBench/CMakeLists.txt:

Source/WebCore:

  • CMakeLists.txt:
  • PlatformGTK.cmake:
  • PlatformMac.cmake:
  • platform/Curl.cmake:
  • platform/FreeType.cmake:
  • platform/ImageDecoders.cmake:

Source/WebCore/PAL:

  • pal/PlatformPlayStation.cmake:

Source/WebKit:

  • PlatformFTW.cmake:
  • PlatformWPE.cmake:
  • PlatformWin.cmake:

Source/WebKitLegacy:

  • PlatformFTW.cmake:
  • PlatformWin.cmake:

Source/WTF:

  • wtf/PlatformGTK.cmake:
  • wtf/PlatformJSCOnly.cmake:
  • wtf/PlatformPlayStation.cmake:
  • wtf/PlatformWPE.cmake:

Tools:

  • TestWebKitAPI/PlatformWin.cmake:
7:30 AM Changeset in webkit [256730] by clopez@igalia.com
  • 123 edits
    9 copies
    14 moves
    221 adds
    11 deletes in trunk/LayoutTests

Update WPT tests for encoding
https://bugs.webkit.org/show_bug.cgi?id=207644

Rubber-stamped by Youenn Fablet.

LayoutTests/imported/w3c:

Update from WPT ToT (c8671a2d15)

On top of the automatic import this:

  • removes imported/w3c/web-platform-tests/encoding/reftest.list and moves the -ref.html expectations to -expected.html (see bug 203783)
  • manually fixes the broken imported tests with byte truncated secuences (see bug 207731)
  • manually fixes the test resources of imported/w3c/web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-decode* (see bug 207736)
  • web-platform-tests/encoding/META.yml: Added.
  • web-platform-tests/encoding/OWNERS: Removed.
  • web-platform-tests/encoding/api-basics.any-expected.txt: Added.
  • web-platform-tests/encoding/api-basics.any.html: Added.
  • web-platform-tests/encoding/api-basics.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/api-basics.html.
  • web-platform-tests/encoding/api-basics.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/api-basics.any.worker.html: Added.
  • web-platform-tests/encoding/api-invalid-label.any-expected.txt: Added.
  • web-platform-tests/encoding/api-invalid-label.any.html: Added.
  • web-platform-tests/encoding/api-invalid-label.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/api-invalid-label.html.

(tests.forEach):

  • web-platform-tests/encoding/api-invalid-label.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/api-invalid-label.any.worker.html: Added.
  • web-platform-tests/encoding/api-replacement-encodings.any-expected.txt: Added.
  • web-platform-tests/encoding/api-replacement-encodings.any.html: Added.
  • web-platform-tests/encoding/api-replacement-encodings.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/api-replacement-encodings.html.

(encodings_table.forEach):

  • web-platform-tests/encoding/api-replacement-encodings.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/api-replacement-encodings.any.worker.html: Added.
  • web-platform-tests/encoding/api-surrogates-utf8.any-expected.txt: Added.
  • web-platform-tests/encoding/api-surrogates-utf8.any.html: Added.
  • web-platform-tests/encoding/api-surrogates-utf8.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/api-surrogates-utf8.html.

(badStrings.forEach):

  • web-platform-tests/encoding/api-surrogates-utf8.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/api-surrogates-utf8.any.worker.html: Added.
  • web-platform-tests/encoding/big5-encoder-expected.txt:
  • web-platform-tests/encoding/big5-encoder.html:
  • web-platform-tests/encoding/encodeInto.any-expected.txt: Added.
  • web-platform-tests/encoding/encodeInto.any.html: Added.
  • web-platform-tests/encoding/encodeInto.any.js: Added.

(forEach.testData.forEach.destinationData.string_appeared_here.forEach.arrayBufferOrSharedArrayBuffer.test):
(Float64Array.forEach.view.string_appeared_here.forEach):
(string_appeared_here.forEach):
(test):

  • web-platform-tests/encoding/encodeInto.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/encodeInto.any.worker.html: Added.
  • web-platform-tests/encoding/eof-shift_jis-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/eof-shift_jis-ref.html.
  • web-platform-tests/encoding/eof-utf-8-one-ref.html: Removed.
  • web-platform-tests/encoding/eof-utf-8-three-ref.html: Removed.
  • web-platform-tests/encoding/eof-utf-8-two-ref.html: Removed.
  • web-platform-tests/encoding/gbk-encoder-expected.txt:
  • web-platform-tests/encoding/gbk-encoder.html:
  • web-platform-tests/encoding/idlharness.any-expected.txt: Added.
  • web-platform-tests/encoding/idlharness.any.html: Added.
  • web-platform-tests/encoding/idlharness.any.js: Added.
  • web-platform-tests/encoding/idlharness.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/idlharness.any.worker.html: Added.
  • web-platform-tests/encoding/idlharness.html: Removed.
  • web-platform-tests/encoding/iso-2022-jp-decoder.any-expected.txt: Added.
  • web-platform-tests/encoding/iso-2022-jp-decoder.any.html: Added.
  • web-platform-tests/encoding/iso-2022-jp-decoder.any.js: Added.

(decode):

  • web-platform-tests/encoding/iso-2022-jp-decoder.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/iso-2022-jp-decoder.any.worker.html: Added.
  • web-platform-tests/encoding/iso-2022-jp-decoder.html: Removed.
  • web-platform-tests/encoding/iso-2022-jp-encoder-expected.txt:
  • web-platform-tests/encoding/iso-2022-jp-encoder.html:
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-decode-cseucpkdfmtjapanese-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-decode-cseucpkdfmtjapanese.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-decode-errors-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-decode-errors.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-decode-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-decode-x-euc-jp-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-decode-x-euc-jp.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-decode.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-decoder.js: Added.

(dec2char):
(eucjpDecoder):

  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-cseucpkdfmtjapanese-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-cseucpkdfmtjapanese.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-cseucpkdfmtjapanese.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-errors-han-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-errors-han.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-errors-han.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-errors-hangul-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-errors-hangul.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-errors-hangul.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-errors-misc-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-errors-misc-expected.txt.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-errors-misc.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-errors-misc.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-x-euc-jp-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-x-euc-jp.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form-x-euc-jp.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-form.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-han-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-han-expected.txt.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-han.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-han.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-hangul-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-hangul-expected.txt.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-hangul.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-hangul.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-misc-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-misc-expected.txt.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-misc.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-errors-misc.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encode-href.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp-encoder.js: Added.

(chars2cps):
(eucjpEncoder):
(convertToHex):
(normalizeStr):

  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp_chars-cseucpkdfmtjapanese.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp_chars-cseucpkdfmtjapanese.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp_chars-x-euc-jp.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp_chars-x-euc-jp.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp_chars.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp_chars.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp_errors.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/eucjp_errors.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/jis0208_index.js: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/jis0212_index.js: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/euc-jp/w3c-import.log: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-decode-csiso2022jp-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-decode-csiso2022jp.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-decode-errors-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-decode-errors.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-decode-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-decode.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-decoder.js: Added.

(dec2char):
(getIndexPtr):
(iso2022jpDecoder):

  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-csiso2022jp-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-csiso2022jp.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-csiso2022jp.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-hangul-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-hangul.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-hangul.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-misc-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-misc.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-misc.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-stateful-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-stateful.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-han-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-han-expected.txt.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-han.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-han.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-hangul-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-hangul-expected.txt.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-hangul.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-hangul.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-misc-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-misc-expected.txt.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-misc.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-errors-misc.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href-expected.txt: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-href.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encoder.js: Added.

(chars2cps):
(iso2022jpEncoder):
(convertToHex):
(normalizeStr):

  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp_errors.html: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp_errors.html.headers: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/jis0208_index.js: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/w3c-import.log: Added.
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-decode-csshiftjis.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-decode-errors.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-decode-ms932.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-decode-ms_kanji.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-decode-shift-jis.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-decode-sjis.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-decode-windows-31j.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-decode-x-sjis.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-decode.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-decoder.js:

(sjisDecoder):

  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-csshiftjis.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-han-expected.txt:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-han.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-hangul.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-misc-expected.txt:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-errors-misc.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-ms932.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-ms_kanji.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-shift-jis.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-sjis.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-windows-31j.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-x-sjis.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-han-expected.txt:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-han.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-hangul-expected.txt:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-hangul.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-misc-expected.txt:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href-errors-misc.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-href.html:
  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encoder.js:

(sjisEncoder):

  • web-platform-tests/encoding/legacy-mb-japanese/shift_jis/w3c-import.log:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-decode-cseuckr.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-decode-csksc56011987.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-decode-iso-ir-149.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-decode-korean.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-decode-ks_c_5601-1987.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-decode-ks_c_5601-1989.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-decode-ksc5601.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-decode-ksc_5601.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-decode-windows-949.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-decode.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-decoder.js:

(euckrDecoder):

  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-cseuckr.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-csksc56011987.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-han-expected.txt:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-han.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-hangul-expected.txt: Removed.
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-hangul.html: Removed.
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-hangul.html.headers: Removed.
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-misc-expected.txt:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-errors-misc.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-iso-ir-149.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-korean.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1987.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ks_c_5601-1989.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ksc5601.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-ksc_5601.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form-windows-949.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-form.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href-errors-han-expected.txt:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href-errors-han.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href-errors-misc-expected.txt:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href-errors-misc.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href-expected.txt:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/euckr-encode-href.html:
  • web-platform-tests/encoding/legacy-mb-korean/euc-kr/w3c-import.log:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-decode-big5-hkscs.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-decode-cn-big5.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-decode-csbig5.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-decode-extra.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-decode-x-x-big5.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-decode.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-decoder.js:

(big5Decoder):

  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-enc-ascii-expected.txt:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-enc-ascii.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-big5-hkscs-expected.txt:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-big5-hkscs.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-cn-big5-expected.txt:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-cn-big5.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-csbig5-expected.txt:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-csbig5.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-errors-extBa-expected.txt:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-errors-extBa.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-errors-extBb.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-errors-han-expected.txt:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-errors-han.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-errors-hangul.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-errors-misc-expected.txt:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-errors-misc.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-errors-pua.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-expected.txt:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-x-x-big5-expected.txt:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form-x-x-big5.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-form.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-han.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-hangul.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-errors-misc.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href-expected.txt:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/big5-encode-href.html:
  • web-platform-tests/encoding/legacy-mb-tchinese/big5/w3c-import.log:
  • web-platform-tests/encoding/reftest.list: Removed.
  • web-platform-tests/encoding/remove-only-one-bom-expected.txt: Added.
  • web-platform-tests/encoding/remove-only-one-bom.html: Added.
  • web-platform-tests/encoding/resources/decode-common.js: Added.

(showNodes):

  • web-platform-tests/encoding/resources/encode-form-common.js: Copied from LayoutTests/imported/w3c/web-platform-tests/encoding/legacy-mb-japanese/shift_jis/sjis-encode-form-sjis.html.

(setup):
(runNext.iframe.onload):

  • web-platform-tests/encoding/resources/encode-href-common.js: Added.

(encode):

  • web-platform-tests/encoding/resources/ranges.js: Added.
  • web-platform-tests/encoding/resources/single-byte-raw.py:

(main):

  • web-platform-tests/encoding/resources/two-boms-utf-16be.html: Added.
  • web-platform-tests/encoding/resources/two-boms-utf-16le.html: Added.
  • web-platform-tests/encoding/resources/two-boms-utf-8.html: Added.
  • web-platform-tests/encoding/resources/utf-32-big-endian-bom.html:
  • web-platform-tests/encoding/resources/utf-32-big-endian-bom.xml:
  • web-platform-tests/encoding/resources/utf-32-big-endian-nobom.html:
  • web-platform-tests/encoding/resources/utf-32-big-endian-nobom.xml:
  • web-platform-tests/encoding/resources/utf-32-little-endian-bom.html:
  • web-platform-tests/encoding/resources/utf-32-little-endian-bom.xml:
  • web-platform-tests/encoding/resources/utf-32-little-endian-nobom.html:
  • web-platform-tests/encoding/resources/utf-32-little-endian-nobom.xml:
  • web-platform-tests/encoding/resources/w3c-import.log:
  • web-platform-tests/encoding/single-byte-decoder.html:
  • web-platform-tests/encoding/sniffing-expected.txt: Added.
  • web-platform-tests/encoding/sniffing.html: Added.
  • web-platform-tests/encoding/streams/backpressure.any.js: Added.

(input.new.Uint8Array):

  • web-platform-tests/encoding/streams/backpressure.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/streams/backpressure.any.worker.html: Added.
  • web-platform-tests/encoding/streams/decode-attributes.any.js: Added.

(const.label.of.Object.keys):
(null.test):
(null.setting.fatal.to.string_appeared_here.should.set the):
(null.setting.ignoreBOM.to.string_appeared_here.should.set the):
(string_appeared_here.setting.fatal.to.string_appeared_here.should.set the):
(string_appeared_here.setting.ignoreBOM.to.string_appeared_here.should.set the):

  • web-platform-tests/encoding/streams/decode-attributes.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/streams/decode-attributes.any.worker.html: Added.
  • web-platform-tests/encoding/streams/decode-bad-chunks.any.js: Added.

(const.chunk.of.badChunks.promise_test.async t):

  • web-platform-tests/encoding/streams/decode-bad-chunks.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/streams/decode-bad-chunks.any.worker.html: Added.
  • web-platform-tests/encoding/streams/decode-ignore-bom.any.js: Added.

(async pipeAndAssemble):

  • web-platform-tests/encoding/streams/decode-ignore-bom.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/streams/decode-ignore-bom.any.worker.html: Added.
  • web-platform-tests/encoding/streams/decode-incomplete-input.any.js: Added.

(promise_test.async t):

  • web-platform-tests/encoding/streams/decode-incomplete-input.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/streams/decode-incomplete-input.any.worker.html: Added.
  • web-platform-tests/encoding/streams/decode-non-utf8.any.js: Added.

(const.encoding.of.encodings.promise_test.async const):
(const.encoding.of.encodings.promise_test):
(const.encoding.of.encodings.promise_test.async t):

  • web-platform-tests/encoding/streams/decode-non-utf8.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/streams/decode-non-utf8.any.worker.html: Added.
  • web-platform-tests/encoding/streams/decode-split-character.any.js: Added.
  • web-platform-tests/encoding/streams/decode-split-character.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/streams/decode-split-character.any.worker.html: Added.
  • web-platform-tests/encoding/streams/decode-utf8.any.js: Added.

(string_appeared_here.forEach.async promise_test):
(string_appeared_here.forEach):
(async promise_test):

  • web-platform-tests/encoding/streams/decode-utf8.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/streams/decode-utf8.any.worker.html: Added.
  • web-platform-tests/encoding/streams/encode-bad-chunks.any.js: Added.

(promise_test.t.const.writePromise.writer.write.toString):

  • web-platform-tests/encoding/streams/encode-bad-chunks.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/streams/encode-bad-chunks.any.worker.html: Added.
  • web-platform-tests/encoding/streams/encode-utf8.any.js: Added.

(of.testCases.promise_test.async const):
(of.testCases.promise_test):

  • web-platform-tests/encoding/streams/encode-utf8.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/streams/encode-utf8.any.worker.html: Added.
  • web-platform-tests/encoding/streams/readable-writable-properties.any.js: Added.

(test):

  • web-platform-tests/encoding/streams/readable-writable-properties.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/streams/readable-writable-properties.any.worker.html: Added.
  • web-platform-tests/encoding/streams/realms.window-expected.txt: Added.
  • web-platform-tests/encoding/streams/realms.window.html: Added.
  • web-platform-tests/encoding/streams/realms.window.js: Added.

(createRealm):
(async createRealms):
(const.id):
(evalInRealm):
(async evalInRealmAndWait):
(async evalInRealmAndReturn):
(async constructAndStore):
(readInReadRealm):
(writeInWriteRealm):
(window.onload):
(runGenericTests.async promise_test):
(async runTextEncoderStreamTests.async promise_test):
(async runTextEncoderStreamTests):
(async runTextDecoderStreamTests.async promise_test):
(async runTextDecoderStreamTests):

  • web-platform-tests/encoding/streams/resources/readable-stream-from-array.js: Added.

(readableStreamFromArray):

  • web-platform-tests/encoding/streams/resources/readable-stream-to-array.js: Added.

(readableStreamToArray):

  • web-platform-tests/encoding/streams/resources/w3c-import.log: Added.
  • web-platform-tests/encoding/streams/w3c-import.log: Added.
  • web-platform-tests/encoding/textdecoder-byte-order-marks.any-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-byte-order-marks.any.html: Added.
  • web-platform-tests/encoding/textdecoder-byte-order-marks.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/textdecoder-byte-order-marks.html.

(testCases.forEach):

  • web-platform-tests/encoding/textdecoder-byte-order-marks.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-byte-order-marks.any.worker.html: Added.
  • web-platform-tests/encoding/textdecoder-copy.any-expected.txt:
  • web-platform-tests/encoding/textdecoder-copy.any.js:

(string_appeared_here.forEach.arrayBufferOrSharedArrayBuffer.test):

  • web-platform-tests/encoding/textdecoder-copy.any.worker-expected.txt:
  • web-platform-tests/encoding/textdecoder-fatal-single-byte.any-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-fatal-single-byte.any.html: Added.
  • web-platform-tests/encoding/textdecoder-fatal-single-byte.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/textdecoder-fatal-single-byte.html.

(singleByteEncodings.forEach):

  • web-platform-tests/encoding/textdecoder-fatal-single-byte.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-fatal-single-byte.any.worker.html: Added.
  • web-platform-tests/encoding/textdecoder-fatal-streaming.any-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-fatal-streaming.any.html: Added.
  • web-platform-tests/encoding/textdecoder-fatal-streaming.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/textdecoder-fatal-streaming.html.

(test):

  • web-platform-tests/encoding/textdecoder-fatal-streaming.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-fatal-streaming.any.worker.html: Added.
  • web-platform-tests/encoding/textdecoder-fatal.any-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-fatal.any.html: Added.
  • web-platform-tests/encoding/textdecoder-fatal.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/textdecoder-fatal.html.

(bad.forEach):
(test):

  • web-platform-tests/encoding/textdecoder-fatal.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-fatal.any.worker.html: Added.
  • web-platform-tests/encoding/textdecoder-ignorebom.any-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-ignorebom.any.html: Added.
  • web-platform-tests/encoding/textdecoder-ignorebom.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/textdecoder-ignorebom.html.

(cases.forEach):
(test):

  • web-platform-tests/encoding/textdecoder-ignorebom.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-ignorebom.any.worker.html: Added.
  • web-platform-tests/encoding/textdecoder-labels.any-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-labels.any.html: Added.
  • web-platform-tests/encoding/textdecoder-labels.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/textdecoder-labels.html.

(encodings_table.forEach):

  • web-platform-tests/encoding/textdecoder-labels.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-labels.any.worker.html: Added.
  • web-platform-tests/encoding/textdecoder-streaming.any-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-streaming.any.html: Added.
  • web-platform-tests/encoding/textdecoder-streaming.any.js: Added.

(string_appeared_here.forEach.):
(string_appeared_here.forEach):

  • web-platform-tests/encoding/textdecoder-streaming.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-streaming.any.worker.html: Added.
  • web-platform-tests/encoding/textdecoder-streaming.html: Removed.
  • web-platform-tests/encoding/textdecoder-utf16-surrogates.any-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-utf16-surrogates.any.html: Added.
  • web-platform-tests/encoding/textdecoder-utf16-surrogates.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/textdecoder-utf16-surrogates.html.

(bad.forEach):

  • web-platform-tests/encoding/textdecoder-utf16-surrogates.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/textdecoder-utf16-surrogates.any.worker.html: Added.
  • web-platform-tests/encoding/textencoder-constructor-non-utf.any-expected.txt: Added.
  • web-platform-tests/encoding/textencoder-constructor-non-utf.any.html: Added.
  • web-platform-tests/encoding/textencoder-constructor-non-utf.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/textencoder-constructor-non-utf.html.

(encodings_table.forEach):

  • web-platform-tests/encoding/textencoder-constructor-non-utf.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/textencoder-constructor-non-utf.any.worker.html: Added.
  • web-platform-tests/encoding/textencoder-utf16-surrogates.any-expected.txt: Added.
  • web-platform-tests/encoding/textencoder-utf16-surrogates.any.html: Added.
  • web-platform-tests/encoding/textencoder-utf16-surrogates.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/encoding/textencoder-utf16-surrogates.html.

(test):

  • web-platform-tests/encoding/textencoder-utf16-surrogates.any.worker-expected.txt: Added.
  • web-platform-tests/encoding/textencoder-utf16-surrogates.any.worker.html: Added.
  • web-platform-tests/encoding/utf-32-expected.txt:
  • web-platform-tests/encoding/utf-32-from-win1252-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/encoding/utf-32-expected.txt.
  • web-platform-tests/encoding/utf-32-from-win1252.html: Added.
  • web-platform-tests/encoding/utf-32.html:
  • web-platform-tests/encoding/w3c-import.log:

LayoutTests:

  • platform/gtk/imported/w3c/web-platform-tests/encoding/textdecoder-fatal-single-byte.any-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/encoding/textdecoder-fatal-single-byte.any.worker-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/encoding/textdecoder-fatal-single-byte.any-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/encoding/textdecoder-fatal-single-byte.any.worker-expected.txt: Added.
7:09 AM Changeset in webkit [256729] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews] add SetBuildSummary step for Windows EWS
https://bugs.webkit.org/show_bug.cgi?id=207556

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/factories.py:

(WindowsFactory.init):
(GTKBuildAndTestFactory.init):

  • BuildSlaveSupport/ews-build/factories_unittest.py:

(TestBuildAndTestsFactory.test_windows_factory): Added unit-test.

6:27 AM WebKitGTK/2.28.x edited by Philippe Normand
(diff)
4:07 AM Changeset in webkit [256728] by commit-queue@webkit.org
  • 6 edits
    4 adds in trunk/Source/WebCore

[Curl] Use shared single thread for WebSocket connections
https://bugs.webkit.org/show_bug.cgi?id=187984

Patch by Takashi Komori <Takashi.Komori@sony.com> on 2020-02-17
Reviewed by Fujii Hironori.

This patch suppresses invoking worker threads for websocket connections.
CurlStreamScheduler starts up to one worker thread.

No new tests. Covered by existing WebSocket tests.

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

(WebCore::CurlContext::streamScheduler):
(WebCore::CurlHandle::getActiveSocket):
(WebCore::CurlHandle::send):
(WebCore::CurlHandle::receive):
(WebCore::CurlSocketHandle::CurlSocketHandle): Deleted.
(WebCore::CurlSocketHandle::connect): Deleted.
(WebCore::CurlSocketHandle::send): Deleted.
(WebCore::CurlSocketHandle::receive): Deleted.
(WebCore::CurlSocketHandle::wait): Deleted.

  • platform/network/curl/CurlContext.h:
  • platform/network/curl/CurlStream.cpp: Added.

(WebCore::CurlStream::CurlStream):
(WebCore::CurlStream::~CurlStream):
(WebCore::CurlStream::destroyHandle):
(WebCore::CurlStream::send):
(WebCore::CurlStream::appendMonitoringFd):
(WebCore::CurlStream::tryToTransfer):
(WebCore::CurlStream::tryToReceive):
(WebCore::CurlStream::tryToSend):
(WebCore::CurlStream::notifyFailure):

  • platform/network/curl/CurlStream.h: Added.

(WebCore::CurlStream::create):

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

(WebCore::CurlStreamScheduler::CurlStreamScheduler):
(WebCore::CurlStreamScheduler::~CurlStreamScheduler):
(WebCore::CurlStreamScheduler::createStream):
(WebCore::CurlStreamScheduler::destroyStream):
(WebCore::CurlStreamScheduler::send):
(WebCore::CurlStreamScheduler::callOnWorkerThread):
(WebCore::CurlStreamScheduler::callClientOnMainThread):
(WebCore::CurlStreamScheduler::startThreadIfNeeded):
(WebCore::CurlStreamScheduler::stopThreadIfNoMoreJobRunning):
(WebCore::CurlStreamScheduler::executeTasks):
(WebCore::CurlStreamScheduler::workerThread):

  • platform/network/curl/CurlStreamScheduler.h: Added.
  • platform/network/curl/SocketStreamHandleImpl.h:

(WebCore::SocketStreamHandleImpl::isStreamInvalidated):

  • platform/network/curl/SocketStreamHandleImplCurl.cpp:

(WebCore::SocketStreamHandleImpl::SocketStreamHandleImpl):
(WebCore::SocketStreamHandleImpl::~SocketStreamHandleImpl):
(WebCore::SocketStreamHandleImpl::platformSendInternal):
(WebCore::SocketStreamHandleImpl::platformClose):
(WebCore::SocketStreamHandleImpl::didOpen):
(WebCore::SocketStreamHandleImpl::didSendData):
(WebCore::SocketStreamHandleImpl::didReceiveData):
(WebCore::SocketStreamHandleImpl::didFail):
(WebCore::SocketStreamHandleImpl::destructStream):
(WebCore::SocketStreamHandleImpl::threadEntryPoint): Deleted.
(WebCore::SocketStreamHandleImpl::handleError): Deleted.
(WebCore::SocketStreamHandleImpl::stopThread): Deleted.
(WebCore::SocketStreamHandleImpl::callOnWorkerThread): Deleted.
(WebCore::SocketStreamHandleImpl::executeTasks): Deleted.

2:54 AM Changeset in webkit [256727] by berto@igalia.com
  • 5 edits in trunk

[WPE] Change the QML plugin install path
https://bugs.webkit.org/show_bug.cgi?id=207761

Reviewed by Philippe Normand.

Source/WebKit:

This way there's no need to set QML2_IMPORT_PATH manually.

  • PlatformWPE.cmake:

Tools:

  • Scripts/run-qt-wpe-minibrowser:
  • glib/api_test_runner.py:

(TestRunner._run_test_qt):

2:13 AM Changeset in webkit [256726] by Carlos Garcia Campos
  • 4 edits in trunk/Source/WebCore

[WPE] Use custom theme style to render buttons
https://bugs.webkit.org/show_bug.cgi?id=207471

Reviewed by Adrian Perez de Castro.

This includes push, check and radio buttons.

  • platform/wpe/RenderThemeWPE.cpp:

(WebCore::RenderThemeWPE::supportsFocusRing const): Return true for buttons.
(WebCore::RenderThemeWPE::paintMenuList): Move mthe code to Theme and use ThemeWPE::paintButton() +
ThemeWPE::paintFocus().

  • platform/wpe/ThemeWPE.cpp:

(WebCore::ThemeWPE::paintFocus): Moved from RenderThemeWPE, adding the offset as a parameter.
(WebCore::ThemeWPE::paint): Remove part parameter from call to paintButton().
(WebCore::ThemeWPE::paintCheckbox):
(WebCore::ThemeWPE::paintRadio):
(WebCore::ThemeWPE::paintButton):

  • platform/wpe/ThemeWPE.h:
1:37 AM Changeset in webkit [256725] by Carlos Garcia Campos
  • 5 edits
    2 adds in trunk

Search cancel button becomes visible when there's a hover effect in CSS
https://bugs.webkit.org/show_bug.cgi?id=207328

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Use a custom style resolver for search cancel button element to ensure it's always hidden when the input element
is empty.

Test: fast/forms/search-cancel-button-hover.html

  • html/shadow/TextControlInnerElements.cpp:

(WebCore::SearchFieldCancelButtonElement::SearchFieldCancelButtonElement): Call setHasCustomStyleResolveCallbacks().
(WebCore::SearchFieldCancelButtonElement::resolveCustomStyle): Set the render style visibility depending on
input current value.

  • html/shadow/TextControlInnerElements.h:

LayoutTests:

  • fast/forms/search-cancel-button-hover-expected.html: Added.
  • fast/forms/search-cancel-button-hover.html: Added.
1:07 AM Changeset in webkit [256724] by Carlos Garcia Campos
  • 4 edits
    1 add in trunk/Source/WebCore

[WPE] Use custom theme style to render text fields
https://bugs.webkit.org/show_bug.cgi?id=207379

Reviewed by Adrian Perez de Castro.

This includes text entries, text areas and search fields. The search field icons are rendered using an extra
default style sheet for the theme, using Adwaita svg icons in the CSS.

  • PlatformWPE.cmake:
  • css/themeAdwaita.css: Added.

(input[type="search"]::-webkit-search-results-button,):
(input[type="search"]::-webkit-search-results-button:hover,):
(input[type="search"]::-webkit-search-cancel-button):
(body[dir="rtl"] input[type="search"]::-webkit-search-cancel-button):
(input[type="search"]::-webkit-search-cancel-button:hover):

  • platform/wpe/RenderThemeWPE.cpp:

(WebCore::RenderThemeWPE::supportsFocusRing const): Return true for TextFieldPart, TextAreaPart and SearchFieldPart.
(WebCore::RenderThemeWPE::extraDefaultStyleSheet): Return themeAdwaita.css.
(WebCore::RenderThemeWPE::paintTextField):
(WebCore::RenderThemeWPE::paintTextArea):
(WebCore::RenderThemeWPE::paintSearchField):

  • platform/wpe/RenderThemeWPE.h:
1:03 AM Changeset in webkit [256723] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

Updated Simplified Chinese translation
https://bugs.webkit.org/show_bug.cgi?id=207685

Patch by Yuchen Guo <egyc@live.com> on 2020-02-17
Rubber-stamped by Carlos Garcia Campos.

  • zh_CN.po:
Note: See TracTimeline for information about the timeline view.