Timeline
Sep 7, 2019:
- 11:10 PM Changeset in webkit [249629] by
-
- 15 edits in trunk
Add support for postMessage buffering between the service worker and window
https://bugs.webkit.org/show_bug.cgi?id=201169
Reviewed by Youenn Fablet.
LayoutTests/imported/w3c:
Rebaseline WPT test that is now passing.
- web-platform-tests/service-workers/service-worker/postmessage-to-client-message-queue.https-expected.txt:
Source/WebCore:
As per the Service Worker specification, a service worker client's message
queue is initially disabled and only gets enabled after:
- The DOMContentLoaded event has been fired
or
- The client sets the navigator.serviceWorker.onmessage event handler
or
- navigator.serviceWorker.startMessages() is called
While the message queue is disabled, messages posted by the service worker
to the client simply get queued and only get processed once the queue gets
enabled.
No new tests, rebaselined existing test.
- dom/Document.cpp:
(WebCore::Document::finishedParsing):
Call startMessages() on the ServiceWorkerContainer once the DOMContentLoaded event has
been fired.
- dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::ensureServiceWorkerContainer):
- dom/ScriptExecutionContext.h:
- workers/service/SWClientConnection.cpp:
(WebCore::SWClientConnection::postMessageToServiceWorkerClient):
Fix a bug where a service worker would not be able to post a message to a client until
that client has accessed navigator.serviceWorker (since the ServiceWorkerContainer is
lazy initialized). To address the issue, we now initialize the ServiceWorkerContainer
when a message is received from the service worker. Previously, messages were just
getting dropped.
- workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::ServiceWorkerContainer):
When the ServiceWorkerContainer is constructed, suspend its message queue if its context
document is still parsing.
(WebCore::ServiceWorkerContainer::startMessages):
Resume the message queue when startMessages() is called.
(WebCore::ServiceWorkerContainer::postMessage):
Enqueue the event instead of firing it right away.
(WebCore::ServiceWorkerContainer::addEventListener):
if navigator.serviceWorker.onmessage event handler gets set by the JavaScript, call
startMessages().
- workers/service/ServiceWorkerContainer.h:
LayoutTests:
Unskip test that is no longer timing out.
- resources/testharnessreport.js:
(self.testRunner.add_completion_callback):
Use testRunner.forceImmediateCompletion() instead of notifyDone() for WPT tests.
testRunner.notifyDone() does not work in case of load error or when the load
does not finish. The WPT test was timing out because the load does not finish for
testing purposes.
- 10:57 PM Changeset in webkit [249628] by
-
- 3 edits in trunk/Source/WTF
REGRESSION(r248533): Unable to use WTF::RefCounted when building in a debug configuration against a non-debug WebKit
https://bugs.webkit.org/show_bug.cgi?id=201585
rdar://problem/55153369
Reviewed by Chris Dumez.
Export WTF::RefCountedBase::areThreadingChecksEnabledGlobally regardless of whether or not assertions
are enabled for the WTF being built. This allows WebKit-based projects to use RefCounted for their own
objects in a debug configuration without requiring a debug build of WebKit.
- wtf/RefCounted.cpp:
- wtf/RefCounted.h:
- 10:42 PM Changeset in webkit [249627] by
-
- 15 edits in trunk
[Service Workers] Drop support for registration resurrection
https://bugs.webkit.org/show_bug.cgi?id=201584
Reviewed by Alex Christensen.
LayoutTests/imported/w3c:
Re-sync a couple of outdated WPT tests from upstream 820f0f86047e6e.
- web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https-expected.txt:
- web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https.html:
- web-platform-tests/service-workers/service-worker/unregister-then-register.https-expected.txt:
- web-platform-tests/service-workers/service-worker/unregister-then-register.https.html:
Source/WebCore:
Drop support for registration resurrection (Unregistering then quickly re-registering would resurrect
the original registration instead of creating a new one). This behavior is no longer in the
specification (No more "isUninstalling" flag on the registration, and the registration is removed
from the "scope to registration map" right away upon unregistering).
This resurrection behavior was causing a lot of flakiness in the tests so it is likely we will be able
to unskip some tests. This is also what was causing the flakiness that caused Bug 201169 to be rolled
out.
No new tests, updated existing tests.
- workers/service/server/SWServer.cpp:
(WebCore::SWServer::activeWorkerFromRegistrationID):
(WebCore::SWServer::getRegistration):
(WebCore::SWServer::addRegistration):
(WebCore::SWServer::removeRegistration):
(WebCore::SWServer::getRegistrations):
(WebCore::SWServer::clearAll):
(WebCore::SWServer::clear):
(WebCore::SWServer::terminatePreinstallationWorker):
(WebCore::SWServer::didFinishActivation):
(WebCore::SWServer::claim):
(WebCore::SWServer::addClientServiceWorkerRegistration):
(WebCore::SWServer::removeClientServiceWorkerRegistration):
(WebCore::SWServer::installContextData):
(WebCore::SWServer::runServiceWorker):
(WebCore::SWServer::doRegistrationMatching):
(WebCore::SWServer::registrationFromServiceWorkerIdentifier):
(WebCore::SWServer::registerServiceWorkerClient):
(WebCore::SWServer::unregisterServiceWorkerClient):
(WebCore::SWServer::removeFromScopeToRegistrationMap):
(WebCore::SWServer::performGetOriginsWithRegistrationsCallbacks):
- workers/service/server/SWServer.h:
- workers/service/server/SWServerJobQueue.cpp:
(WebCore::SWServerJobQueue::runRegisterJob):
(WebCore::SWServerJobQueue::runUnregisterJob):
(WebCore::SWServerJobQueue::runUpdateJob):
- workers/service/server/SWServerRegistration.cpp:
(WebCore::SWServerRegistration::clear):
(WebCore::SWServerRegistration::handleClientUnload):
(WebCore::SWServerRegistration::isUnregistered const):
- workers/service/server/SWServerRegistration.h:
(WebCore::SWServerRegistration::scopeURLWithoutFragment const):
- workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::SWServerWorker):
(WebCore::m_scriptResourceMap):
(WebCore::SWServerWorker::contextData const):
(WebCore::SWServerWorker::skipWaiting):
(WebCore::SWServerWorker::setHasPendingEvents):
(WebCore::SWServerWorker::setState):
(WebCore::SWServerWorker::registration const):
- workers/service/server/SWServerWorker.h:
- 10:26 PM Changeset in webkit [249626] by
-
- 6 edits3 deletes in trunk
Rewrite http/tests/workers/service/serviceworker-private-browsing.https.html as an API test
https://bugs.webkit.org/show_bug.cgi?id=201574
Reviewed by Alex Christensen.
Source/WebKit:
Update Service Workers so that they obey the "secureContextChecksEnabled" preference.
This was needed to allow my service worker to access self.caches in my API test.
- WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::updatePreferencesStore):
Tools:
Rewrite http/tests/workers/service/serviceworker-private-browsing.https.html as an API test so that
we truly test private browsing. testRunner.setPrivateBrowsingEnabled_DEPRECATED() is a hack which
does not work well for WK2.
- TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
LayoutTests:
Drop legacy test which was replaced by an API test.
- http/tests/workers/service/serviceworker-private-browsing-worker.js: Removed.
- http/tests/workers/service/serviceworker-private-browsing.https-expected.txt: Removed.
- http/tests/workers/service/serviceworker-private-browsing.https.html: Removed.
- 10:11 PM Changeset in webkit [249625] by
-
- 5 edits4 deletes in trunk
Rewrite storage/domstorage/localstorage/private-browsing-affects-storage.html as an API test
https://bugs.webkit.org/show_bug.cgi?id=201547
Reviewed by Alex Christensen.
Tools:
Rewrite storage/domstorage/localstorage/private-browsing-affects-storage.html as an API test so
it can use a true ephemeral session instead of the testRunner.setPrivateBrowsingEnabled_DEPRECATED()
hack.
- TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm:
(-[LocalStorageNavigationDelegate webView:decidePolicyForNavigationAction:preferences:decisionHandler:]):
(-[LocalStorageNavigationDelegate webView:didFinishNavigation:]):
(TEST):
LayoutTests:
Drop outdated test.
- storage/domstorage/localstorage/private-browsing-affects-storage.html: Removed.
- storage/domstorage/localstorage/resources/private-browsing-1.html: Removed.
- storage/domstorage/localstorage/resources/private-browsing-2.html: Removed.
- 9:17 PM Changeset in webkit [249624] by
-
- 2 edits in trunk/Source/WebKit
Marking up a note on iOS results in a PDF with no contents
https://bugs.webkit.org/show_bug.cgi?id=201530
<rdar://problem/53686019>
Unreviewed follow-up.
- UIProcess/ios/WKContentView.mm:
(-[WKContentView _waitForDrawToPDFCallback]):
Remove an ASSERT_NOT_REACHED that fires if the synchronous wait for printing
times out. This is a totally legitimite situation that can occur if the process
crashes; there's no need for an assert there.
- 8:58 PM Changeset in webkit [249623] by
-
- 2 edits in trunk/Source/WebKit
Null check m_client in NetworkDataTask::didReceiveResponse
https://bugs.webkit.org/show_bug.cgi?id=201587
<rdar://problem/54743444>
Reviewed by Chris Dumez.
clearClient can be called at any time. We null check it everyhere else we use it,
and we are seeing crashes at this call site. Let's not crash.
- NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::didReceiveResponse):
- 7:29 PM Changeset in webkit [249622] by
-
- 17 edits in trunk
Remove WebsiteDataStore::legacyDefaultDataStoreConfiguration
https://bugs.webkit.org/show_bug.cgi?id=200054
Reviewed by Carlos Garcia Campos.
Source/WebKit:
Its last needed use was removed in rdar://problem/47030981
This changes WKContextConfigurationCreateWithLegacyOptions to be equal to WKContextConfigurationCreate,
but it has no remaining clients so it is only being retained for binary compabibility.
This also changes WKContextCreateWithInjectedBundlePath and WKContextCreate to be equal to WKContextCreateWithConfiguration,
and after rdar://problem/47030981 there are no meaningful clients of those functions, also.
There is one existing client of WKContextCreateWithInjectedBundlePath in rdar://problem/50323967 but our current implementation
is compatible enough for them because it uses their injected bundle still.
- UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
(API::ProcessPoolConfiguration::createWithLegacyOptions): Deleted.
- UIProcess/API/APIProcessPoolConfiguration.h:
- UIProcess/API/APIWebsiteDataStore.cpp:
(API::WebsiteDataStore::createLegacy): Deleted.
(API::WebsiteDataStore::legacyDefaultDataStoreConfiguration): Deleted.
- UIProcess/API/APIWebsiteDataStore.h:
- UIProcess/API/C/WKContext.cpp:
(WKContextCreate):
(WKContextCreateWithInjectedBundlePath):
(WKContextGetWebsiteDataStore):
- UIProcess/API/C/WKContextConfigurationRef.cpp:
(WKContextConfigurationCreate):
(WKContextConfigurationCreateWithLegacyOptions):
- UIProcess/API/C/WKContextConfigurationRef.h:
- UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
(API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultLocalStorageDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultMediaCacheDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultDeviceIdHashSaltsStorageDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory): Deleted.
- UIProcess/API/Cocoa/WKProcessGroup.mm:
(-[WKProcessGroup initWithInjectedBundleURL:]):
- UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:
(API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultLocalStorageDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultMediaCacheDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultDeviceIdHashSaltsStorageDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory): Deleted.
- UIProcess/API/win/APIWebsiteDataStoreWin.cpp:
(API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultLocalStorageDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultMediaCacheDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultDeviceIdHashSaltsStorageDirectory): Deleted.
(API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory): Deleted.
- UIProcess/WebInspectorUtilities.cpp:
(WebKit::inspectorProcessPool):
- UIProcess/WebProcessPool.cpp:
(WebKit::m_webProcessCache):
(WebKit::legacyWebsiteDataStoreConfiguration): Deleted.
- UIProcess/WebProcessPool.h:
Tools:
- TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
This test relied on the default data store having been instantiated.
- 6:19 PM Changeset in webkit [249621] by
-
- 2 edits in trunk/Source/bmalloc
[Follow up fix] Harden protection of the Gigacage Config parameters.
https://bugs.webkit.org/show_bug.cgi?id=201570
<rdar://problem/55134229>
Reviewed by Saam Barati.
The previously landed hardening measures is failing the assertion in
forbidDisablingPrimitiveGigacage() when a replacement heap (e.g. gmalloc) is
used.
- forbidDisablingPrimitiveGigacage() should just ensureGigacage() so that we know that the Gigacage is properly configured (whether enabled or disabled).
- Strengthen the assertion in forbidDisablingPrimitiveGigacage() to ensure that we have already determined if the Gigacage should be enabled.
- bmalloc/Gigacage.cpp:
(Gigacage::forbidDisablingPrimitiveGigacage):
- 3:56 PM Changeset in webkit [249620] by
-
- 2 edits in trunk/Source/WebKit
Fix Windows build
https://bugs.webkit.org/show_bug.cgi?id=201517
- WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:
- 3:54 PM Changeset in webkit [249619] by
-
- 8 edits in trunk
Remove calls to WKContextGetWebsiteDataStore missed in r249614
https://bugs.webkit.org/show_bug.cgi?id=200050
Source/WebKit:
It turns out I didn't need to introduce another way of clearing all cookies between tests.
I just needed to make the call to WKHTTPCookieStoreDeleteAllCookies use the right WebsiteDataStore.
- NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::clearCachedCredentials):
- NetworkProcess/NetworkSession.h:
(WebKit::NetworkSession::clearCredentials):
(WebKit::NetworkSession::clearCookies): Deleted.
- NetworkProcess/cocoa/NetworkSessionCocoa.h:
- NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::clearCookies): Deleted.
Tools:
- WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
- WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::invoke):
- 3:45 PM Changeset in webkit [249618] by
-
- 2 edits in trunk/Source/WebKit
Fix Windows build.
https://bugs.webkit.org/show_bug.cgi?id=200050
- PlatformWin.cmake:
- 3:26 PM Changeset in webkit [249617] by
-
- 2 edits in trunk/Source/WebKit
Fix Windows build.
https://bugs.webkit.org/show_bug.cgi?id=201517
- WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:
- 2:45 PM Changeset in webkit [249616] by
-
- 2 edits in trunk/Tools
Remove invalid assertion added in r249614
https://bugs.webkit.org/show_bug.cgi?id=200050
- WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::cocoaResetStateToConsistentValues):
Something is instantiating the default data store, which is no problem right now.
- 1:20 PM Changeset in webkit [249615] by
-
- 16 edits in trunk
Unreviewed, rolling out r249353.
The test for this change is a flaky failure.
Reverted changeset:
"Add support for postMessage buffering between the service
worker and window"
https://bugs.webkit.org/show_bug.cgi?id=201169
https://trac.webkit.org/changeset/249353
- 9:04 AM Changeset in webkit [249614] by
-
- 33 edits2 adds in trunk
Deprecate WKContextGetWebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=200050
Reviewed by Geoff Garen.
Source/WebCore:
- platform/network/CacheValidation.cpp:
(WebCore::collectVaryingRequestHeaders):
(WebCore::verifyVaryingRequestHeaders):
- platform/network/CacheValidation.h:
Replace a few NetworkStorageSession& with NetworkStorageSession*
so I can replace defaultStorageSession with the correct NetworkStorageSession in NetworkCache.cpp.
Source/WebKit:
The last use of it was removed in rdar://problem/47030981
In order to remove its use in WebKitTestRunner, I needed to make WKWebsiteDataStoreConfigurationRef
to replace the WKContextConfigurationRef members that should've been associated with the WebsiteDataStore the whole time.
There is one use of WKContextGetWebsiteDataStore in TestWebKitAPI still I'll investigate later.
- Shared/API/c/WKBase.h:
- Sources.txt:
- UIProcess/API/APIWebsiteDataStore.cpp:
(API::WebsiteDataStore::create):
- UIProcess/API/APIWebsiteDataStore.h:
- UIProcess/API/C/WKAPICast.h:
- UIProcess/API/C/WKContext.cpp:
(WKContextGetApplicationCacheManager):
(WKContextGetKeyValueStorageManager):
(WKContextGetResourceCacheManager):
- UIProcess/API/C/WKContext.h:
- UIProcess/API/C/WKContextConfigurationRef.cpp:
(WKContextConfigurationCopyDiskCacheDirectory):
(WKContextConfigurationSetDiskCacheDirectory):
(WKContextConfigurationCopyApplicationCacheDirectory):
(WKContextConfigurationSetApplicationCacheDirectory):
(WKContextConfigurationCopyIndexedDBDatabaseDirectory):
(WKContextConfigurationSetIndexedDBDatabaseDirectory):
(WKContextConfigurationCopyLocalStorageDirectory):
(WKContextConfigurationSetLocalStorageDirectory):
(WKContextConfigurationCopyWebSQLDatabaseDirectory):
(WKContextConfigurationSetWebSQLDatabaseDirectory):
(WKContextConfigurationCopyMediaKeysStorageDirectory):
(WKContextConfigurationSetMediaKeysStorageDirectory):
(WKContextConfigurationCopyResourceLoadStatisticsDirectory):
(WKContextConfigurationSetResourceLoadStatisticsDirectory):
- UIProcess/API/C/WKContextConfigurationRef.h:
- UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp: Added.
(WKWebsiteDataStoreConfigurationGetTypeID):
(WKWebsiteDataStoreConfigurationCreate):
(WKWebsiteDataStoreConfigurationCopyApplicationCacheDirectory):
(WKWebsiteDataStoreConfigurationSetApplicationCacheDirectory):
(WKWebsiteDataStoreConfigurationCopyNetworkCacheDirectory):
(WKWebsiteDataStoreConfigurationSetNetworkCacheDirectory):
(WKWebsiteDataStoreConfigurationCopyIndexedDBDatabaseDirectory):
(WKWebsiteDataStoreConfigurationSetIndexedDBDatabaseDirectory):
(WKWebsiteDataStoreConfigurationCopyLocalStorageDirectory):
(WKWebsiteDataStoreConfigurationSetLocalStorageDirectory):
(WKWebsiteDataStoreConfigurationCopyWebSQLDatabaseDirectory):
(WKWebsiteDataStoreConfigurationSetWebSQLDatabaseDirectory):
(WKWebsiteDataStoreConfigurationCopyMediaKeysStorageDirectory):
(WKWebsiteDataStoreConfigurationSetMediaKeysStorageDirectory):
(WKWebsiteDataStoreConfigurationCopyResourceLoadStatisticsDirectory):
(WKWebsiteDataStoreConfigurationSetResourceLoadStatisticsDirectory):
- UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h: Added.
- UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreCreateWithConfiguration):
- UIProcess/API/C/WKWebsiteDataStoreRef.h:
- WebKit.xcodeproj/project.pbxproj:
Tools:
- MiniBrowser/win/WebKitBrowserWindow.cpp:
(WebKitBrowserWindow::updateProxySettings):
- TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
- WebKitTestRunner/TestController.cpp:
(WTR::TestController::generateContextConfiguration const):
(WTR::TestController::websiteDataStore):
(WTR::TestController::generatePageConfiguration):
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::platformAdjustContext):
(WTR::TestController::clearServiceWorkerRegistrations):
(WTR::TestController::clearDOMCache):
(WTR::TestController::clearDOMCaches):
(WTR::TestController::ClearIndexedDatabases):
(WTR::TestController::hasDOMCache):
(WTR::TestController::domCacheSize):
(WTR::TestController::setStatisticsDebugMode):
(WTR::TestController::setStatisticsPrevalentResourceForDebugMode):
(WTR::TestController::setStatisticsLastSeen):
(WTR::TestController::setStatisticsPrevalentResource):
(WTR::TestController::setStatisticsVeryPrevalentResource):
(WTR::TestController::dumpResourceLoadStatistics):
(WTR::TestController::isStatisticsPrevalentResource):
(WTR::TestController::isStatisticsVeryPrevalentResource):
(WTR::TestController::isStatisticsRegisteredAsSubresourceUnder):
(WTR::TestController::isStatisticsRegisteredAsSubFrameUnder):
(WTR::TestController::isStatisticsRegisteredAsRedirectingTo):
(WTR::TestController::setStatisticsHasHadUserInteraction):
(WTR::TestController::isStatisticsHasHadUserInteraction):
(WTR::TestController::setStatisticsGrandfathered):
(WTR::TestController::isStatisticsGrandfathered):
(WTR::TestController::setStatisticsSubframeUnderTopFrameOrigin):
(WTR::TestController::setStatisticsSubresourceUnderTopFrameOrigin):
(WTR::TestController::setStatisticsSubresourceUniqueRedirectTo):
(WTR::TestController::setStatisticsSubresourceUniqueRedirectFrom):
(WTR::TestController::setStatisticsTopFrameUniqueRedirectTo):
(WTR::TestController::setStatisticsTopFrameUniqueRedirectFrom):
(WTR::TestController::setStatisticsCrossSiteLoadWithLinkDecoration):
(WTR::TestController::setStatisticsTimeToLiveUserInteraction):
(WTR::TestController::statisticsProcessStatisticsAndDataRecords):
(WTR::TestController::statisticsUpdateCookieBlocking):
(WTR::TestController::statisticsSubmitTelemetry):
(WTR::TestController::setStatisticsNotifyPagesWhenDataRecordsWereScanned):
(WTR::TestController::setStatisticsIsRunningTest):
(WTR::TestController::setStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval):
(WTR::TestController::setStatisticsNotifyPagesWhenTelemetryWasCaptured):
(WTR::TestController::setStatisticsMinimumTimeBetweenDataRecordsRemoval):
(WTR::TestController::setStatisticsGrandfatheringTime):
(WTR::TestController::setStatisticsMaxStatisticsEntries):
(WTR::TestController::setStatisticsPruneEntriesDownTo):
(WTR::TestController::statisticsClearInMemoryAndPersistentStore):
(WTR::TestController::statisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
(WTR::TestController::statisticsClearThroughWebsiteDataRemoval):
(WTR::TestController::statisticsDeleteCookiesForHost):
(WTR::TestController::isStatisticsHasLocalStorage):
(WTR::TestController::setStatisticsCacheMaxAgeCap):
(WTR::TestController::statisticsResetToConsistentState):
(WTR::TestController::setWebAuthenticationMockConfiguration):
(WTR::TestController::clearAdClickAttributionsThroughWebsiteDataRemoval):
- WebKitTestRunner/TestController.h:
- WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
- WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::initializeWebViewConfiguration):
LayoutTests:
Rebase some accessibility tests that were printing the SessionID since we're using SessionID 2 for testing now.
- accessibility/mac/document-attributes-expected.txt:
- platform/mac/accessibility/parent-delete-expected.txt:
- 8:01 AM Changeset in webkit [249613] by
-
- 7 edits in trunk/Source
performJITMemcpy() source buffer should not be in the Gigacage.
https://bugs.webkit.org/show_bug.cgi?id=201577
<rdar://problem/55142606>
Reviewed by Michael Saboff.
Source/bmalloc:
- Add the Gigacage start address and totalSize to the Config.
- Add a contains() function that uses the start address and totalSize to check if a given pointer is in the Gigacage's address range.
- bmalloc/Gigacage.cpp:
(Gigacage::ensureGigacage):
(Gigacage::verifyGigacageIsEnabled):
- bmalloc/Gigacage.h:
(Gigacage::contains):
Source/JavaScriptCore:
Add a RELEASE_ASSERT in performJITMemcpy() to ensure that the passed in source
buffer is not in the Gigacage.
- jit/ExecutableAllocator.h:
(JSC::performJITMemcpy):
Source/WTF:
- wtf/Gigacage.h:
(Gigacage::contains):
- 7:53 AM Changeset in webkit [249612] by
-
- 6 edits in trunk
The jsc shell should allow disabling of the Gigacage for testing purposes.
https://bugs.webkit.org/show_bug.cgi?id=201579
Reviewed by Michael Saboff.
JSTests:
Unskip the tests now.
- stress/disable-gigacage-arrays.js:
- stress/disable-gigacage-strings.js:
- stress/disable-gigacage-typed-arrays.js:
Source/JavaScriptCore:
Check for the same GIGACAGE_ENABLED env var that is checked by Gigacage code. If
this env var is present and it has a falsy value, then do not
forbidDisablingPrimitiveGigacage() in the jsc shell.
- jsc.cpp:
(jscmain):
- 3:13 AM Changeset in webkit [249611] by
-
- 4 edits in trunk/JSTests
Gardening: temporarily skipping these tests until the fix can be reviewed and landed.
Not reviewed.
See https://bugs.webkit.org/show_bug.cgi?id=201579 for the fix.
- stress/disable-gigacage-arrays.js:
- stress/disable-gigacage-strings.js:
- stress/disable-gigacage-typed-arrays.js:
- 2:50 AM Changeset in webkit [249610] by
-
- 2 edits in trunk/JSTests
Gardening: speculative test fix to green bots [attempt #2].
https://bugs.webkit.org/show_bug.cgi?id=201529
<rdar://problem/53935772>
Not reviewed.
- stress/test-out-of-memory.js:
Sep 6, 2019:
- 10:59 PM Changeset in webkit [249609] by
-
- 3 edits in trunk/Source/WebCore
[FTW] Minor cleanups to avoid crashes during web browsing
https://bugs.webkit.org/show_bug.cgi?id=201572
Reviewed by Alexey Proskuryakov.
This patch addresses a few crashes seen when doing general web browsing using
the FTW build of WebKit:
- ImageBuffer::sinkIntoImage was attempting to use a render target after WTFMoving it elsewhere.
- ImageBuffer::copyNativeImage was not properly checking the type of the render target to make sure it was suitable for Bitmap operations.
- BackingStoreBackendDirect2DImpl::scroll would crash if the scroll offset was outside the bounds of the current view. In that case, it would attempt to allocate a zero-size texture, which triggered a crash.
- platform/graphics/win/BackingStoreBackendDirect2DImpl.cpp:
(WebCore::BackingStoreBackendDirect2DImpl::scroll):
- platform/graphics/win/ImageBufferDirect2D.cpp:
(WebCore::ImageBuffer::sinkIntoImage):
(WebCore::ImageBuffer::copyNativeImage const):
- 10:42 PM Changeset in webkit [249608] by
-
- 11 edits in trunk/Source
Harden protection of the Gigacage Config parameters.
https://bugs.webkit.org/show_bug.cgi?id=201570
<rdar://problem/55134229>
Reviewed by Saam Barati.
Source/bmalloc:
- Rename protectGigacageBasePtrs() and unprotectGigacageBasePtrs() to freezeGigacageConfig() and unfreezeGigacageConfig() respectively.
Also move the alignment check in protectGigacageBasePtrs() into ensureGigacage().
There's no need to check it more than once.
- Introduce permanentlyFreezeGigacageConfig() which permanently makes the Config ReadOnly. Once invoked, the Config cannot be made writable again.
This is made possible by using vm_protect with a true set_maximum argument.
We also add a g_gigacageConfig.isPermanentlyFrozen flag that we assert.
Note: this permanence is only true for OS(DARWIN) since vm_protect is Mach API.
- Rename disableDisablingPrimitiveGigacageIfShouldBeEnabled() to forbidDisablingPrimitiveGigacage() because "disablingDisabling" is a tongue twister.
Also, we don't want to make it conditional on "IfShouldBeEnabled". We want
forbidDisablingPrimitiveGigacage() to be irreversible. It is up to the client
to ensure that the Gigacage is already initialized (if possible) before
invoking forbidDisablingPrimitiveGigacage(). Conceptually, the forbidding
isn't about guaranteeing that the Gigacage is enabled. It only takes away the
option to disable it.
That said, forbidDisablingPrimitiveGigacage() is only invoked by clients that
care about keeping the Gigacage enabled. So, it does a sanity check (with an
assertion) that if !GIGACAGE_ALLOCATION_CAN_FAIL, then the Gigacage should be
have been initialized and enabled before invoking it.
We also make sure that forbidDisablingPrimitiveGigacage() calls
permanentlyFreezeGigacageConfig() unconditionally. It is safe to call it more
than once. This guarantees that the Config is permanently frozen after this,
even if a bug should inadvertantly set the
g_gigacageConfig.disablingPrimitiveGigacageIsForbidden flag before
forbidDisablingPrimitiveGigacage() is invoked.
- Assert that ensureGigacage() is only called once.
- Assert that shouldBeEnabled() is only called once. Also moved its cached result into the Config so that it can be frozen.
- bmalloc/Gigacage.cpp:
(Gigacage::bmalloc::freezeGigacageConfig):
(Gigacage::bmalloc::unfreezeGigacageConfig):
(Gigacage::bmalloc::permanentlyFreezeGigacageConfig):
(Gigacage::bmalloc::UnfreezeGigacageConfigScope::UnfreezeGigacageConfigScope):
(Gigacage::bmalloc::UnfreezeGigacageConfigScope::~UnfreezeGigacageConfigScope):
(Gigacage::ensureGigacage):
(Gigacage::disablePrimitiveGigacage):
(Gigacage::verifyGigacageIsEnabled):
(Gigacage::forbidDisablingPrimitiveGigacage):
(Gigacage::isDisablingPrimitiveGigacageForbidden):
(Gigacage::shouldBeEnabled):
(Gigacage::bmalloc::protectGigacageBasePtrs): Deleted.
(Gigacage::bmalloc::unprotectGigacageBasePtrs): Deleted.
(Gigacage::bmalloc::UnprotectGigacageBasePtrsScope::UnprotectGigacageBasePtrsScope): Deleted.
(Gigacage::bmalloc::UnprotectGigacageBasePtrsScope::~UnprotectGigacageBasePtrsScope): Deleted.
(Gigacage::primitiveGigacageDisabled): Deleted.
(Gigacage::disableDisablingPrimitiveGigacageIfShouldBeEnabled): Deleted.
(Gigacage::isDisablingPrimitiveGigacageDisabled): Deleted.
- bmalloc/Gigacage.h:
(Gigacage::isPrimitiveGigacagePermanentlyEnabled):
(Gigacage::canPrimitiveGigacageBeDisabled):
(Gigacage::forbidDisablingPrimitiveGigacage):
(Gigacage::disableDisablingPrimitiveGigacageIfShouldBeEnabled): Deleted.
Source/JavaScriptCore:
Just renaming some function names here.
- assembler/testmasm.cpp:
(JSC::testCagePreservesPACFailureBit):
- jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::cageConditionally):
- jsc.cpp:
(jscmain):
Source/WebKit:
Just renaming a function name here.
- WebProcess/WebProcess.cpp:
Source/WTF:
Just renaming some function names here.
- wtf/Gigacage.h:
(Gigacage::forbidDisablingPrimitiveGigacage):
(Gigacage::isDisablingPrimitiveGigacageForbidden):
(Gigacage::disableDisablingPrimitiveGigacageIfShouldBeEnabled): Deleted.
(Gigacage::isDisablingPrimitiveGigacageDisabled): Deleted.
- 9:19 PM Changeset in webkit [249607] by
-
- 5 edits in trunk
Web Inspector: CSS Formatter: the closing } of nested @media aren't indented
https://bugs.webkit.org/show_bug.cgi?id=201560
Reviewed by Joseph Pecoraro.
Source/WebInspectorUI:
- UserInterface/Workers/Formatter/FormatterContentBuilder.js:
(FormatterContentBuilder.prototype.removeLastNewline):
It's possible that there were multiple newlines in a row, so we should update_startOfLine
to betrueif the previous line was empty.
LayoutTests:
- inspector/formatting/resources/css-tests/media-query.css:
- inspector/formatting/resources/css-tests/media-query-expected.css:
- 8:19 PM Changeset in webkit [249606] by
-
- 1 copy in tags/Safari-608.2.11.1.3
Tag Safari-608.2.11.1.3.
- 7:58 PM Changeset in webkit [249605] by
-
- 16 edits5 adds in trunk
Incorrect selection rect revealed after pasting images in a contenteditable element
https://bugs.webkit.org/show_bug.cgi?id=201549
<rdar://problem/50956429>
Reviewed by Simon Fraser.
Source/WebCore:
Editor::replaceSelectionWithFragment currently scrolls to reveal the selection after inserting the given
DocumentFragment. However, this scrolling occurs before any inserted images have loaded yet, which causes the
wrong caret rect to be revealed, since all image elements inserted during paste will be empty.
To fix this, we defer revealing the selection after inserting the fragment until after all images that have
been inserted are done loading. While waiting for images to load, if any layers which may be scrolled as a
result of revealing the selection are scrolled, we additionally cancel the deferred selection reveal. See
comments below for more detail.
Tests: editing/pasteboard/do-not-reveal-selection-after-programmatic-scroll.html
editing/pasteboard/reveal-selection-after-pasting-images.html
PasteImage.RevealSelectionAfterPastingImage
- editing/Editing.cpp:
(WebCore::visibleImageElementsInRangeWithNonLoadedImages):
Add a new helper to iterate through a range and collect all image elements in that range, that contain cached
images that have not finished loading yet.
- editing/Editing.h:
- editing/Editor.cpp:
(WebCore::Editor::replaceSelectionWithFragment):
Instead of always immediately revealing the selection after applying the ReplaceSelectionCommand, collect the
image elements that were just inserted, and avoid immediately revealing the selection if any of these images
have non-null cached images, but are not loaded yet. Instead, hold on to these images in a set, remove them once
they finish loading using the new method below, and once all images are removed, reveal the selection.
(WebCore::Editor::revealSelectionIfNeededAfterLoadingImageForElement):
(WebCore::Editor::renderLayerDidScroll):
Called whenever a scrollable RenderLayer is scrolled (or in the case of FrameView, the root layer). In the case
where Editor is waiting to reveal the selection, we check to see if the scrolled layer is an ancestor of the
layer enclosing the start of the selection.
(WebCore::Editor::respondToChangedSelection):
If the selection changes between pasting and waiting for pasted images to load, just cancel waiting to reveal
the selection after pasting.
- editing/Editor.h:
- editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::insertedContentRange const):
Add a helper method to grab the Range of content inserted after applying the command.
- editing/ReplaceSelectionCommand.h:
- page/FrameView.cpp:
(WebCore::FrameView::scrollPositionChanged):
- page/FrameView.h:
- page/Page.cpp:
(WebCore::Page::didFinishLoadingImageForElement):
Notify Editor after an image finishes loading.
- rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollTo):
Source/WebKit:
Tweak some existing logic to use the new visibleImageElementsInRangeWithNonLoadedImages helper function. See
WebCore for more details.
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::didConcludeEditDrag):
Tools:
Add an API test to exercise the scenario where we scroll to reveal the selection after pasting an image that was
directly written to the pasteboard.
- TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm:
LayoutTests:
Add a couple of new layout tests.
- editing/pasteboard/do-not-reveal-selection-after-programmatic-scroll-expected.txt: Added.
- editing/pasteboard/do-not-reveal-selection-after-programmatic-scroll.html: Added.
This test verifies that we don't try to scroll to reveal the caret after pasting, if the scroll position was
changed before the images finished loading.
- editing/pasteboard/reveal-selection-after-pasting-images-expected.txt: Added.
- editing/pasteboard/reveal-selection-after-pasting-images.html: Added.
- platform/ios/editing/pasteboard/reveal-selection-after-pasting-images-expected.txt: Added.
This test verifies that we reveal the caret after loading multiple pasted images in a selection, and dispatch a
scroll event in the process.
- 7:39 PM Changeset in webkit [249604] by
-
- 5 edits in trunk/Source/WebCore
PathDirect2D Cleanups
https://bugs.webkit.org/show_bug.cgi?id=201534
Reviewed by Fujii Hironori.
- Add a COMPtr<> move operator.
- Reduce copying ID2D1Geometry objects.
- Protect against using the ID2D1PathGeometry after the ID2D1GeometrySink's Close operation is used.
- Add a debug-only 'refCount' function to COMPtr to help track down memory errors.
- platform/graphics/Path.h:
(WebCore::Path::activePath const): Deleted.
- platform/graphics/win/Direct2DOperations.cpp:
(WebCore::Direct2D::fillPath):
(WebCore::Direct2D::drawPath):
- platform/graphics/win/PathDirect2D.cpp:
- platform/win/COMPtr.h:
(COMPtr::COMPtr):
(=):
(refCount):
- 6:53 PM Changeset in webkit [249603] by
-
- 11 edits1 copy1 add in trunk/Source
Move the ResourceLoadObserver logic to WebKit2
https://bugs.webkit.org/show_bug.cgi?id=201517
Reviewed by Brent Fulgham.
Move the ResourceLoadObserver logic to WebKit2 since it is not used by WebKit1. This allows us to simplify
code.
In a follow-up patch, I will simplify the code even further by leveraging the fact that a WebContent process
is always associated with a single WebsiteDataStore / sessionID:
- No need for a HashMap of sessionIDs
- No need to even allocate the ResourceLoadObserver if the WebProcess is associated with an ephemeral session.
Source/WebCore:
- dom/Document.h:
- loader/ResourceLoadObserver.cpp:
(WebCore::sharedObserver):
(WebCore::ResourceLoadObserver::setShared):
(WebCore::ResourceLoadObserver::shared):
- loader/ResourceLoadObserver.h:
(WebCore::ResourceLoadObserver::~ResourceLoadObserver):
(WebCore::ResourceLoadObserver::logSubresourceLoading):
(WebCore::ResourceLoadObserver::logWebSocketLoading):
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
(WebCore::ResourceLoadObserver::logFontLoad):
(WebCore::ResourceLoadObserver::logCanvasRead):
(WebCore::ResourceLoadObserver::logCanvasWriteOrMeasure):
(WebCore::ResourceLoadObserver::logNavigatorAPIAccessed):
(WebCore::ResourceLoadObserver::logScreenAPIAccessed):
(WebCore::ResourceLoadObserver::statisticsForURL):
(WebCore::ResourceLoadObserver::updateCentralStatisticsStore):
(WebCore::ResourceLoadObserver::clearState):
(WebCore::ResourceLoadObserver::setShouldLogUserInteraction):
- page/DeprecatedGlobalSettings.h:
Source/WebKit:
- NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated):
- NetworkProcess/NetworkConnectionToWebProcess.h:
- Sources.txt:
- WebKit.xcodeproj/project.pbxproj:
- WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: Copied from Source/WebCore/loader/ResourceLoadObserver.cpp.
(WebKit::is3xxRedirect):
(WebKit::WebResourceLoadObserver::WebResourceLoadObserver):
(WebKit::WebResourceLoadObserver::shouldLog const):
(WebKit::WebResourceLoadObserver::requestStorageAccessUnderOpener):
(WebKit::WebResourceLoadObserver::ensureResourceStatisticsForRegistrableDomain):
(WebKit::WebResourceLoadObserver::scheduleNotificationIfNeeded):
(WebKit::WebResourceLoadObserver::updateCentralStatisticsStore):
(WebKit::WebResourceLoadObserver::statisticsForURL):
(WebKit::WebResourceLoadObserver::takeStatistics):
(WebKit::WebResourceLoadObserver::clearState):
(WebKit::WebResourceLoadObserver::nonNullOwnerURL const):
(WebKit::WebResourceLoadObserver::logFontLoad):
(WebKit::WebResourceLoadObserver::logCanvasRead):
(WebKit::WebResourceLoadObserver::logCanvasWriteOrMeasure):
(WebKit::WebResourceLoadObserver::logNavigatorAPIAccessed):
(WebKit::WebResourceLoadObserver::logScreenAPIAccessed):
(WebKit::WebResourceLoadObserver::logSubresourceLoading):
(WebKit::WebResourceLoadObserver::logWebSocketLoading):
(WebKit::WebResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
- WebProcess/WebCoreSupport/WebResourceLoadObserver.h: Added.
- WebProcess/WebProcess.cpp:
- 5:42 PM Changeset in webkit [249602] by
-
- 4 edits2 deletes in trunk/Tools
Unreviewed, rolling out r249582.
This caused results.html fail to be created on internal
testers.
Reverted changeset:
"run-webkit-test: Allow results to be uploaded without scm
checkout"
https://bugs.webkit.org/show_bug.cgi?id=200787
https://trac.webkit.org/changeset/249582
- 5:24 PM Changeset in webkit [249601] by
-
- 117 edits8 moves in trunk
[WebGPU] Update several interface and enum names to match spec
https://bugs.webkit.org/show_bug.cgi?id=201564
Reviewed by Dean Jackson.
Rename GPUShaderStageBit -> GPUShaderStage.
Rename GPUColorWriteBits -> GPUColorWrite.
Rename TRANSFER_SRC/DST -> COPY_SRC/DST.
Source/WebCore:
Rename GPUPipelineStageDescriptor -> GPUProgrammableStageDescriptor.
Existing tests trivially updated to match.
- CMakeLists.txt:
- DerivedSources-input.xcfilelist:
- DerivedSources-output.xcfilelist:
- DerivedSources.make:
- Modules/webgpu/GPUBindGroupLayoutBinding.h:
- Modules/webgpu/GPUBufferUsage.idl:
- Modules/webgpu/GPUColorStateDescriptor.idl:
- Modules/webgpu/GPUColorWrite.idl: Renamed from Source/WebCore/Modules/webgpu/GPUColorWriteBits.idl.
- Modules/webgpu/GPUShaderStage.h: Renamed from Source/WebCore/Modules/webgpu/GPUShaderStageBit.h.
- Modules/webgpu/GPUShaderStage.idl: Renamed from Source/WebCore/Modules/webgpu/GPUShaderStageBit.idl.
- Modules/webgpu/GPUTextureUsage.idl:
- Modules/webgpu/WebGPUComputePipelineDescriptor.cpp:
(WebCore::WebGPUComputePipelineDescriptor::tryCreateGPUComputePipelineDescriptor const):
- Modules/webgpu/WebGPUComputePipelineDescriptor.h:
- Modules/webgpu/WebGPUComputePipelineDescriptor.idl:
- Modules/webgpu/WebGPUDevice.cpp:
- Modules/webgpu/WebGPUProgrammableStageDescriptor.cpp: Renamed from Source/WebCore/Modules/webgpu/WebGPUPipelineStageDescriptor.cpp.
(WebCore::WebGPUProgrammableStageDescriptor::tryCreateGPUProgrammableStageDescriptor const):
- Modules/webgpu/WebGPUProgrammableStageDescriptor.h: Renamed from Source/WebCore/Modules/webgpu/WebGPUPipelineStageDescriptor.h.
- Modules/webgpu/WebGPUProgrammableStageDescriptor.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUPipelineStageDescriptor.idl.
- Modules/webgpu/WebGPURenderPipelineDescriptor.cpp:
(WebCore::WebGPURenderPipelineDescriptor::tryCreateGPURenderPipelineDescriptor const):
- Modules/webgpu/WebGPURenderPipelineDescriptor.h:
- Modules/webgpu/WebGPURenderPipelineDescriptor.idl:
- Sources.txt:
- WebCore.xcodeproj/project.pbxproj:
- bindings/js/WebCoreBuiltinNames.h:
- platform/graphics/gpu/GPUBuffer.h:
(WebCore::GPUBuffer::isCopySource const):
(WebCore::GPUBuffer::isCopyDestination const):
(WebCore::GPUBuffer::isTransferSource const): Deleted.
(WebCore::GPUBuffer::isTransferDestination const): Deleted.
- platform/graphics/gpu/GPUBufferUsage.h:
- platform/graphics/gpu/GPUColorStateDescriptor.h:
- platform/graphics/gpu/GPUColorWrite.h: Renamed from Source/WebCore/platform/graphics/gpu/GPUColorWriteBits.h.
- platform/graphics/gpu/GPUComputePipelineDescriptor.h:
(WebCore::GPUComputePipelineDescriptor::GPUComputePipelineDescriptor):
- platform/graphics/gpu/GPUPipelineDescriptorBase.h:
- platform/graphics/gpu/GPUProgrammableStageDescriptor.h: Renamed from Source/WebCore/platform/graphics/gpu/GPUPipelineStageDescriptor.h.
(WebCore::GPUProgrammableStageDescriptor::GPUProgrammableStageDescriptor):
- platform/graphics/gpu/GPURenderPipelineDescriptor.h:
(WebCore::GPURenderPipelineDescriptor::GPURenderPipelineDescriptor):
- platform/graphics/gpu/GPUTexture.h:
(WebCore::GPUTexture::isCopySource const):
(WebCore::GPUTexture::isCopyDestination const):
(WebCore::GPUTexture::isReadOnly const):
(WebCore::GPUTexture::isTransferSource const): Deleted.
(WebCore::GPUTexture::isTransferDestination const): Deleted.
- platform/graphics/gpu/GPUTextureUsage.h:
- platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
(WebCore::GPUBindGroupLayout::tryCreate):
- platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
(WebCore::GPUBindGroup::tryCreate):
- platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
- platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
(WebCore::GPUCommandBuffer::copyBufferToBuffer):
(WebCore::GPUCommandBuffer::copyBufferToTexture):
(WebCore::GPUCommandBuffer::copyTextureToBuffer):
(WebCore::GPUCommandBuffer::copyTextureToTexture):
- platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::trySetFunctions):
- platform/graphics/gpu/cocoa/GPUPipelineMetalConvertLayout.cpp:
(WebCore::convertShaderStageFlags):
- platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::mtlColorWriteMaskForGPUColorWriteFlags):
(WebCore::trySetFunctions):
- platform/graphics/gpu/cocoa/GPUTextureMetal.mm:
(WebCore::mtlTextureUsageForGPUTextureUsageFlags):
LayoutTests:
- webgpu/bind-groups.html:
- webgpu/blend-color-triangle-strip.html:
- webgpu/blit-commands.html:
- webgpu/buffer-errors.html:
- webgpu/color-write-mask-triangle-strip.html:
- webgpu/pipeline-layouts.html:
- webgpu/render-pipelines.html:
- webgpu/texture-triangle-strip.html:
- webgpu/textures-textureviews.html:
- webgpu/whlsl/arbitrary-vertex-attribute-locations.html:
- webgpu/whlsl/buffer-fragment.html:
- webgpu/whlsl/buffer-length.html:
- webgpu/whlsl/buffer-vertex.html:
- webgpu/whlsl/checker-should-set-type-of-read-modify-write-variables.html:
- webgpu/whlsl/compute.html:
- webgpu/whlsl/dereference-pointer-should-type-check.html:
- webgpu/whlsl/device-proper-type-checker.html:
- webgpu/whlsl/do-while-loop-break.html:
- webgpu/whlsl/do-while-loop-continue.html:
- webgpu/whlsl/do-while-loop.html:
- webgpu/whlsl/dont-crash-parsing-enum.html:
- webgpu/whlsl/dot-expressions.html:
- webgpu/whlsl/duplicate-types-should-not-produce-duplicate-ctors.html:
- webgpu/whlsl/ensure-proper-variable-lifetime-2.html:
- webgpu/whlsl/ensure-proper-variable-lifetime-3.html:
- webgpu/whlsl/ensure-proper-variable-lifetime.html:
- webgpu/whlsl/huge-array.html:
- webgpu/whlsl/js/test-harness.js:
(Harness.prototype.async.callTypedFunction):
(Harness.prototype._clearResults):
(Harness.prototype._setUpArguments):
- webgpu/whlsl/loops-break.html:
- webgpu/whlsl/loops-continue.html:
- webgpu/whlsl/loops.html:
- webgpu/whlsl/make-array-reference.html:
- webgpu/whlsl/matrix-2.html:
- webgpu/whlsl/matrix-alignment.html:
- webgpu/whlsl/matrix-memory-layout.html:
- webgpu/whlsl/matrix.html:
- webgpu/whlsl/nested-dot-expression-rvalue.html:
- webgpu/whlsl/nested-loop.html:
- webgpu/whlsl/oob-access.html:
- webgpu/whlsl/read-modify-write-high-zombies.html:
- webgpu/whlsl/return-local-variable.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-10.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-11.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-12.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-13.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-14.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-15.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-16.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-17.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-18.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-19.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-2.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-20.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-21.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-22.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-23.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-24.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-25.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-26.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-27.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-3.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-4.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-5.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-6.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-7.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-8.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-9.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules.html:
- webgpu/whlsl/simple-arrays.html:
- webgpu/whlsl/store-to-property-updates-properly.html:
- webgpu/whlsl/textures-load.html:
- webgpu/whlsl/textures-sample-bias.html:
- webgpu/whlsl/textures-sample-grad.html:
- webgpu/whlsl/textures-sample-level.html:
- webgpu/whlsl/textures-sample.html:
- webgpu/whlsl/two-dimensional-array.html:
- webgpu/whlsl/while-loop-break.html:
- webgpu/whlsl/while-loop-continue.html:
- webgpu/whlsl/whlsl.html:
- webgpu/whlsl/zero-initialize-values-2.html:
- webgpu/whlsl/zero-initialize-values.html:
- 5:08 PM Changeset in webkit [249600] by
-
- 4 edits in trunk/Source/WebKit
[WebAuthn] Make WebAuthn default off and let clients turn it on at will
https://bugs.webkit.org/show_bug.cgi?id=201439
<rdar://problem/54998154>
Reviewed by Youenn Fablet.
This patch makes WebAuthn default off such that clients that have the right entitlements
could turn it on and we don't risk at turning on a Web API that does nothing by default.
This patch doesn't add any SPI to turn the feature on as it is currently doable via
- [WKPreferencesPrivate _setEnabled:forExperimentalFeature:].
- Shared/WebPreferences.yaml:
- Shared/WebPreferencesDefaultValues.cpp:
(WebKit::defaultWebAuthenticationEnabled): Deleted.
- Shared/WebPreferencesDefaultValues.h:
- 4:09 PM Changeset in webkit [249599] by
-
- 2 edits in trunk/JSTests
Gardening: speculative test fix to green bots.
https://bugs.webkit.org/show_bug.cgi?id=201529
<rdar://problem/53935772>
Not reviewed.
- stress/test-out-of-memory.js:
- 3:59 PM Changeset in webkit [249598] by
-
- 2 edits in trunk/Tools
[ews-app] Status bubble should only display important messages in pop-over - part 2
https://bugs.webkit.org/show_bug.cgi?id=201557
Reviewed by Jonathan Bedard.
- BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
(StatusBubble): Add few more strings to STEPS_TO_HIDE.
- 3:49 PM Changeset in webkit [249597] by
-
- 8 edits in trunk
Math.round() produces wrong result for value prior to 0.5
https://bugs.webkit.org/show_bug.cgi?id=185115
Reviewed by Saam Barati.
JSTests:
- stress/math-round-basics.js:
Add positive/negative test cases.
- test262/expectations.yaml:
Mark test passing.
Source/JavaScriptCore:
Our Math.round implementation goes in the wrong direction for double values like 0.49999999999999994.
This requires just a subtle adjustment for three of our four versions; only baseline JIT needed a full rewrite.
Specifically:
- While 0.49999999999999994 is representable, 1 - 0.49999999999999994 is not (it turns into 0.5),
so taking the difference between ceil(value)
andvalue` is problematic. - The baseline implementation was doing
floor(x + 0.5)for positive doubles and slowpathing negative ones (by falling back to jsRound). This patch gives baseline a legitimate implementation too.
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileArithRounding):
- ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileArithRound):
- jit/ThunkGenerators.cpp:
(JSC::roundThunkGenerator):
- runtime/MathCommon.cpp:
- 3:34 PM Changeset in webkit [249596] by
-
- 2 edits in trunk/Source/WebInspectorUI
Web Inspector: CSS Formatter: links to CSS resources don't map to the right line after pretty printing if the line is after a multiline comment
https://bugs.webkit.org/show_bug.cgi?id=201559
Reviewed by Joseph Pecoraro.
Newlines in multiline comments weren't added as line endings, so they weren't considered
when a source code location updated after pretty printing.
- UserInterface/Workers/Formatter/CSSFormatter.js:
(CSSFormatter.prototype._format):
- 3:23 PM Changeset in webkit [249595] by
-
- 2 edits in trunk/LayoutTests
REGRESSION: http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations.html is frequently timing out on iOS EWS bots
https://bugs.webkit.org/show_bug.cgi?id=201550
Unreviewed test gardening.
- platform/ios-wk2/TestExpectations: Mark the test as flaky to speed up EWS while we investigate the root cause.
- 3:15 PM Changeset in webkit [249594] by
-
- 8 edits2 adds in trunk
REGRESSION (r249367): m_decodingPromises grows indefinitely until ImageLoader destruction
https://bugs.webkit.org/show_bug.cgi?id=201402
Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-09-06
Reviewed by Youenn Fablet and Daniel Bates.
Source/WebCore:
Add the static functions resolvePromises() and rejectPromises(). These
functions take an lvalue reference to a Vector of promises. Inside them,
the lvalue reference argument are exchanged with an empty Vector of
promises then the promises are processed. This clears m_decodingPromises
and fixes the leak.
Add an internal API which returns the count of the pending promises of
an HTMLImageElement. This internal API will be used in the attached test.
Test: fast/images/decode-resolve-reject-no-leak.html
- html/HTMLImageElement.h:
(WebCore::HTMLImageElement::pendingDecodePromisesCountForTesting const):
- loader/ImageLoader.cpp:
(WebCore::resolvePromises):
ImageLoader::decode() calls BitmapImage::decode() and moves m_decodingPromises
in capture. When decoding finishes, this function is called to resolve the
promises. But ImageLoader might get deleted before the image decoding
finishes. So this function has to be static.
(WebCore::rejectPromises):
(WebCore::ImageLoader::resolveDecodePromises):
(WebCore::ImageLoader::rejectDecodePromises):
(WebCore::ImageLoader::notifyFinished):
(WebCore::ImageLoader::decode):
(WebCore::resolveDecodePromises): Deleted.
(WebCore::rejectDecodePromises): Deleted.
- loader/ImageLoader.h:
(WebCore::ImageLoader::pendingDecodePromisesCountForTesting const):
- testing/Internals.cpp:
(WebCore::Internals::imagePendingDecodePromisesCountForTesting):
- testing/Internals.h:
- testing/Internals.idl:
LayoutTests:
- fast/images/decode-resolve-reject-no-leak-expected.txt: Added.
- fast/images/decode-resolve-reject-no-leak.html: Added.
- 2:57 PM Changeset in webkit [249593] by
-
- 3 edits4 adds in trunk
Prefer null namespace 'href' over 'xlink:href' on SVG elements
https://bugs.webkit.org/show_bug.cgi?id=195802
Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-09-06
Reviewed by Youenn Fablet.
Source/WebCore:
-- When the attribute "href" is set, its value is always reflected in
SVGURIReference::m_href.
-- When the attribute "href" is removed, the value of the attribute
"xlink:href" is always reflected in SVGURIReference::m_href.
-- When the "xlink:href" is set, its value is reflected in
SVGURIReference::m_href only if the attribute "href" is not set.
Tests: svg/custom/href-xlink-href-gradient-element-expected.svg
svg/custom/href-xlink-href-gradient-element.svg
svg/custom/href-xlink-href-use-element-expected.svg
svg/custom/href-xlink-href-use-element.svg
- svg/SVGURIReference.cpp:
(WebCore::SVGURIReference::parseAttribute):
LayoutTests:
- svg/custom/href-xlink-href-gradient-element-expected.svg: Added.
- svg/custom/href-xlink-href-gradient-element.svg: Added.
- svg/custom/href-xlink-href-use-element-expected.svg: Added.
- svg/custom/href-xlink-href-use-element.svg: Added.
- 2:19 PM Changeset in webkit [249592] by
-
- 2 edits in trunk/Source/WebInspectorUI
Web Inspector: Better position for Sources tab when enabling the experimental setting
https://bugs.webkit.org/show_bug.cgi?id=201539
Reviewed by Devin Rousso.
- UserInterface/Views/SettingsTabContentView.js:
Place the Sources tab where the Debugger tab was.
- 2:08 PM Changeset in webkit [249591] by
-
- 2 edits in trunk/Source/WebCore
[LFC][TFC] Set computed row width.
https://bugs.webkit.org/show_bug.cgi?id=201533
<rdar://problem/55098828>
Reviewed by Antti Koivisto.
Decouple cell box layout/display box setup and set the computed row width.
- layout/Verification.cpp:
(WebCore::Layout::LayoutState::verifyAndOutputMismatchingLayoutTree const):
- layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layout):
- 1:51 PM Changeset in webkit [249590] by
-
- 2 edits in trunk/Source/WebCore
[LFC] A formatting context root is always a containing block for relative: static boxes.
https://bugs.webkit.org/show_bug.cgi?id=201554
<rdar://problem/55123295>
Reviewed by Antti Koivisto.
"For other elements, if the element's position is 'relative' or 'static', the containing block is formed by the content
edge of the nearest ancestor box that is a block container or which establishes a formatting context."
- layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::containingBlock const):
- page/FrameViewLayoutContext.cpp:
(WebCore::layoutUsingFormattingContext):
- 1:42 PM Changeset in webkit [249589] by
-
- 26 edits2 adds1 delete in trunk
Deprecate all WKCookieManagerRef functions
https://bugs.webkit.org/show_bug.cgi?id=201473
Reviewed by Chris Dumez.
Source/WebKit:
Their use was removed in rdar://problem/55039275
Created replacement C API that more closely resembles the public ObjC API for WebKitTestRunner.
- Shared/API/c/WKBase.h:
- Sources.txt:
- UIProcess/API/APIHTTPCookieStore.cpp:
(API::HTTPCookieStore::deleteAllCookies):
(API::HTTPCookieStore::setHTTPCookieAcceptPolicy):
(API::HTTPCookieStore::deleteCookiesInDefaultUIProcessCookieStore):
(API::HTTPCookieStore::setHTTPCookieAcceptPolicyInDefaultUIProcessCookieStore):
- UIProcess/API/APIHTTPCookieStore.h:
- UIProcess/API/C/WKAPICast.h:
- UIProcess/API/C/WKContext.cpp:
(WKContextSetStorageAccessAPIEnabled):
- UIProcess/API/C/WKContext.h:
- UIProcess/API/C/WKCookieManager.cpp:
(WKCookieManagerGetTypeID):
(WKCookieManagerSetClient):
(WKCookieManagerGetHostnamesWithCookies):
(WKCookieManagerDeleteCookiesForHostname):
(WKCookieManagerDeleteAllCookies):
(WKCookieManagerDeleteAllCookiesModifiedAfterDate):
(WKCookieManagerSetHTTPCookieAcceptPolicy):
(WKCookieManagerGetHTTPCookieAcceptPolicy):
(WKCookieManagerSetStorageAccessAPIEnabled):
(WKCookieManagerStartObservingCookieChanges):
(WKCookieManagerStopObservingCookieChanges):
- UIProcess/API/C/WKCookieManager.h:
- UIProcess/API/C/WKHTTPCookieStoreRef.cpp: Added.
(WKHTTPCookieStoreGetTypeID):
(WKHTTPCookieStoreDeleteAllCookies):
(WKHTTPCookieStoreSetHTTPCookieAcceptPolicy):
- UIProcess/API/C/WKHTTPCookieStoreRef.h: Added.
- UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreGetHTTPCookieStore):
- UIProcess/API/C/WKWebsiteDataStoreRef.h:
- UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm:
(API::HTTPCookieStore::deleteCookiesInDefaultUIProcessCookieStore):
(API::toNSHTTPCookieAcceptPolicy):
(API::HTTPCookieStore::setHTTPCookieAcceptPolicyInDefaultUIProcessCookieStore):
- UIProcess/WebCookieManagerProxy.cpp:
(WebKit::WebCookieManagerProxy::setStorageAccessAPIEnabled): Deleted.
- UIProcess/WebCookieManagerProxy.h:
- WebKit.xcodeproj/project.pbxproj:
Tools:
Adopt replacement C API in WebKitTestRunner.
- TestWebKitAPI/CMakeLists.txt:
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/WebKit/CookieManager.cpp: Removed, because the functions it tests were removed.
- WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
- WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::invoke):
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
- WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::initializeWebViewConfiguration):
- 1:23 PM Changeset in webkit [249588] by
-
- 4 edits in trunk/Source/bmalloc
Use FailureAction everywhere in bmalloc instead of a crashOnFailure boolean.
https://bugs.webkit.org/show_bug.cgi?id=201553
Reviewed by Yusuke Suzuki.
- bmalloc/Cache.cpp:
(bmalloc::Cache::tryAllocateSlowCaseNullCache):
(bmalloc::Cache::allocateSlowCaseNullCache):
(bmalloc::Cache::tryReallocateSlowCaseNullCache):
(bmalloc::Cache::reallocateSlowCaseNullCache):
- bmalloc/DebugHeap.cpp:
(bmalloc::DebugHeap::malloc):
(bmalloc::DebugHeap::memalign):
(bmalloc::DebugHeap::realloc):
- bmalloc/DebugHeap.h:
- 1:08 PM Changeset in webkit [249587] by
-
- 1 edit1 move in trunk/JSTests
Move web-assembly-constructors-should-not-override-global-object-property.js below JSTests/wasm/stress.
https://bugs.webkit.org/show_bug.cgi?id=201551
Reviewed by Tadeu Zagallo.
Ports that don't support WASM will always fail this test if it stays in JSTests/stress.
- stress/web-assembly-constructors-should-not-override-global-object-property.js: Removed.
- wasm/stress/web-assembly-constructors-should-not-override-global-object-property.js: Copied from JSTests/stress/web-assembly-constructors-should-not-override-global-object-property.js.
- 12:11 PM Changeset in webkit [249586] by
-
- 5 edits2 copies2 moves17 adds4 deletes in trunk
Tail Deleted Frames shown in Web Inspector are sometimes incorrect (Shadow Chicken)
https://bugs.webkit.org/show_bug.cgi?id=201366
Reviewed by Saam Barati.
Source/JavaScriptCore:
It is possible for the log buffer to be full right as someone is trying to
log a function prologue. In such a case the machine stack has already been
updated to include the new JavaScript call frame, but the prologue packet
cannot be included in the update because the log is full. This would mean
that the update fails to rationalize the machine stack with the shadow
log / stack. Namely, the current JavaScript call frame is unable to
find a matching prologue (the one we are holding to include after the update)
and inserts a questionable value into the stack; and in the process
missing and removing real potential tail calls.
For example:
"use strict";
function third() { return 1; }
function second() { return third(); }
function first() { return second(); }
function start() { return first(); }
If the the log fills up just as we are entering
bthen we may have a list
full log of packets looking like:
Shadow Log:
...
{ prologue-packet: enteringstart... }
{ prologue-packet: enteringfirst... }
{ tail-packet: leavingfirstwith a tail call }
Incoming Packet:
{ prologue-packet: entering
second... }
Current JS Stack:
second
start
Since the Current JavaScript stack already has
second, if we process the
log without the prologue forsecondthen we push a confused entry on the
shadow stack and clear the log such that we eventually lose the tail-call
information forfirsttosecond.
This patch solves this issue by providing enough extra space in the log
to always process the incoming packet when that forces an update. This way
clients can continue to behave exactly as they are.
--
We also document a corner case in some circumstances where the shadow
log may currently be insufficient to know how to reconcile:
For example:
"use strict";
function third() { return 1; }
function second() { return third(); }
function first() { return second(); }
function doNothingTail() { return Math.random() }
function start() {
for (i=0;i<1000;++i) doNothingTail();
return first();
}
In this case the ShadowChicken log may be processed multiple times due
to the many calls todoNothingTail/Math.random(). When calling the
Native function no prologue packet is emitted, so it is unclear that we
temporarly go deeper and come back out on the stack, so the log appears
to have lots of doNothingTail calls reusing the same frame:
Shadow Log:
...
, [123] {callee = 0x72a21aee0, frame = 0x7ffeef897270, callerFrame = 0x7ffeef8972e0, name = start}
, [124] {callee = 0x72a21af10, frame = 0x7ffeef8971f0, callerFrame = 0x7ffeef897270, name = doNothingTail}
, [125] tail-packet:{frame = 0x7ffeef8971f0}
, [126] {callee = 0x72a21af10, frame = 0x7ffeef8971f0, callerFrame = 0x7ffeef897270, name = doNothingTail}
, [127] tail-packet:{frame = 0x7ffeef8971f0}
...
, [140] {callee = 0x72a21af10, frame = 0x7ffeef8971f0, callerFrame = 0x7ffeef897270, name = doNothingTail}
, [141] tail-packet:{frame = 0x7ffeef8971f0}
, [142] {callee = 0x72a21af10, frame = 0x7ffeef8971f0, callerFrame = 0x7ffeef897270, name = doNothingTail}
, [143] tail-packet:{frame = 0x7ffeef8971f0}
, [144] {callee = 0x72a21aeb0, frame = 0x7ffeef8971f0, callerFrame = 0x7ffeef897270, name = first}
, [145] tail-packet:{frame = 0x7ffeef8971f0}
, [146] {callee = 0x72a21ae80, frame = 0x7ffeef8971f0, callerFrame = 0x7ffeef897270, name = second}
...
This log would seem to be indistinguishable from real tail recursion, such as:
"use strict";
function third() { return 1; }
function second() { return third(); }
function first() { return second(); }
function doNothingTail(n) {
return n ? doNothingTail(n-1) : first();
}
function start() {
return doNothingTail(1000);
}
Likewise there are more cases where the shadow log appears to be ambiguous with determining
the appropriate parent call frame with intermediate function calls. In practice this may
not be too problematic, as this is a best effort reconstruction of tail deleted frames.
It seems likely we would only show additional frames that did in fact happen serially
between JavaScript call frames, but may not actually be the proper parent frames
heirachy in the stack.
- interpreter/ShadowChicken.cpp:
(JSC::ShadowChicken::Packet::dump const):
(JSC::ShadowChicken::Frame::dump const):
(JSC::ShadowChicken::dump const):
Improved debugging output. Especially for functions.
(JSC::ShadowChicken::ShadowChicken):
Make space in the log for 1 additional packet to process when we slow log.
(JSC::ShadowChicken::log):
Include this packet in our update.
(JSC::ShadowChicken::update):
Address an edge case where we can eliminate tail-deleted frames that don't make sense.
LayoutTests:
- inspector/debugger/tail-deleted-frames-expected.txt: Removed.
- inspector/debugger/tail-deleted-frames-from-vm-entry-expected.txt: Removed.
- inspector/debugger/tail-deleted-frames-from-vm-entry.html: Removed.
- inspector/debugger/tail-deleted-frames-this-value-expected.txt: Removed.
- inspector/debugger/tail-deleted-frames-this-value.html: Removed.
- inspector/debugger/tail-deleted-frames.html: Removed.
Remove legacy tests that are difficult to read.
- inspector/debugger/tail-deleted-frames/resources/stack-trace-utilities.js: Added.
(TestPage.registerInitializer.window.getAsyncStackTrace):
(TestPage.registerInitializer.async.logThisObject):
(TestPage.registerInitializer.async.logScope):
(TestPage.registerInitializer.async.logCallFrame):
(TestPage.registerInitializer):
- inspector/debugger/tail-deleted-frames/resources/tail-deleted-frames-intermediate-frames.js: Added.
- inspector/debugger/tail-deleted-frames/resources/tail-deleted-frames-intermediate-native-tail-deleted-calls.js: Added.
- inspector/debugger/tail-deleted-frames/resources/tail-deleted-frames-intermediate-tail-deleted-frames.js: Added.
- inspector/debugger/tail-deleted-frames/resources/tail-deleted-frames-scopes.js: Added.
- inspector/debugger/tail-deleted-frames/resources/tail-deleted-frames-this-value.js: Added.
- inspector/debugger/tail-deleted-frames/resources/tail-deleted-frames-vm-entry.js: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-intermediate-frames-expected.txt: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-intermediate-frames.html: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-intermediate-tail-deleted-frames-expected.txt: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-intermediate-tail-deleted-frames.html: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-scopes-expected.txt: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-scopes.html: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-this-value-expected.txt: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-this-value.html: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-vm-entry-expected.txt: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-vm-entry.html: Added.
Include modern tests that are easier to read.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-intermediate-native-tail-deleted-calls-expected.txt: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-intermediate-native-tail-deleted-calls.html: Added.
Include a test that is known to produce bad output, since we have reproductive steps.
- platform/mac/TestExpectations:
Updated pathes.
- 12:03 PM Changeset in webkit [249585] by
-
- 3 edits2 adds in trunk
REGRESSION(iOS 12): Keyboard dismissal leaves WKWebView viewport-fit=cover content offscreen
https://bugs.webkit.org/show_bug.cgi?id=192564
Patch by Darryl Pogue <darryl@dpogue.ca> on 2019-09-06
Reviewed by Tim Horton.
Source/WebKit:
The new keyboard height was being read into a variable after the scrollview had already been
adjusted. This worked when the keyboard was opening, because the scrollview is adjusted with
the correct value a second time when the keyboard animation has finished. However, when the
keyboard is closed, the adjustment was being made before the correct height was stored,
leading to the scrollview being positioned as if the keyboard were still open.
- UIProcess/ios/WKScrollView.mm:
(-[WKScrollView _adjustForAutomaticKeyboardInfo:animated:lastAdjustment:]):
LayoutTests:
Added tests to verify scrolling properly adapts to the keyboard insets on iOS.
- fast/scrolling/ios/scrollview-adjusts-to-keyboard-insets-expected.txt: Added.
- fast/scrolling/ios/scrollview-adjusts-to-keyboard-insets.html: Added.
- 11:46 AM Changeset in webkit [249584] by
-
- 6 edits1 add in trunk
Marking up a note on iOS results in a PDF with no contents
https://bugs.webkit.org/show_bug.cgi?id=201530
<rdar://problem/53686019>
Reviewed by Andy Estes.
Source/WebKit:
- Platform/IPC/Connection.cpp:
(IPC::Connection::Connection):
(IPC::Connection::waitForMessage):
(IPC::Connection::connectionDidClose):
- Platform/IPC/Connection.h:
If the main thread is blocked when the Web Content process dies, and
something eventually calls waitForAndDispatchImmediately without
returning control to the main run loop, we will wait for the full timeout,
because a) the code to mark the connection invalid is dispatched
to the main thread, and b) the secondary thread that is informed of
the Web Content process dying did not yet have a "waiting for" message
to mark as interrupted (because it wasn't waiting yet).
Fix this race by adding a bit that is set under the waitForMessage lock
on the secondary thread when the connection is invalidated, identically
to m_shouldWaitForSyncReplies, which solves the same problem for sync
messages.
Read the new bit when we are about to start waiting, and bail if it is set.
It's OK to not read it inside the loop because we are guaranteed to have
waitForMessage set at that point, so the normal interruption bit will work.
- UIProcess/ios/WKContentView.mm:
(-[WKContentView _processDidExit]):
Reset _isPrintingToPDF; the Web Content process is never going to get
back to us if it crashes.
(-[WKContentView _wk_pageCountForPrintFormatter:]):
Do not bail from starting a printing operation if one is already occurring.
This fixes the original bug, because Markup ends up invalidating the page
count at least one extra time before asking for the printed document.
Instead of maintaining the fragile requirement that you cannot recompute
the page count while printing, just let it happen. In order to make this
work safely, synchronously wait for the previous printed result before
continuing with the next print.
We could do more coalescing here if need be, but calls to -_recalcPageCount
are not high in volume.
Tools:
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/WebKitCocoa/WKWebViewPrintFormatter.mm:
Add some tests for WKWebViewPrintFormatter; specifically that it is
possible to _recalcPageCount twice in quick succession, and that
we don't hang if we start painting the printed content immediately
after a Web Content process crash.
- 11:28 AM Changeset in webkit [249583] by
-
- 3 edits in trunk/Source/WebCore
IndexedDB: use SQL COUNT statement for count operation
https://bugs.webkit.org/show_bug.cgi?id=201465
Reviewed by Geoffrey Garen.
We did count operation by moving objectStore/index iterator from begin to end and counting the steps. We can
utilize the SQL COUNT statement, and improve the performance further by caching the statement.
Tested on release build minibrowser. Without the change, the mean time to complete one iteration in
PerformanceTests/IndexedDB/basic/index-count.html and PerformanceTests/IndexedDB/basic/objectStore-count.html is
about 50ms. With the change it is about 2ms.
- Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::getCount):
(WebCore::IDBServer::SQLiteIDBBackingStore::cachedStatement):
(WebCore::IDBServer::SQLiteIDBBackingStore::closeSQLiteDB):
- Modules/indexeddb/server/SQLiteIDBBackingStore.h:
- 11:10 AM Changeset in webkit [249582] by
-
- 4 edits2 adds in trunk/Tools
run-webkit-test: Allow results to be uploaded without scm checkout
https://bugs.webkit.org/show_bug.cgi?id=200787
Reviewed by Jonathan Bedard.
- Scripts/webkitpy/common/checkout/scm/detection.py:
(SCMDetector.detect_scm_system): Added in detection of stub repository.
- Scripts/webkitpy/common/checkout/scm/stub_repository.py: Added.
(StubRepository):
(StubRepository.init):
(StubRepository._find_parent_path_matching_callback_condition): Checks up the path given to
find the directory containing the checkout_information.json of the stub repository.
(StubRepository.in_working_directory): Required functions to be implemented.
(StubRepository.svn_revision): Required functions to be implemented.
(StubRepository.native_revision): Required functions to be implemented.
(StubRepository.native_branch): Required functions to be implemented.
(StubRepository._decode_json): Decodes checkout_information.json.
(StubRepository.find_checkout_root): Required functions to be implemented.
- Scripts/webkitpy/common/checkout/scm/stub_repository_unittest.py: Added.
(StubRepositoryTest): Unit test for stub_repository SCM.
(StubRepositoryTest.mock_host_for_stub_repository):
(StubRepositoryTest.test_in_working_directory):
(StubRepositoryTest.test_native_revision):
(StubRepositoryTest.test_native_branch):
(StubRepositoryTest.test_svn_revision):
(StubRepositoryTest.test_find_checkout_root):
- Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
(JSONResultsGenerator._get_svn_revision): Removed unnecessary scm initialization.
- Scripts/webkitpy/port/base.py:
(Port.commits_for_upload): Removed unnecessary scm initialization.
- 11:05 AM Changeset in webkit [249581] by
-
- 4 edits2 adds in trunk
REGRESSION (iOS 13): If an overflow:hidden with a non-zero scroll position is toggled to overflow:scroll, some other scroll causes its scroll position to get reset
https://bugs.webkit.org/show_bug.cgi?id=201528
rdar://problem/55044885
Reviewed by Frédéric Wang.
Source/WebCore:
If, when an overflow scrolling node is created, the scroller has non-zero scroll
position (for example, via toggling to overflow:hidden, setting scrollTop, then toggling
to overflow:scroll), then on the next update its scroll position will reset back to zero.
The bug was that newly created ScrollingTreeScrollingNodes didn't set m_currentScrollPosition
to the scroll position coming from the state node, so a subsequent update could cause
the 0,0 currentScrollPosition to get applied. If we're making a new node, and there's no
requestedScrollPosition, then initialize m_currentScrollPosition.
Test: scrollingcoordinator/ios/scroller-initial-scroll-position.html
- page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeScrollingNode::commitStateAfterChildren):
- page/scrolling/ScrollingTreeScrollingNode.h:
LayoutTests:
- scrollingcoordinator/ios/scroller-initial-scroll-position-expected.html: Added.
- scrollingcoordinator/ios/scroller-initial-scroll-position.html: Added.
- 11:02 AM Changeset in webkit [249580] by
-
- 2 edits in trunk/Source/WebKit
Fix unused argument warning from GCC.
- Platform/IPC/ArgumentCoders.h:
(IPC::TupleDecoder<0>::decode):
There was indeed an unused argument.
- 10:16 AM Changeset in webkit [249579] by
-
- 3 edits in trunk/LayoutTests
Unreviewed, fix typo in r249216
Also change the <desc> element to be <text> element so the purpose of
the test is visible once it is opened.
- svg/custom/href-svg-namespace-animate-target-expected.svg:
- svg/custom/href-svg-namespace-animate-target.svg:
- 10:04 AM Changeset in webkit [249578] by
-
- 10 edits2 adds in trunk
Fix bmalloc::Allocator:tryAllocate() to return null on failure to allocate.
https://bugs.webkit.org/show_bug.cgi?id=201529
<rdar://problem/53935772>
Reviewed by Yusuke Suzuki.
JSTests:
- stress/test-out-of-memory.js: Added.
Source/bmalloc:
In this implementation, we pass FailureAction in as a runtime option. If this
proves to be a perf issue, we can easily fix this by passing it as a template
argument. That will also automatically elide unneeded code paths. We'll defer
that exercise until we have evidence that it is warranted.
- CMakeLists.txt:
- bmalloc.xcodeproj/project.pbxproj:
- bmalloc/Allocator.cpp:
(bmalloc::Allocator::allocateImpl):
(bmalloc::Allocator::reallocateImpl):
(bmalloc::Allocator::refillAllocatorSlowCase):
(bmalloc::Allocator::refillAllocator):
(bmalloc::Allocator::allocateLarge):
(bmalloc::Allocator::allocateLogSizeClass):
(bmalloc::Allocator::allocateSlowCase):
(bmalloc::Allocator::tryAllocate): Deleted.
(bmalloc::Allocator::allocate): Deleted.
(bmalloc::Allocator::reallocate): Deleted.
(bmalloc::Allocator::tryReallocate): Deleted.
- bmalloc/Allocator.h:
(bmalloc::Allocator::tryAllocate):
(bmalloc::Allocator::allocate):
(bmalloc::Allocator::tryReallocate):
(bmalloc::Allocator::reallocate):
(bmalloc::Allocator::allocateImpl):
- bmalloc/BumpAllocator.h:
- bmalloc/FailureAction.h: Added.
- bmalloc/Heap.cpp:
(bmalloc::Heap::allocateSmallChunk):
(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::allocateSmallBumpRangesByMetadata):
(bmalloc::Heap::allocateSmallBumpRangesByObject):
(bmalloc::Heap::allocateLarge):
(bmalloc::Heap::tryAllocateLarge): Deleted.
- bmalloc/Heap.h:
(bmalloc::Heap::allocateSmallBumpRanges):
- bmalloc/bmalloc.cpp:
(bmalloc::api::tryLargeZeroedMemalignVirtual):
- 10:03 AM Changeset in webkit [249577] by
-
- 5 edits2 copies4 adds1 delete in trunk
Unreviewed, rolling out r249566.
Causes inspector layout test crashes under GuardMalloc
Reverted changeset:
"Tail Deleted Frames shown in Web Inspector are sometimes
incorrect (Shadow Chicken)"
https://bugs.webkit.org/show_bug.cgi?id=201366
https://trac.webkit.org/changeset/249566
- 9:56 AM Changeset in webkit [249576] by
-
- 2 edits in trunk/Source/JavaScriptCore
testmasm: save r6 in JIT'ed code on ARM_THUMB2
https://bugs.webkit.org/show_bug.cgi?id=201138
Reviewed by Mark Lam.
MacroAssemblerArmv7 uses r6 as a temporary register, and it is a
callee-saved register. The JITs use
AssemblyHelpers::emitSaveCalleeSaves() and friends to save
callee-saved registers, but there is no such mechanism in testmasm,
which seems to make the assumption that the macroassembler does not
use callee-saved registers (which I guess is true for all other
architectures, but not for Armv7).
This issue means that testmasm crashes on Armv7 since code generated
by gcc uses r6, and it gets modified by JIT'ed code.
This change makes sure that we save and restore r6 for all code
compiled by testmasm on Armv7.
- assembler/testmasm.cpp:
(JSC::emitFunctionPrologue):
(JSC::emitFunctionEpilogue):
(JSC::testSimple):
(JSC::testGetEffectiveAddress):
(JSC::testBranchTruncateDoubleToInt32):
(JSC::testBranchTestBit32RegReg):
(JSC::testBranchTestBit32RegImm):
(JSC::testBranchTestBit32AddrImm):
(JSC::testBranchTestBit64RegReg):
(JSC::testBranchTestBit64RegImm):
(JSC::testBranchTestBit64AddrImm):
(JSC::testCompareDouble):
(JSC::testMul32WithImmediates):
(JSC::testMul32SignExtend):
(JSC::testCompareFloat):
(JSC::testProbeReadsArgumentRegisters):
(JSC::testProbeWritesArgumentRegisters):
(JSC::testProbePreservesGPRS):
(JSC::testProbeModifiesStackPointer):
(JSC::testProbeModifiesProgramCounter):
(JSC::testProbeModifiesStackValues):
(JSC::testByteSwap):
(JSC::testMoveDoubleConditionally32):
(JSC::testMoveDoubleConditionally64):
(JSC::testCagePreservesPACFailureBit):
- 9:19 AM Changeset in webkit [249575] by
-
- 20 edits in trunk
When disabling legacy private browsing for testing, change the SessionID back to what it was, not the defaultSessionID
https://bugs.webkit.org/show_bug.cgi?id=201480
Reviewed by Youenn Fablet.
Source/WebCore:
No change in behavior, but this blocks bug 200050 which will make WebKitTestRunner use a persistent, non-default session.
Without this change, that change causes lots of test failures because we are switching from the legacy private browsing session
to the default session instead of the session we were using.
- page/Page.cpp:
(WebCore::Page::enableLegacyPrivateBrowsing): Deleted.
- page/Page.h:
- page/PageGroup.cpp:
(WebCore::PageGroup::addPage):
(WebCore::PageGroup::setSessionIDForTesting):
(WebCore::PageGroup::enableLegacyPrivateBrowsingForTesting): Deleted.
- page/PageGroup.h:
- storage/StorageNamespaceProvider.cpp:
(WebCore::StorageNamespaceProvider::setSessionIDForTesting):
(WebCore::StorageNamespaceProvider::enableLegacyPrivateBrowsingForTesting): Deleted.
- storage/StorageNamespaceProvider.h:
Source/WebKit:
- WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::setPrivateBrowsingEnabled):
- WebProcess/InjectedBundle/InjectedBundle.h:
Source/WebKitLegacy/mac:
- WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
Source/WebKitLegacy/win:
- WebView.cpp:
(WebView::notifyPreferencesChanged):
Tools:
- WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::beginTesting):
- WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setPrivateBrowsingEnabled):
- 8:49 AM Changeset in webkit [249574] by
-
- 9 edits in trunk
Remove MediaStreamPrivate::scheduleDeferredTask
https://bugs.webkit.org/show_bug.cgi?id=200975
Reviewed by Eric Carlson.
LayoutTests/imported/w3c:
- web-platform-tests/mediacapture-streams/MediaStream-finished-add.https-expected.txt:
Source/WebCore:
All calls to scheduleDeferredTask are done on the main thread.
This was initially done to trigger less reconfiguration.
But this makes the implementation significantly more complex.
For instance, we have to wait for the document to update its media state
and send it to UIProcess before calling the allow completion handler.
Covered by existing tests.
- Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::MediaStream):
Make sure to update the document media state once the tracks have been added, similarly to the other constructor.
This ensures the document media state is computed with the new MediaStreamTrack.
- Modules/mediastream/UserMediaRequest.cpp:
(WebCore::isMediaStreamCorrectlyStarted):
(WebCore::UserMediaRequest::allow):
(WebCore::UserMediaRequest::stop):
(WebCore::UserMediaRequest::mediaStreamDidFail):
- Modules/mediastream/UserMediaRequest.h:
- page/MediaProducer.h:
(WebCore::MediaProducer::isCapturing):
Make sure to include getDisplayMedia as part of capture check.
- platform/mediastream/MediaStreamPrivate.cpp:
(WebCore::MediaStreamPrivate::trackMutedChanged):
(WebCore::MediaStreamPrivate::trackEnabledChanged):
(WebCore::MediaStreamPrivate::trackStarted):
(WebCore::MediaStreamPrivate::trackEnded):
- platform/mediastream/MediaStreamPrivate.h:
- 6:05 AM Changeset in webkit [249573] by
-
- 2 edits in releases/WebKitGTK/webkit-2.26/Source/WebKit
Unreviewed. Disable PSON in GTK port
There are some issues causing problems in applications.
- Shared/WebPreferencesDefaultValues.h:
- 5:38 AM WebKitGTK/2.26.x edited by
- (diff)
- 5:27 AM Changeset in webkit [249572] by
-
- 34 edits23 adds2 deletes in trunk
LayoutTests/imported/w3c:
Implement MathMLIDL / HTMLOrForeignElement
https://bugs.webkit.org/show_bug.cgi?id=200470
Patch by Rob Buis <rbuis@igalia.com> on 2019-09-06
Reviewed by Ryosuke Niwa.
Add tests for functionality exposed by HTMLOrForeignElement.
Import WPT tests as of 6e83b23bb962c97687b6573c378963208219ad1b (origin/master).
- resources/import-expectations.json:
- web-platform-tests/mathml/relations/html5-tree/class-1.html:
- web-platform-tests/mathml/relations/html5-tree/class-2.html:
- web-platform-tests/mathml/relations/html5-tree/clipboard-event-handlers.tentative-expected.txt: Added.
- web-platform-tests/mathml/relations/html5-tree/clipboard-event-handlers.tentative.html: Added.
- web-platform-tests/mathml/relations/html5-tree/color-attributes-1.html:
- web-platform-tests/mathml/relations/html5-tree/css-inline-style-dynamic.tentative-expected.html: Added.
- web-platform-tests/mathml/relations/html5-tree/css-inline-style-dynamic.tentative.html: Added.
- web-platform-tests/mathml/relations/html5-tree/css-inline-style-interface.tentative-expected.txt: Added.
- web-platform-tests/mathml/relations/html5-tree/css-inline-style-interface.tentative.html: Added.
- web-platform-tests/mathml/relations/html5-tree/display-1-expected.txt:
- web-platform-tests/mathml/relations/html5-tree/display-1.html:
- web-platform-tests/mathml/relations/html5-tree/dynamic-1.html:
- web-platform-tests/mathml/relations/html5-tree/href-click-1.html:
- web-platform-tests/mathml/relations/html5-tree/href-click-2.html:
- web-platform-tests/mathml/relations/html5-tree/href-click-3.html:
- web-platform-tests/mathml/relations/html5-tree/html-or-foreign-element-interfaces.tentative-expected.txt: Added.
- web-platform-tests/mathml/relations/html5-tree/html-or-foreign-element-interfaces.tentative.html: Added.
- web-platform-tests/mathml/relations/html5-tree/integration-point-1.html:
- web-platform-tests/mathml/relations/html5-tree/integration-point-2.html:
- web-platform-tests/mathml/relations/html5-tree/integration-point-3.html:
- web-platform-tests/mathml/relations/html5-tree/integration-point-4-expected.txt: Added.
- web-platform-tests/mathml/relations/html5-tree/integration-point-4.html: Added.
- web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt: Added.
- web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html: Added.
- web-platform-tests/mathml/relations/html5-tree/required-extensions-1-expected.txt: Removed.
- web-platform-tests/mathml/relations/html5-tree/required-extensions-1.html: Removed.
- web-platform-tests/mathml/relations/html5-tree/required-extensions-2.html:
- web-platform-tests/mathml/relations/html5-tree/unique-identifier-1.html:
- web-platform-tests/mathml/relations/html5-tree/unique-identifier-2.html:
- web-platform-tests/mathml/relations/html5-tree/unique-identifier-3.html:
- web-platform-tests/mathml/relations/html5-tree/w3c-import.log:
- web-platform-tests/mathml/support/attribute-values.js: Added.
(AttributeValueTransforms.lowercase):
(AttributeValueTransforms.uppercase):
(AttributeValueTransforms.alternate_case):
(TransformAttributeValues):
- web-platform-tests/mathml/support/box-comparison.js: Added.
(spaceBetween):
(measureSpaceAround):
(compareSpaceWithAndWithoutStyle):
(compareSizeWithAndWithoutStyle):
- web-platform-tests/mathml/support/layout-comparison.js: Added.
(getWritingMode):
(compareSize):
(participateToParentLayout):
(childrenParticipatingToLayout):
(compareLayout):
- web-platform-tests/mathml/support/mathml-fragments.js: Added.
(FragmentHelper.createElement):
(FragmentHelper.isValidChildOfMrow):
(FragmentHelper.isEmpty):
(FragmentHelper.element):
(FragmentHelper.appendChild):
(FragmentHelper.forceNonEmptyElement):
- web-platform-tests/mathml/support/w3c-import.log: Added.
Source/WebCore:
Implement MathML DOM
https://bugs.webkit.org/show_bug.cgi?id=200470
Patch by Rob Buis <rbuis@igalia.com> on 2019-09-06
Reviewed by Ryosuke Niwa.
Expose MathML DOM as specified here [1].
[1] https://mathml-refresh.github.io/mathml-core/#dom-mathmlelement
Tests: imported/w3c/web-platform-tests/mathml/relations/html5-tree/clipboard-event-handlers.tentative.html
imported/w3c/web-platform-tests/mathml/relations/html5-tree/css-inline-style-dynamic.tentative.html
imported/w3c/web-platform-tests/mathml/relations/html5-tree/css-inline-style-interface.tentative.html
imported/w3c/web-platform-tests/mathml/relations/html5-tree/html-or-foreign-element-interfaces.tentative.html
imported/w3c/web-platform-tests/mathml/relations/html5-tree/integration-point-4.html
imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html
mathml/focus-event-handling.html
mathml/tabindex-order.html
- CMakeLists.txt:
- DerivedSources-input.xcfilelist:
- DerivedSources-output.xcfilelist:
- DerivedSources.make:
- Sources.txt:
- WebCore.xcodeproj/project.pbxproj:
- bindings/js/JSElementCustom.cpp:
(WebCore::createNewElementWrapper):
- bindings/js/JSNodeCustom.cpp:
(WebCore::createWrapperInline):
- mathml/MathMLElement.cpp:
(WebCore::MathMLElement::parseAttribute):
- mathml/MathMLElement.idl: Copied from Source/WebCore/html/HTMLOrForeignElement.idl.
- mathml/MathMLMathElement.idl: Copied from Source/WebCore/html/HTMLOrForeignElement.idl.
- mathml/mathtags.in:
LayoutTests:
Implement MathML DOM
https://bugs.webkit.org/show_bug.cgi?id=200470
Patch by Rob Buis <rbuis@igalia.com> on 2019-09-06
Reviewed by Ryosuke Niwa.
Extend existing tests to also test focus for MathML. Add a standalone test for MathML
based on svg/custom/tabindex-order.html. Add a test for mouse clicks and focus handling
based on svg/custom/focus-event-handling.xhtml.
- fast/dom/tabindex-defaults-expected.txt:
- fast/dom/tabindex-defaults.html:
- mathml/focus-event-handling-expected.txt: Added.
- mathml/focus-event-handling.html: Added.
- mathml/tabindex-order-expected.txt: Added.
- mathml/tabindex-order.html: Added.
- platform/ios-wk2/TestExpectations:
- 3:01 AM Changeset in webkit [249571] by
-
- 16 edits in trunk
Add runtime flag for lazy image loading
https://bugs.webkit.org/show_bug.cgi?id=199794
Patch by Rob Buis <rbuis@igalia.com> on 2019-09-06
Reviewed by Frédéric Wang.
Remove parts of r248409 that were meant for WK1 since
lazy image loading is WK2 only.
Source/WebKitLegacy/mac:
- WebView/WebPreferenceKeysPrivate.h:
- WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences lazyImageLoadingEnabled]): Deleted.
(-[WebPreferences setLazyImageLoadingEnabled:]): Deleted.
- WebView/WebPreferencesPrivate.h:
- WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
Source/WebKitLegacy/win:
- Interfaces/IWebPreferencesPrivate.idl:
- WebPreferenceKeysPrivate.h:
- WebPreferences.cpp:
(WebPreferences::initializeDefaultSettings):
(WebPreferences::setResizeObserverEnabled):
(WebPreferences::lazyImageLoadingEnabled): Deleted.
(WebPreferences::setLazyImageLoadingEnabled): Deleted.
- WebPreferences.h:
- WebView.cpp:
(WebView::notifyPreferencesChanged):
Tools:
- DumpRenderTree/TestOptions.cpp:
(TestOptions::TestOptions):
- DumpRenderTree/TestOptions.h:
- DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):
(setWebPreferencesForTestOptions):
- DumpRenderTree/win/DumpRenderTree.cpp:
(enableExperimentalFeatures):
- 2:14 AM Changeset in webkit [249570] by
-
- 2 edits in trunk/Source/WebInspectorUI
Web Inspector: Network: Error response headers summary has wrong color border
https://bugs.webkit.org/show_bug.cgi?id=201538
<rdar://problem/55104469>
Reviewed by Devin Rousso.
- UserInterface/Views/ResourceHeadersContentView.css:
(body[dir] .resource-headers > section.error > .details):
Re-apply an error style for resource-header sections.
- 2:00 AM Changeset in webkit [249569] by
-
- 2 edits in trunk/Source/WebKit
[GTK][WPE] Do not enable the sandbox in Snap
https://bugs.webkit.org/show_bug.cgi?id=201486
Reviewed by Carlos Garcia Campos.
Running inside of Snap adds its own complications and is simply
not supported for now.
Also update isInsideFlatpak() for consistency.
- UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
(WebKit::isInsideFlatpak):
(WebKit::isInsideSnap):
(WebKit::ProcessLauncher::launchProcess):
- 1:51 AM Changeset in webkit [249568] by
-
- 5 edits in trunk/Source/WebCore
[GStreamer] YUV buffers on iMX platforms have to be treated as RGBA
https://bugs.webkit.org/show_bug.cgi?id=201537
Reviewed by Philippe Normand.
The imxvpudecoder element on iMX platforms decodes YUV data in a
platform-specific way, gathering the YUV data in a single texture and
then relying on the sampler in the Vivante graphics drivers to
automagically decode that YUV data into RGBA values.
To correctly display such decoded data, we have to represent that
single texture as an RGBA texture, even when the GStreamer buffer is
crafted as containing planar YUV data.
- platform/graphics/gstreamer/GStreamerCommon.h:
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::GstVideoFrameHolder):
(WebCore::GstVideoFrameHolder::platformLayerBuffer):
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
(WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
- 1:22 AM Changeset in webkit [249567] by
-
- 5 edits in trunk
Web Inspector: Crashes when intercept response is a 404
https://bugs.webkit.org/show_bug.cgi?id=201514
Reviewed by Alex Christensen.
Source/WebKit:
- WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveResponse):
Ensure the WebResourceLoader stays around during intercepts.
(WebKit::WebResourceLoader::didReceiveData):
(WebKit::WebResourceLoader::didFinishResourceLoad):
(WebKit::WebResourceLoader::didFailResourceLoad):
Only perform the work if the m_coreLoader is still alive.
LayoutTests:
- http/tests/inspector/network/local-resource-override-basic-expected.txt:
- http/tests/inspector/network/local-resource-override-basic.html:
Add a test for a 404 response override.
- 1:14 AM Changeset in webkit [249566] by
-
- 5 edits2 copies2 moves17 adds4 deletes in trunk
Tail Deleted Frames shown in Web Inspector are sometimes incorrect (Shadow Chicken)
https://bugs.webkit.org/show_bug.cgi?id=201366
Reviewed by Saam Barati.
Source/JavaScriptCore:
It is possible for the log buffer to be full right as someone is trying to
log a function prologue. In such a case the machine stack has already been
updated to include the new JavaScript call frame, but the prologue packet
cannot be included in the update because the log is full. This would mean
that the update fails to rationalize the machine stack with the shadow
log / stack. Namely, the current JavaScript call frame is unable to
find a matching prologue (the one we are holding to include after the update)
and inserts a questionable value into the stack; and in the process
missing and removing real potential tail calls.
For example:
"use strict";
function third() { return 1; }
function second() { return third(); }
function first() { return second(); }
function start() { return first(); }
If the the log fills up just as we are entering
bthen we may have a list
full log of packets looking like:
Shadow Log:
...
{ prologue-packet: enteringstart... }
{ prologue-packet: enteringfirst... }
{ tail-packet: leavingfirstwith a tail call }
Incoming Packet:
{ prologue-packet: entering
second... }
Current JS Stack:
second
start
Since the Current JavaScript stack already has
second, if we process the
log without the prologue forsecondthen we push a confused entry on the
shadow stack and clear the log such that we eventually lose the tail-call
information forfirsttosecond.
This patch solves this issue by providing enough extra space in the log
to always process the incoming packet when that forces an update. This way
clients can continue to behave exactly as they are.
--
We also document a corner case in some circumstances where the shadow
log may currently be insufficient to know how to reconcile:
For example:
"use strict";
function third() { return 1; }
function second() { return third(); }
function first() { return second(); }
function doNothingTail() { return Math.random() }
function start() {
for (i=0;i<1000;++i) doNothingTail();
return first();
}
In this case the ShadowChicken log may be processed multiple times due
to the many calls todoNothingTail/Math.random(). When calling the
Native function no prologue packet is emitted, so it is unclear that we
temporarly go deeper and come back out on the stack, so the log appears
to have lots of doNothingTail calls reusing the same frame:
Shadow Log:
...
, [123] {callee = 0x72a21aee0, frame = 0x7ffeef897270, callerFrame = 0x7ffeef8972e0, name = start}
, [124] {callee = 0x72a21af10, frame = 0x7ffeef8971f0, callerFrame = 0x7ffeef897270, name = doNothingTail}
, [125] tail-packet:{frame = 0x7ffeef8971f0}
, [126] {callee = 0x72a21af10, frame = 0x7ffeef8971f0, callerFrame = 0x7ffeef897270, name = doNothingTail}
, [127] tail-packet:{frame = 0x7ffeef8971f0}
...
, [140] {callee = 0x72a21af10, frame = 0x7ffeef8971f0, callerFrame = 0x7ffeef897270, name = doNothingTail}
, [141] tail-packet:{frame = 0x7ffeef8971f0}
, [142] {callee = 0x72a21af10, frame = 0x7ffeef8971f0, callerFrame = 0x7ffeef897270, name = doNothingTail}
, [143] tail-packet:{frame = 0x7ffeef8971f0}
, [144] {callee = 0x72a21aeb0, frame = 0x7ffeef8971f0, callerFrame = 0x7ffeef897270, name = first}
, [145] tail-packet:{frame = 0x7ffeef8971f0}
, [146] {callee = 0x72a21ae80, frame = 0x7ffeef8971f0, callerFrame = 0x7ffeef897270, name = second}
...
This log would seem to be indistinguishable from real tail recursion, such as:
"use strict";
function third() { return 1; }
function second() { return third(); }
function first() { return second(); }
function doNothingTail(n) {
return n ? doNothingTail(n-1) : first();
}
function start() {
return doNothingTail(1000);
}
Likewise there are more cases where the shadow log appears to be ambiguous with determining
the appropriate parent call frame with intermediate function calls. In practice this may
not be too problematic, as this is a best effort reconstruction of tail deleted frames.
It seems likely we would only show additional frames that did in fact happen serially
between JavaScript call frames, but may not actually be the proper parent frames
heirachy in the stack.
- interpreter/ShadowChicken.cpp:
(JSC::ShadowChicken::Packet::dump const):
(JSC::ShadowChicken::Frame::dump const):
(JSC::ShadowChicken::dump const):
Improved debugging output. Especially for functions.
(JSC::ShadowChicken::ShadowChicken):
Make space in the log for 1 additional packet to process when we slow log.
(JSC::ShadowChicken::log):
Include this packet in our update.
(JSC::ShadowChicken::update):
Address an edge case where we can eliminate tail-deleted frames that don't make sense.
LayoutTests:
- inspector/debugger/tail-deleted-frames-expected.txt: Removed.
- inspector/debugger/tail-deleted-frames-from-vm-entry-expected.txt: Removed.
- inspector/debugger/tail-deleted-frames-from-vm-entry.html: Removed.
- inspector/debugger/tail-deleted-frames-this-value-expected.txt: Removed.
- inspector/debugger/tail-deleted-frames-this-value.html: Removed.
- inspector/debugger/tail-deleted-frames.html: Removed.
Remove legacy tests that are difficult to read.
- inspector/debugger/tail-deleted-frames/resources/stack-trace-utilities.js: Added.
(TestPage.registerInitializer.window.getAsyncStackTrace):
(TestPage.registerInitializer.async.logThisObject):
(TestPage.registerInitializer.async.logScope):
(TestPage.registerInitializer.async.logCallFrame):
(TestPage.registerInitializer):
- inspector/debugger/tail-deleted-frames/resources/tail-deleted-frames-intermediate-frames.js: Added.
- inspector/debugger/tail-deleted-frames/resources/tail-deleted-frames-intermediate-native-tail-deleted-calls.js: Added.
- inspector/debugger/tail-deleted-frames/resources/tail-deleted-frames-intermediate-tail-deleted-frames.js: Added.
- inspector/debugger/tail-deleted-frames/resources/tail-deleted-frames-scopes.js: Added.
- inspector/debugger/tail-deleted-frames/resources/tail-deleted-frames-this-value.js: Added.
- inspector/debugger/tail-deleted-frames/resources/tail-deleted-frames-vm-entry.js: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-intermediate-frames-expected.txt: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-intermediate-frames.html: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-intermediate-tail-deleted-frames-expected.txt: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-intermediate-tail-deleted-frames.html: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-scopes-expected.txt: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-scopes.html: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-this-value-expected.txt: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-this-value.html: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-vm-entry-expected.txt: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-vm-entry.html: Added.
Include modern tests that are easier to read.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-intermediate-native-tail-deleted-calls-expected.txt: Added.
- inspector/debugger/tail-deleted-frames/tail-deleted-frames-intermediate-native-tail-deleted-calls.html: Added.
Include a test that is known to produce bad output, since we have reproductive steps.
- platform/mac/TestExpectations:
Updated pathes.
- 12:06 AM Changeset in webkit [249565] by
-
- 5 edits in trunk
AccessibilityRenderObject::setSelectedTextRange fails to set the selection passed an empty line.
https://bugs.webkit.org/show_bug.cgi?id=201518
<rdar://problem/54835122>
Patch by Andres Gonzalez <Andres Gonzalez> on 2019-09-06
Reviewed by Ryosuke Niwa.
Source/WebCore:
Test: accessibility/set-selected-text-range-after-newline.html
In the case of an empty line, the CharacterIterator range start and end
were not equal, thus we were not advancing the iterator and returning
the iterator range end, which is not correct. With this change we are
always advancing the iterator if its text is just '\n'. This covers all
the cases we fixed before plus empty lines.
- editing/Editing.cpp:
(WebCore::visiblePositionForIndexUsingCharacterIterator):
LayoutTests:
Extended this test to set the selection range passed an empty line.
- accessibility/set-selected-text-range-after-newline-expected.txt:
- accessibility/set-selected-text-range-after-newline.html: