[webkit-changes] [295596] trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
Title: [295596] trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp Revision 295596 Author sihui_...@apple.com Date 2022-06-16 09:30:11 -0700 (Thu, 16 Jun 2022) Log Message Regression (r295056): do not delete WebSQL directory until there is no use of it in WebKit clients https://bugs.webkit.org/show_bug.cgi?id=241671 Reviewed by Youenn Fablet. We have internal clients that set the custom WebSQL directory do not only use the directory for WebSQL. * Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary): Canonical link: https://commits.webkit.org/251601@main Modified Paths trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp Diff Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (295595 => 295596) --- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2022-06-16 16:27:37 UTC (rev 295595) +++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2022-06-16 16:30:11 UTC (rev 295596) @@ -310,9 +310,6 @@ m_resolvedConfiguration->setCookieStorageFile(resolveAndCreateReadWriteDirectoryForSandboxExtension(FileSystem::parentPath(m_configuration->cookieStorageFile(; m_resolvedConfiguration->setCookieStorageFile(FileSystem::pathByAppendingComponent(m_resolvedConfiguration->cookieStorageFile(), FileSystem::pathFileName(m_configuration->cookieStorageFile(; } - -if (auto directory = m_configuration->webSQLDatabaseDirectory(); !directory.isEmpty()) -FileSystem::deleteNonEmptyDirectory(directory); } enum class ProcessAccessType : uint8_t { None, OnlyIfLaunched, Launch }; ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [295493] trunk/Source/WebKit/UIProcess
Title: [295493] trunk/Source/WebKit/UIProcess Revision 295493 Author sihui_...@apple.com Date 2022-06-13 11:20:38 -0700 (Mon, 13 Jun 2022) Log Message Start/stop ProcessStateMonitor with ApplicationStateTracker https://bugs.webkit.org/show_bug.cgi?id=241427 Reviewed by Geoffrey Garen. We want ProcessStateMonitor to be started when application is in background and to be stopped when application is in foreground. In r294405, we start/stop ProcessStateMonitor on receiving UIApplicationDidEnterBackgroundNotification and UIApplicationWillEnterForegroundNotification notifications. However, UIApplicationWillEnterForegroundNotification can be sent later than UISceneWillEnterForegroundNotification. In ApplicationStateTracke, we start creating foreground activity for web process on receiving UISceneWillEnterForegroundNotification. At this time, UIApplicationWillEnterForegroundNotification may not be received yet and ProcessStateMonitor may still be working. ProcessStateMonitor may forbid creating new activity after it sets process shouldSuspend (see r294405), so we need to make sure ProcessStateMonitor is stopped before starting new foreground activity. To achieve that, we now decide when to start/stop ProcessStateMonitor with ApplicationStateTracker. We start ProcessStateMonitor when all trackers are in the background, and stop it when at least one tracker is in foreground. * Source/WebKit/UIProcess/ApplicationStateTracker.mm: (WebKit::allApplicationStateTrackers): (WebKit::updateApplicationBackgroundState): (WebKit::ApplicationStateTracker::ApplicationStateTracker): (WebKit::ApplicationStateTracker::~ApplicationStateTracker): (WebKit::ApplicationStateTracker::applicationDidEnterBackground): (WebKit::ApplicationStateTracker::applicationWillEnterForeground): * Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::setProcessesShouldSuspend): * Source/WebKit/UIProcess/ProcessAssertion.h: * Source/WebKit/UIProcess/WebProcessPool.h: * Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm: (-[WKProcessAssertionBackgroundTaskManager _releaseBackgroundTask]): (-[WKProcessAssertionBackgroundTaskManager setProcessStateMonitorEnabled:]): (WebKit::ProcessAndUIAssertion::setProcessStateMonitorEnabled): * Source/WebKit/UIProcess/ios/ProcessStateMonitor.mm: (WebKit::ProcessStateMonitor::checkRemainingRunTime): * Source/WebKit/UIProcess/ios/WebProcessProxyIOS.mm: (WebKit::WebProcessProxy::platformInitialize): Canonical link: https://commits.webkit.org/251498@main Modified Paths trunk/Source/WebKit/UIProcess/ApplicationStateTracker.mm trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm trunk/Source/WebKit/UIProcess/ProcessAssertion.h trunk/Source/WebKit/UIProcess/WebProcessPool.h trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm trunk/Source/WebKit/UIProcess/ios/ProcessStateMonitor.mm trunk/Source/WebKit/UIProcess/ios/WebProcessProxyIOS.mm Diff Modified: trunk/Source/WebKit/UIProcess/ApplicationStateTracker.mm (295492 => 295493) --- trunk/Source/WebKit/UIProcess/ApplicationStateTracker.mm 2022-06-13 17:16:47 UTC (rev 295492) +++ trunk/Source/WebKit/UIProcess/ApplicationStateTracker.mm 2022-06-13 18:20:38 UTC (rev 295493) @@ -30,6 +30,7 @@ #import "EndowmentStateTracker.h" #import "Logging.h" +#import "ProcessAssertion.h" #import "SandboxUtilities.h" #import "UIKitSPI.h" #import @@ -50,6 +51,28 @@ namespace WebKit { +static WeakHashSet& allApplicationStateTrackers() +{ +static NeverDestroyed> trackers; +return trackers; +} + +static void updateApplicationBackgroundState() +{ +static bool s_isApplicationInBackground = false; +auto isAnyStateTrackerInForeground = []() -> bool { +return WTF::anyOf(allApplicationStateTrackers(), [](auto& tracker) { +return !tracker.isInBackground(); +}); +}; +bool isApplicationInBackground = !isAnyStateTrackerInForeground(); +if (s_isApplicationInBackground == isApplicationInBackground) +return; + +s_isApplicationInBackground = isApplicationInBackground; +ProcessAndUIAssertion::setProcessStateMonitorEnabled(isApplicationInBackground); +} + ApplicationType applicationType(UIWindow *window) { if (_UIApplicationIsExtension()) @@ -161,6 +184,9 @@ break; } } + +allApplicationStateTrackers().add(*this); +updateApplicationBackgroundState(); } ApplicationStateTracker::~ApplicationStateTracker() @@ -173,11 +199,15 @@ [notificationCenter removeObserver:m_willEnterForegroundObserver]; [notificationCenter removeObserver:m_willBeginSnapshotSequenceObserver]; [notificationCenter removeObserver:m_didCompleteSnapshotSequenceObserver]; + +allApplicationStateTrackers().remove(*this); +updateApplicationBackgroundState(); } void ApplicationStateTracker::applicationDidEnterBackground() { m_isInBackground = true; +updateApplicationBackgroundState(); if (auto view = m_view.get()) wtfObjCMsgSend(
[webkit-changes] [295254] trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm
Title: [295254] trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm Revision 295254 Author sihui_...@apple.com Date 2022-06-03 16:59:06 -0700 (Fri, 03 Jun 2022) Log Message Regression (r294405): missing tiles during scrolling after foregrounding app https://bugs.webkit.org/show_bug.cgi?id=241280 Reviewed by Chris Dumez. Partially revert r294405 to disable ProcessStateMonitor that can make UI process fail to take foreground assertion after app is foregrounded. * Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm: (-[WKProcessAssertionBackgroundTaskManager init]): (-[WKProcessAssertionBackgroundTaskManager _releaseBackgroundTask]): Canonical link: https://commits.webkit.org/251302@main Modified Paths trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm Diff Modified: trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm (295253 => 295254) --- trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm 2022-06-03 23:55:02 UTC (rev 295253) +++ trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm 2022-06-03 23:59:06 UTC (rev 295254) @@ -29,7 +29,6 @@ #if PLATFORM(IOS_FAMILY) #import "Logging.h" -#import "ProcessStateMonitor.h" #import "RunningBoardServicesSPI.h" #import "WebProcessPool.h" #import @@ -74,7 +73,6 @@ std::atomic _backgroundTaskWasInvalidated; WeakHashSet _assertionsNeedingBackgroundTask; dispatch_block_t _pendingTaskReleaseTask; -std::unique_ptr m_processStateMonitor; } + (WKProcessAssertionBackgroundTaskManager *)shared @@ -94,20 +92,11 @@ [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationWillEnterForegroundNotification object:[UIApplication sharedApplication] queue:nil usingBlock:^(NSNotification *) { [self _cancelPendingReleaseTask]; [self _updateBackgroundTask]; - -m_processStateMonitor = nullptr; }]; [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidEnterBackgroundNotification object:[UIApplication sharedApplication] queue:nil usingBlock:^(NSNotification *) { if (![self _hasBackgroundTask]) WebKit::WebProcessPool::notifyProcessPoolsApplicationIsAboutToSuspend(); - -if (!m_processStateMonitor) { -m_processStateMonitor = makeUnique([](bool suspended) { -for (auto& processPool : WebKit::WebProcessPool::allProcessPools()) -processPool->setProcessesShouldSuspend(suspended); -}); -} }]; return self; @@ -253,11 +242,8 @@ return; RELEASE_LOG(ProcessSuspension, "%p - WKProcessAssertionBackgroundTaskManager: endBackgroundTask", self); -if (processHasActiveRunTimeLimitation()) { +if (processHasActiveRunTimeLimitation()) WebKit::WebProcessPool::notifyProcessPoolsApplicationIsAboutToSuspend(); -if (m_processStateMonitor) -m_processStateMonitor->processWillBeSuspendedImmediately(); -} [_backgroundTask removeObserver:self]; [_backgroundTask invalidate]; ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [295151] trunk
Title: [295151] trunk Revision 295151 Author sihui_...@apple.com Date 2022-06-02 15:37:10 -0700 (Thu, 02 Jun 2022) Log Message Promote _WKWebsiteDataTypeFileSystem to API https://bugs.webkit.org/show_bug.cgi?id=241142 Reviewed by Geoffrey Garen. * Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.h: * Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.mm: (dataTypesToString): * Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h: (WebKit::toWebsiteDataType): (WebKit::toWKWebsiteDataTypes): * Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h: * Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm: (+[WKWebsiteDataStore allWebsiteDataTypes]): (+[WKWebsiteDataStore _allWebsiteDataTypesIncludingPrivate]): * Tools/TestWebKitAPI/Tests/WebKitCocoa/FileSystemAccess.mm: Canonical link: https://commits.webkit.org/251240@main Modified Paths trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.h trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.mm trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/FileSystemAccess.mm Diff Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.h (295150 => 295151) --- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.h 2022-06-02 22:33:31 UTC (rev 295150) +++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.h 2022-06-02 22:37:10 UTC (rev 295151) @@ -59,6 +59,9 @@ /*! @constant WKWebsiteDataTypeServiceWorkerRegistrations Service worker registrations. */ WK_EXTERN NSString * const WKWebsiteDataTypeServiceWorkerRegistrations WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); +/*! @constant WKWebsiteDataTypeFileSystem File system storage. */ +WK_EXTERN NSString * const WKWebsiteDataTypeFileSystem WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); + /*! A WKWebsiteDataRecord represents website data, grouped by domain name using the public suffix list. */ WK_CLASS_AVAILABLE(macos(10.11), ios(9.0)) @interface WKWebsiteDataRecord : NSObject Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.mm (295150 => 295151) --- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.mm 2022-06-02 22:33:31 UTC (rev 295150) +++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.mm 2022-06-02 22:37:10 UTC (rev 295151) @@ -42,6 +42,7 @@ NSString * const WKWebsiteDataTypeWebSQLDatabases = @"WKWebsiteDataTypeWebSQLDatabases"; NSString * const WKWebsiteDataTypeIndexedDBDatabases = @"WKWebsiteDataTypeIndexedDBDatabases"; NSString * const WKWebsiteDataTypeServiceWorkerRegistrations = @"WKWebsiteDataTypeServiceWorkerRegistrations"; +NSString * const WKWebsiteDataTypeFileSystem = @"WKWebsiteDataTypeFileSystem"; NSString * const _WKWebsiteDataTypeMediaKeys = @"_WKWebsiteDataTypeMediaKeys"; NSString * const _WKWebsiteDataTypeHSTSCache = @"_WKWebsiteDataTypeHSTSCache"; @@ -51,7 +52,7 @@ NSString * const _WKWebsiteDataTypeAdClickAttributions = @"_WKWebsiteDataTypeAdClickAttributions"; NSString * const _WKWebsiteDataTypePrivateClickMeasurements = @"_WKWebsiteDataTypePrivateClickMeasurements"; NSString * const _WKWebsiteDataTypeAlternativeServices = @"_WKWebsiteDataTypeAlternativeServices"; -NSString * const _WKWebsiteDataTypeFileSystem = @"_WKWebsiteDataTypeFileSystem"; +NSString * const _WKWebsiteDataTypeFileSystem = WKWebsiteDataTypeFileSystem; #if PLATFORM(MAC) NSString * const _WKWebsiteDataTypePlugInData = @"_WKWebsiteDataTypePlugInData"; @@ -99,6 +100,8 @@ [array addObject:@"Media Keys"]; if ([dataTypes containsObject:_WKWebsiteDataTypeSearchFieldRecentSearches]) [array addObject:@"Search Field Recent Searches"]; +if ([dataTypes containsObject:WKWebsiteDataTypeFileSystem]) +[array addObject:@"File System"]; #if PLATFORM(MAC) if ([dataTypes containsObject:_WKWebsiteDataTypePlugInData]) [array addObject:@"Plug-in Data"]; Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h (295150 => 295151) --- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h 2022-06-02 22:33:31 UTC (rev 295150) +++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h 2022-06-02 22:37:10 UTC (rev 295151) @@ -59,6 +59,8 @@ if ([websiteDataType isEqualToString:WKWebsiteDataTypeServiceWorkerRegistrations]) return WebsiteDataType::ServiceWorkerRegistrations; #endif +if ([websiteDataType isEqualToString:WKWebsiteDataTypeFileSystem]) +return WebsiteDataType::FileSystem; if ([websiteDataType isEqualToString:_WKWebsiteDataTypeHSTSCache]) return WebsiteDataType::HSTSCache; if ([websiteDataType isEqualToString:_WKWebsiteDataTypeMediaKeys]) @@ -77,8 +79,6 @@ if ([websiteDataType isEqualToString:_WKWebsiteDataTypeAlternativeServices]) re
[webkit-changes] [295056] trunk
Title: [295056] trunk Revision 295056 Author sihui_...@apple.com Date 2022-05-31 10:05:10 -0700 (Tue, 31 May 2022) Log Message Remove some WebSQL code from WebKit https://bugs.webkit.org/show_bug.cgi?id=240857 Reviewed by Chris Dumez. * Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp: (WebKit::bubblewrapSpawn): * Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: (WebKit::WebsiteDataStore::defaultWebSQLDatabaseDirectory): (WebKit::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation): * Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary): (WebKit::WebsiteDataStore::fetchDataAndApply): (WebKit::WebsiteDataStore::removeData): * Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h: (WebKit::WebsiteDataStore::resolvedMediaKeysDirectory const): (WebKit::WebsiteDataStore::resolvedDatabaseDirectory const): Deleted. * Source/WebKit/UIProcess/WebsiteData/playstation/WebsiteDataStorePlayStation.cpp: (WebKit::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation): * Source/WebKit/UIProcess/WebsiteData/win/WebsiteDataStoreWin.cpp: (WebKit::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation): * Source/WebKit/UIProcess/glib/WebProcessProxyGLib.cpp: (WebKit::WebProcessProxy::platformGetLaunchOptions): * Source/WebKit/UIProcess/glib/WebsiteDataStoreGLib.cpp: (WebKit::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation): * Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundle.cpp: (WKBundleClearAllDatabases): Deleted. * Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: * Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::exceededDatabaseQuota): Deleted. * Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h: * Source/WebKit/WebProcess/WebProcess.cpp: (WebKit::WebProcess::prepareToSuspend): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.html: * Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm: (runWebsiteDataStoreCustomPaths): * Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: (WTR::InjectedBundle::beginTesting): * Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp: (WTR::TestRunner::clearAllDatabases): Canonical link: https://commits.webkit.org/251151@main Modified Paths trunk/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h trunk/Source/WebKit/UIProcess/WebsiteData/playstation/WebsiteDataStorePlayStation.cpp trunk/Source/WebKit/UIProcess/WebsiteData/win/WebsiteDataStoreWin.cpp trunk/Source/WebKit/UIProcess/glib/WebProcessProxyGLib.cpp trunk/Source/WebKit/UIProcess/glib/WebsiteDataStoreGLib.cpp trunk/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundle.cpp trunk/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h trunk/Source/WebKit/WebProcess/WebProcess.cpp trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.html trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp Diff Modified: trunk/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp (295055 => 295056) --- trunk/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp 2022-05-31 16:59:01 UTC (rev 295055) +++ trunk/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp 2022-05-31 17:05:10 UTC (rev 295056) @@ -746,7 +746,7 @@ addExtraPaths(launchOptions.extraSandboxPaths, sandboxArgs); -Vector extraPaths = { "applicationCacheDirectory"_s, "mediaKeysDirectory"_s, "waylandSocket"_s, "webSQLDatabaseDirectory"_s }; +Vector extraPaths = { "applicationCacheDirectory"_s, "mediaKeysDirectory"_s, "waylandSocket"_s }; for (const auto& path : extraPaths) { String extraPath = launchOptions.extraInitializationData.get(path); if (!extraPath.isEmpty()) Modified: trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm (295055 => 295056) --- trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm 2022-05-31 16:59:01 UTC (rev 295055) +++ trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm 2022-05-31 17:05:10 UTC (rev 295056) @@ -351,7 +351,7 @@ String WebsiteDataStore::defaultWebSQLDatabaseDirectory() { -return websiteDataDirectoryFileSystemRepresentation("WebSQL"_s); +return websiteDataDirectoryFileSystemRepresentation("WebSQL"_s, ShouldCreateDirectory::No); } String WebsiteDataStore::defaultResourceLoadStatisticsDirectory() @@ -428,7 +428,7 @@ return url.abs
[webkit-changes] [294949] trunk/Source/WebCore
Title: [294949] trunk/Source/WebCore Revision 294949 Author sihui_...@apple.com Date 2022-05-27 12:54:52 -0700 (Fri, 27 May 2022) Log Message Stop exposing ApplicationCache API if it is not enabled https://bugs.webkit.org/show_bug.cgi?id=241000 Reviewed by Chris Dumez. * Source/WebCore/bindings/js/WebCoreBuiltinNames.h: * Source/WebCore/loader/appcache/DOMApplicationCache.idl: * Source/WebCore/page/DOMWindow.idl: Canonical link: https://commits.webkit.org/251057@main Modified Paths trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h trunk/Source/WebCore/loader/appcache/DOMApplicationCache.idl trunk/Source/WebCore/page/DOMWindow.idl Diff Modified: trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h (294948 => 294949) --- trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h 2022-05-27 19:29:41 UTC (rev 294948) +++ trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h 2022-05-27 19:54:52 UTC (rev 294949) @@ -50,6 +50,7 @@ macro(ApplePaySession) \ macro(ApplePaySetup) \ macro(ApplePaySetupFeature) \ +macro(ApplicationCache) \ macro(AttachmentElement) \ macro(Audio) \ macro(AudioBuffer) \ @@ -421,6 +422,7 @@ macro(abortAlgorithm) \ macro(abortSteps) \ macro(appendFromJS) \ +macro(applicationCache) \ macro(associatedReadableByteStreamController) \ macro(autoAllocateChunkSize) \ macro(backingMap) \ Modified: trunk/Source/WebCore/loader/appcache/DOMApplicationCache.idl (294948 => 294949) --- trunk/Source/WebCore/loader/appcache/DOMApplicationCache.idl 2022-05-27 19:29:41 UTC (rev 294948) +++ trunk/Source/WebCore/loader/appcache/DOMApplicationCache.idl 2022-05-27 19:54:52 UTC (rev 294949) @@ -29,7 +29,8 @@ DoNotCheckConstants, GenerateIsReachable=ReachableFromDOMWindow, InterfaceName=ApplicationCache, -Exposed=Window +Exposed=Window, +EnabledBySetting=OfflineWebApplicationCacheEnabled ] interface DOMApplicationCache : EventTarget { // update status const unsigned short UNCACHED = 0; Modified: trunk/Source/WebCore/page/DOMWindow.idl (294948 => 294949) --- trunk/Source/WebCore/page/DOMWindow.idl 2022-05-27 19:29:41 UTC (rev 294948) +++ trunk/Source/WebCore/page/DOMWindow.idl 2022-05-27 19:54:52 UTC (rev 294949) @@ -78,7 +78,7 @@ // the user agent readonly attribute Navigator navigator; // FIXME: This is specified to be [SecureContext] -readonly attribute DOMApplicationCache applicationCache; +[EnabledBySetting=OfflineWebApplicationCacheEnabled] readonly attribute DOMApplicationCache applicationCache; // user prompts undefined alert(); ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [294860] trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp
Title: [294860] trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp Revision 294860 Author sihui_...@apple.com Date 2022-05-25 18:52:56 -0700 (Wed, 25 May 2022) Log Message REGRESSION(r294381): [ Debug ] TestWebKitAPI.WebKit.CookieObserverCrash is a constant crash https://bugs.webkit.org/show_bug.cgi?id=240595 Reviewed by Alex Christensen. The crash is an assertion failure. The assertion ensures that WebCookieManagerProxy has no cookies observer when it gets destroyed. The assertion was valid when it was added, since WKHTTPCookieStore does not outlive WebKit::WebsiteDataStore (r219550), and observers will be removed when WKHTTPCookieStore is deallocated. Since r279074, WKHTTPCookieStore can outlive WebKit::WebsiteDataStore -- it holds a weak reference to WebKit::WebsiteDataStore instead of a strong reference, so the assertion does not hold. * Source/WebKit/UIProcess/WebCookieManagerProxy.cpp: (WebKit::WebCookieManagerProxy::~WebCookieManagerProxy): Canonical link: https://commits.webkit.org/250992@main Modified Paths trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp Diff Modified: trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp (294859 => 294860) --- trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp 2022-05-26 01:48:51 UTC (rev 294859) +++ trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp 2022-05-26 01:52:56 UTC (rev 294860) @@ -49,7 +49,8 @@ { if (m_networkProcess) m_networkProcess->removeMessageReceiver(Messages::WebCookieManagerProxy::messageReceiverName()); -ASSERT(m_cookieObservers.isEmpty()); +if (!m_cookieObservers.isEmpty()) +RELEASE_LOG(Storage, "WebCookieManagerProxy::~WebCookieManagerProxy %u cookie observers will be invalidated", m_cookieObservers.size()); } void WebCookieManagerProxy::getHostnamesWithCookies(PAL::SessionID sessionID, CompletionHandler&&)>&& callbackFunction) ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [294820] trunk/Source/WebKit
Title: [294820] trunk/Source/WebKit Revision 294820 Author sihui_...@apple.com Date 2022-05-25 13:29:54 -0700 (Wed, 25 May 2022) Log Message Remove old WebStorage implementation https://bugs.webkit.org/show_bug.cgi?id=240833 Reviewed by Geoffrey Garen. No behavior change; the new implementation inside Source/WebKit/NetworkProcess/storage/ is in use. * Source/WebKit/CMakeLists.txt: * Source/WebKit/NetworkProcess/NetworkProcess.h: * Source/WebKit/NetworkProcess/WebStorage/LocalStorageDatabase.cpp: Removed. * Source/WebKit/NetworkProcess/WebStorage/LocalStorageDatabase.h: Removed. * Source/WebKit/NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp: Removed. * Source/WebKit/NetworkProcess/WebStorage/LocalStorageDatabaseTracker.h: Removed. * Source/WebKit/NetworkProcess/WebStorage/LocalStorageNamespace.cpp: Removed. * Source/WebKit/NetworkProcess/WebStorage/LocalStorageNamespace.h: Removed. * Source/WebKit/NetworkProcess/WebStorage/SessionStorageNamespace.cpp: Removed. * Source/WebKit/NetworkProcess/WebStorage/SessionStorageNamespace.h: Removed. * Source/WebKit/NetworkProcess/WebStorage/StorageArea.cpp: Removed. * Source/WebKit/NetworkProcess/WebStorage/StorageArea.h: Removed. * Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp: Removed. * Source/WebKit/NetworkProcess/WebStorage/StorageManager.h: Removed. * Source/WebKit/NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp: Removed. * Source/WebKit/NetworkProcess/WebStorage/TransientLocalStorageNamespace.h: Removed. * Source/WebKit/NetworkProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm: Removed. * Source/WebKit/Platform/Logging.h: * Source/WebKit/PlatformPlayStation.cmake: * Source/WebKit/PlatformWin.cmake: * Source/WebKit/Shared/StorageAreaIdentifier.h: Renamed from Source/WebKit/NetworkProcess/WebStorage/StorageAreaIdentifier.h. * Source/WebKit/Sources.txt: * Source/WebKit/SourcesCocoa.txt: * Source/WebKit/UIProcess/Network/NetworkProcessProxy.h: * Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: * Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h: * Source/WebKit/WebKit.xcodeproj/project.pbxproj: Canonical link: https://commits.webkit.org/250973@main Modified Paths trunk/Source/WebKit/CMakeLists.txt trunk/Source/WebKit/NetworkProcess/NetworkProcess.h trunk/Source/WebKit/Platform/Logging.h trunk/Source/WebKit/PlatformPlayStation.cmake trunk/Source/WebKit/PlatformWin.cmake trunk/Source/WebKit/Sources.txt trunk/Source/WebKit/SourcesCocoa.txt trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj Added Paths trunk/Source/WebKit/Shared/StorageAreaIdentifier.h Removed Paths trunk/Source/WebKit/NetworkProcess/WebStorage/ Diff Modified: trunk/Source/WebKit/CMakeLists.txt (294819 => 294820) --- trunk/Source/WebKit/CMakeLists.txt 2022-05-25 19:53:21 UTC (rev 294819) +++ trunk/Source/WebKit/CMakeLists.txt 2022-05-25 20:29:54 UTC (rev 294820) @@ -29,7 +29,6 @@ "${WEBKIT_DIR}/NetworkProcess/PrivateClickMeasurement" "${WEBKIT_DIR}/NetworkProcess/ServiceWorker" "${WEBKIT_DIR}/NetworkProcess/SharedWorker" -"${WEBKIT_DIR}/NetworkProcess/WebStorage" "${WEBKIT_DIR}/NetworkProcess/cache" "${WEBKIT_DIR}/NetworkProcess/storage" "${WEBKIT_DIR}/NetworkProcess/watchos" Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (294819 => 294820) --- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2022-05-25 19:53:21 UTC (rev 294819) +++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2022-05-25 20:29:54 UTC (rev 294820) @@ -31,7 +31,6 @@ #include "DataTaskIdentifier.h" #include "DownloadID.h" #include "DownloadManager.h" -#include "LocalStorageDatabaseTracker.h" #include "NetworkContentRuleListManager.h" #include "NetworkResourceLoadIdentifier.h" #include "QuotaIncreaseRequestIdentifier.h" Modified: trunk/Source/WebKit/Platform/Logging.h (294819 => 294820) --- trunk/Source/WebKit/Platform/Logging.h 2022-05-25 19:53:21 UTC (rev 294819) +++ trunk/Source/WebKit/Platform/Logging.h 2022-05-25 20:29:54 UTC (rev 294820) @@ -69,7 +69,6 @@ M(Layers) \ M(Layout) \ M(Loading) \ -M(LocalStorageDatabaseTracker) \ M(Media) \ M(MemoryPressure) \ M(ModelElement) \ Modified: trunk/Source/WebKit/PlatformPlayStation.cmake (294819 => 294820) --- trunk/Source/WebKit/PlatformPlayStation.cmake 2022-05-25 19:53:21 UTC (rev 294819) +++ trunk/Source/WebKit/PlatformPlayStation.cmake 2022-05-25 20:29:54 UTC (rev 294820) @@ -39,8 +39,6 @@ NetworkProcess/Cookies/curl/WebCookieManagerCurl.cpp -NetworkProcess/WebStorage/StorageManager.cpp - NetworkProcess/cache/NetworkCacheDataCurl.cpp NetworkProcess/cache/NetworkCacheIOChannelCurl.cpp Modified: trunk/Source/WebKit/PlatformWin.cmake (294819 => 294820) --- trunk/Source/WebKi
[webkit-changes] [294802] trunk/Source/WebKit
Title: [294802] trunk/Source/WebKit Revision 294802 Author sihui_...@apple.com Date 2022-05-25 09:53:05 -0700 (Wed, 25 May 2022) Log Message Add remainingRunningTime info to logging of PrepareToSuspend message https://bugs.webkit.org/show_bug.cgi?id=240879 Reviewed by Chris Dumez. Replace background timing info with remaining run time info, so we have a better idea of when the message is sent and when it is processed. We will know if the message is handled after process resumes (since process can be suspended before it handles the message). * Source/WebKit/GPUProcess/GPUProcess.cpp: (WebKit::GPUProcess::prepareToSuspend): * Source/WebKit/GPUProcess/GPUProcess.h: * Source/WebKit/GPUProcess/GPUProcess.messages.in: * Source/WebKit/NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::processWillSuspendImminentlyForTestingSync): (WebKit::NetworkProcess::prepareToSuspend): (WebKit::NetworkProcess::applicationDidEnterBackground): (WebKit::NetworkProcess::applicationWillEnterForeground): (WebKit::NetworkProcess::processDidResume): * Source/WebKit/NetworkProcess/NetworkProcess.h: * Source/WebKit/NetworkProcess/NetworkProcess.messages.in: * Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm: (-[WKWebView _processWillSuspendForTesting:]): (-[WKWebView _processWillSuspendImminentlyForTesting]): * Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp: (WebKit::GPUProcessProxy::sendPrepareToSuspend): * Source/WebKit/UIProcess/GPU/GPUProcessProxy.h: * Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::sendPrepareToSuspend): * Source/WebKit/UIProcess/Network/NetworkProcessProxy.h: * Source/WebKit/UIProcess/ProcessAssertion.cpp: (WebKit::ProcessAssertion::remainingRunTimeInSeconds): * Source/WebKit/UIProcess/ProcessAssertion.h: * Source/WebKit/UIProcess/ProcessThrottler.cpp: (WebKit::ProcessThrottler::sendPrepareToSuspendIPC): * Source/WebKit/UIProcess/ProcessThrottlerClient.h: * Source/WebKit/UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::sendPrepareToSuspend): * Source/WebKit/UIProcess/WebProcessProxy.h: * Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::sendNetworkProcessPrepareToSuspendForTesting): * Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm: (WebKit::ProcessAssertion::remainingRunTimeInSeconds): * Source/WebKit/WebProcess/WebProcess.cpp: (WebKit::WebProcess::prepareToSuspend): * Source/WebKit/WebProcess/WebProcess.h: * Source/WebKit/WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/250958@main Modified Paths trunk/Source/WebKit/GPUProcess/GPUProcess.cpp trunk/Source/WebKit/GPUProcess/GPUProcess.h trunk/Source/WebKit/GPUProcess/GPUProcess.messages.in trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp trunk/Source/WebKit/NetworkProcess/NetworkProcess.h trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.h trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h trunk/Source/WebKit/UIProcess/ProcessAssertion.cpp trunk/Source/WebKit/UIProcess/ProcessAssertion.h trunk/Source/WebKit/UIProcess/ProcessThrottler.cpp trunk/Source/WebKit/UIProcess/ProcessThrottlerClient.h trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp trunk/Source/WebKit/UIProcess/WebProcessProxy.h trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm trunk/Source/WebKit/WebProcess/WebProcess.cpp trunk/Source/WebKit/WebProcess/WebProcess.h trunk/Source/WebKit/WebProcess/WebProcess.messages.in Diff Modified: trunk/Source/WebKit/GPUProcess/GPUProcess.cpp (294801 => 294802) --- trunk/Source/WebKit/GPUProcess/GPUProcess.cpp 2022-05-25 16:47:58 UTC (rev 294801) +++ trunk/Source/WebKit/GPUProcess/GPUProcess.cpp 2022-05-25 16:53:05 UTC (rev 294802) @@ -282,7 +282,7 @@ #endif } -void GPUProcess::prepareToSuspend(bool isSuspensionImminent, CompletionHandler&& completionHandler) +void GPUProcess::prepareToSuspend(bool isSuspensionImminent, MonotonicTime, CompletionHandler&& completionHandler) { RELEASE_LOG(ProcessSuspension, "%p - GPUProcess::prepareToSuspend(), isSuspensionImminent: %d", this, isSuspensionImminent); Modified: trunk/Source/WebKit/GPUProcess/GPUProcess.h (294801 => 294802) --- trunk/Source/WebKit/GPUProcess/GPUProcess.h 2022-05-25 16:47:58 UTC (rev 294801) +++ trunk/Source/WebKit/GPUProcess/GPUProcess.h 2022-05-25 16:53:05 UTC (rev 294802) @@ -73,7 +73,7 @@ void removeGPUConnectionToWebProcess(GPUConnectionToWebProcess&); -void prepareToSuspend(bool isSuspensionImminent, CompletionHandler&&); +void prepareToSuspend(bool isSuspensionImminent, MonotonicTime estimatedSuspendTime, CompletionHandler&&); void processDidResume(); void resume(); Modified: trunk/Source/Web
[webkit-changes] [294670] trunk/Source/WebKit/UIProcess
Title: [294670] trunk/Source/WebKit/UIProcess Revision 294670 Author sihui_...@apple.com Date 2022-05-23 12:46:17 -0700 (Mon, 23 May 2022) Log Message REGRESSION (r294469): [ iOS ] TestWebKitAPI.NSAttributedStringWebKitAdditions.DirectoriesNotCreated is a consistent failure https://bugs.webkit.org/show_bug.cgi?id=240690 Reviewed by Chris Dumez. r294469 failed to check if WebsiteDataStore is persistent before getting and creating directories in WebProcessPool. To fix this and to avoid future issues, we make WebsiteDataStore return null for directory getters if it's not persistent. * Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp: (WebKit::GPUProcessProxy::GPUProcessProxy): * Source/WebKit/UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): * Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: (WebKit::WebsiteDataStore::cookieStorageDirectory const): (WebKit::WebsiteDataStore::containerCachesDirectory const): (WebKit::WebsiteDataStore::parentBundleDirectory const): (WebKit::WebsiteDataStore::networkingCachesDirectory const): (WebKit::WebsiteDataStore::containerTemporaryDirectory const): (WebKit::WebsiteDataStore::defaultContainerTemporaryDirectory): (WebKit::WebsiteDataStore::cookieStorageDirectory): Deleted. (WebKit::WebsiteDataStore::containerCachesDirectory): Deleted. (WebKit::WebsiteDataStore::parentBundleDirectory): Deleted. (WebKit::WebsiteDataStore::networkingCachesDirectory): Deleted. (WebKit::WebsiteDataStore::containerTemporaryDirectory): Deleted. * Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h: Canonical link: https://commits.webkit.org/250884@main Modified Paths trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp trunk/Source/WebKit/UIProcess/WebProcessPool.cpp trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h Diff Modified: trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp (294669 => 294670) --- trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp 2022-05-23 19:44:15 UTC (rev 294669) +++ trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp 2022-05-23 19:46:17 UTC (rev 294670) @@ -142,7 +142,7 @@ #if USE(SANDBOX_EXTENSIONS_FOR_CACHE_AND_TEMP_DIRECTORY_ACCESS) auto containerCachesDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(gpuProcessCachesDirectory()); -auto containerTemporaryDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(WebsiteDataStore::containerTemporaryDirectory()); +auto containerTemporaryDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(WebsiteDataStore::defaultContainerTemporaryDirectory()); if (!containerCachesDirectory.isEmpty()) { if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(containerCachesDirectory, SandboxExtension::Type::ReadWrite)) Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (294669 => 294670) --- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2022-05-23 19:44:15 UTC (rev 294669) +++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2022-05-23 19:46:17 UTC (rev 294670) @@ -767,7 +767,7 @@ if (auto directory = websiteDataStore.containerCachesDirectory(); !directory.isEmpty()) containerCachesDirectoryExtensionHandle = SandboxExtension::createHandleForReadWriteDirectory(directory); std::optional containerTemporaryDirectoryExtensionHandle; -if (auto directory = WebsiteDataStore::containerTemporaryDirectory(); !directory.isEmpty()) +if (auto directory = websiteDataStore.containerTemporaryDirectory(); !directory.isEmpty()) containerTemporaryDirectoryExtensionHandle = SandboxExtension::createHandleForReadWriteDirectory(directory); #endif Modified: trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm (294669 => 294670) --- trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm 2022-05-23 19:44:15 UTC (rev 294669) +++ trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm 2022-05-23 19:46:17 UTC (rev 294670) @@ -642,15 +642,20 @@ return path; } -String WebsiteDataStore::cookieStorageDirectory() +String WebsiteDataStore::cookieStorageDirectory() const { +if (!isPersistent()) +return { }; + return cacheDirectoryInContainerOrHomeDirectory("/Library/Cookies"_s); } -String WebsiteDataStore::containerCachesDirectory() +String WebsiteDataStore::containerCachesDirectory() const { +if (!isPersistent()) +return { }; + String path = cacheDirectoryInContainerOrHomeDirectory("/Library/Caches/com.apple.WebKit.WebContent/"_s); - NSError *error = nil; NSString* nsPath = path; if (![[NSFileManager defaultManager] createDirectoryAtPath:nsPath withIntermediateDirectories:YES attributes:nil error:&error]) { @@ -661,15 +666,20 @@ return path; } -String WebsiteDataStore::parentBundleDirectory() +String WebsiteDataStore::parentBundleDirectory() con
[webkit-changes] [294562] trunk/Source/WebKit/NetworkProcess
Title: [294562] trunk/Source/WebKit/NetworkProcess Revision 294562 Author sihui_...@apple.com Date 2022-05-20 11:18:51 -0700 (Fri, 20 May 2022) Log Message Clear SessionStorage of a page when the page is destroyed https://bugs.webkit.org/show_bug.cgi?id=240683 Reviewed by Chris Dumez. We should not keep SessionStorage items in memory when they will not be accessed any more. * Source/WebKit/NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::removeWebPageNetworkParameters): * Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp: (WebKit::NetworkStorageManager::clearStorageForWebPage): * Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h: * Source/WebKit/NetworkProcess/storage/SessionStorageManager.cpp: (WebKit::SessionStorageManager::removeNamespace): * Source/WebKit/NetworkProcess/storage/SessionStorageManager.h: Canonical link: https://commits.webkit.org/250807@main Modified Paths trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h trunk/Source/WebKit/NetworkProcess/storage/SessionStorageManager.cpp trunk/Source/WebKit/NetworkProcess/storage/SessionStorageManager.h Diff Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (294561 => 294562) --- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2022-05-20 18:15:23 UTC (rev 294561) +++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2022-05-20 18:18:51 UTC (rev 294562) @@ -2766,8 +2766,10 @@ void NetworkProcess::removeWebPageNetworkParameters(PAL::SessionID sessionID, WebPageProxyIdentifier pageID) { -if (auto* session = networkSession(sessionID)) +if (auto* session = networkSession(sessionID)) { session->removeWebPageNetworkParameters(pageID); +session->storageManager().clearStorageForWebPage(pageID); +} } void NetworkProcess::countNonDefaultSessionSets(PAL::SessionID sessionID, CompletionHandler&& completionHandler) Modified: trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp (294561 => 294562) --- trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp 2022-05-20 18:15:23 UTC (rev 294561) +++ trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp 2022-05-20 18:18:51 UTC (rev 294562) @@ -319,6 +319,18 @@ }); } +void NetworkStorageManager::clearStorageForWebPage(WebPageProxyIdentifier pageIdentifier) +{ +ASSERT(RunLoop::isMain()); + +m_queue->dispatch([this, protectedThis = Ref { *this }, pageIdentifier]() mutable { +for (auto& manager : m_localOriginStorageManagers.values()) { +if (auto* sessionStorageManager = manager->existingSessionStorageManager()) +sessionStorageManager->removeNamespace(makeObjectIdentifier(pageIdentifier.toUInt64())); +} +}); +} + void NetworkStorageManager::didIncreaseQuota(WebCore::ClientOrigin&& origin, QuotaIncreaseRequestIdentifier identifier, std::optional newQuota) { ASSERT(RunLoop::isMain()); Modified: trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h (294561 => 294562) --- trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h 2022-05-20 18:15:23 UTC (rev 294561) +++ trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h 2022-05-20 18:18:51 UTC (rev 294562) @@ -32,6 +32,7 @@ #include "StorageAreaImplIdentifier.h" #include "StorageAreaMapIdentifier.h" #include "StorageNamespaceIdentifier.h" +#include "WebPageProxyIdentifier.h" #include "WebsiteData.h" #include #include @@ -80,6 +81,7 @@ PAL::SessionID sessionID() const { return m_sessionID; } void close(); void clearStorageForTesting(CompletionHandler&&); +void clearStorageForWebPage(WebPageProxyIdentifier); void didIncreaseQuota(WebCore::ClientOrigin&&, QuotaIncreaseRequestIdentifier, std::optional newQuota); void fetchData(OptionSet, CompletionHandler&&)>&&); void deleteData(OptionSet, const Vector&, CompletionHandler&&); Modified: trunk/Source/WebKit/NetworkProcess/storage/SessionStorageManager.cpp (294561 => 294562) --- trunk/Source/WebKit/NetworkProcess/storage/SessionStorageManager.cpp 2022-05-20 18:15:23 UTC (rev 294561) +++ trunk/Source/WebKit/NetworkProcess/storage/SessionStorageManager.cpp 2022-05-20 18:18:51 UTC (rev 294562) @@ -62,6 +62,16 @@ storageArea->removeListener(connection); } +void SessionStorageManager::removeNamespace(StorageNamespaceIdentifier namespaceIdentifier) +{ +auto identifier = m_storageAreasByNamespace.take(namespaceIdentifier); +if (!identifier.isValid()) +return; + +m_storageAreas.remove(identifier); +m_registry.unregisterStorageArea(identifier); +} + StorageAreaIdentifier SessionStorageManager::addStorageArea(std::unique_ptr storageArea, StorageNamespaceIdentifier namespaceIdentifier) { auto identifier = storageArea->identifier(); Modified: trunk/Sou
[webkit-changes] [294469] trunk/Source/WebKit/UIProcess
Title: [294469] trunk/Source/WebKit/UIProcess Revision 294469 Author sihui_...@apple.com Date 2022-05-18 23:24:56 -0700 (Wed, 18 May 2022) Log Message Move directories from WebProcessPool to WebsiteDataStore https://bugs.webkit.org/show_bug.cgi?id=240609 Reviewed by Chris Dumez. Moving directories out of WebProcessPool because WebsiteDataStore usually decides where to store things. It is confusing in current implementation that WebsiteDataStore gets the paths from WebProcessPool, and then WebProcessPool query paths from WebsiteDataStore. * Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::cacheDirectoryInContainerOrHomeDirectory): Deleted. (WebKit::WebProcessPool::cookieStorageDirectory): Deleted. (WebKit::WebProcessPool::parentBundleDirectory): Deleted. (WebKit::WebProcessPool::networkingCachesDirectory): Deleted. (WebKit::WebProcessPool::webContentCachesDirectory): Deleted. (WebKit::WebProcessPool::containerTemporaryDirectory): Deleted. * Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp: (WebKit::gpuProcessCachesDirectory): (WebKit::GPUProcessProxy::GPUProcessProxy): * Source/WebKit/UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): * Source/WebKit/UIProcess/WebProcessPool.h: * Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: (WebKit::WebsiteDataStore::cacheDirectoryInContainerOrHomeDirectory): (WebKit::WebsiteDataStore::cookieStorageDirectory): (WebKit::WebsiteDataStore::containerCachesDirectory): (WebKit::WebsiteDataStore::parentBundleDirectory): (WebKit::WebsiteDataStore::networkingCachesDirectory): (WebKit::WebsiteDataStore::containerTemporaryDirectory): * Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary): (WebKit::WebsiteDataStore::parameters): * Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h: (WebKit::WebsiteDataStore::cookieStorageDirectory const): Deleted. (WebKit::WebsiteDataStore::containerCachesDirectory const): Deleted. (WebKit::WebsiteDataStore::containerTemporaryDirectory const): Deleted. Canonical link: https://commits.webkit.org/250731@main Modified Paths trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp trunk/Source/WebKit/UIProcess/WebProcessPool.cpp trunk/Source/WebKit/UIProcess/WebProcessPool.h trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h Diff Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (294468 => 294469) --- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2022-05-19 05:53:40 UTC (rev 294468) +++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2022-05-19 06:24:56 UTC (rev 294469) @@ -263,24 +263,6 @@ #endif } -#if PLATFORM(IOS_FAMILY) -String WebProcessPool::cacheDirectoryInContainerOrHomeDirectory(const String& subpath) -{ -String path = pathForProcessContainer(); -if (path.isEmpty()) -path = NSHomeDirectory(); - -path = path + subpath; -path = stringByResolvingSymlinksInPath(path); -return path; -} - -String WebProcessPool::cookieStorageDirectory() -{ -return cacheDirectoryInContainerOrHomeDirectory("/Library/Cookies"_s); -} -#endif - void WebProcessPool::platformResolvePathsForSandboxExtensions() { m_resolvedPaths.uiProcessBundleResourcePath = resolvePathForSandboxExtension(String { [[NSBundle mainBundle] resourcePath] }); @@ -482,47 +464,6 @@ } #if PLATFORM(IOS_FAMILY) -String WebProcessPool::parentBundleDirectory() -{ -return [[[NSBundle mainBundle] bundlePath] stringByStandardizingPath]; -} - -String WebProcessPool::networkingCachesDirectory() -{ -String path = cacheDirectoryInContainerOrHomeDirectory("/Library/Caches/com.apple.WebKit.Networking/"_s); - -NSError *error = nil; -NSString* nsPath = path; -if (![[NSFileManager defaultManager] createDirectoryAtPath:nsPath withIntermediateDirectories:YES attributes:nil error:&error]) { -NSLog(@"could not create networking caches directory \"%@\", error %@", nsPath, error); -return String(); -} - -return path; -} - -String WebProcessPool::webContentCachesDirectory() -{ -String path = cacheDirectoryInContainerOrHomeDirectory("/Library/Caches/com.apple.WebKit.WebContent/"_s); - -NSError *error = nil; -NSString* nsPath = path; -if (![[NSFileManager defaultManager] createDirectoryAtPath:nsPath withIntermediateDirectories:YES attributes:nil error:&error]) { -NSLog(@"could not create web content caches directory \"%@\", error %@", nsPath, error); -return String(); -} - -return path; -} - -String WebProcessPool::containerTemporaryDirectory() -{ -String path = NSTemporaryDirectory(); -return stringByResolvingSymlinksInPath(path); -} -#endif - -#if PLATFORM(IOS_FAMILY) void
[webkit-changes] [294405] trunk/Source/WebKit
Title: [294405] trunk/Source/WebKit Revision 294405 Author sihui_...@apple.com Date 2022-05-18 10:51:25 -0700 (Wed, 18 May 2022) Log Message Monitor process state and send prepareToSuspend based on that https://bugs.webkit.org/show_bug.cgi?id=240359 Reviewed by Chris Dumez. Currently UI process sends PrepareToSuspend when a process has no activity that needs an assertion, or when assertion will be invalidated due to timeout (when assertionWillInvalidate is called). On receiving PrepareToSuspend, process will perform necessary actions, such as suspending storage threads for network process. According to crashes in rdar://problem/92228190, the message is not received by process before suspension, or process gets suspended while processing the message. To fix the crash, we need to ensure the message gets processed before process suspension. This patch introduces ProcessStateMonitor that tracks when UI process will be suspended, and notifies WebProcessPools when remaining running time is less than 15s. On receiving the notification, ProcessThrottlers of web processes will invalidate activities and send out PrepareToSuspend messages to web processes. These processes are not allowed to take new background assertion until ProcessStateMonitor finds process becomes running without timeout, or ProcessStateMonitor is destroyed. ProcessStateMonitor is created when UI process enters background, and destroyed when UI process enters foreground, to avoid getting receiving too many unnecessary updates from runningboardd. * Source/WebKit/Platform/spi/ios/RunningBoardServicesSPI.h: (+[RBSProcessPredicate predicateMatchingHandle:]): * Source/WebKit/SourcesCocoa.txt: * Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::setProcessesShouldSuspend): * Source/WebKit/UIProcess/ProcessThrottler.cpp: (WebKit::ProcessThrottler::addActivity): (WebKit::ProcessThrottler::setAllowsActivities): * Source/WebKit/UIProcess/ProcessThrottler.h: (WebKit::ProcessThrottler::Activity::Activity): (WebKit::ProcessThrottler::Activity::name const): (WebKit::ProcessThrottler::Activity::isQuietActivity const): * Source/WebKit/UIProcess/WebProcessPool.h: * Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm: (-[WKProcessAssertionBackgroundTaskManager init]): (-[WKProcessAssertionBackgroundTaskManager _releaseBackgroundTask]): * Source/WebKit/UIProcess/ios/ProcessStateMonitor.h: Added. * Source/WebKit/UIProcess/ios/ProcessStateMonitor.mm: Added. (WebKit::ProcessStateMonitor::ProcessStateMonitor): (WebKit::ProcessStateMonitor::~ProcessStateMonitor): (WebKit::ProcessStateMonitor::processDidBecomeRunning): (WebKit::ProcessStateMonitor::processWillBeSuspended): (WebKit::ProcessStateMonitor::processWillBeSuspendedImmediately): (WebKit::ProcessStateMonitor::suspendTimerFired): (WebKit::ProcessStateMonitor::checkRemainingRunTime): * Source/WebKit/WebKit.xcodeproj/project.pbxproj: Canonical link: https://commits.webkit.org/250699@main Modified Paths trunk/Source/WebKit/Platform/spi/ios/RunningBoardServicesSPI.h trunk/Source/WebKit/SourcesCocoa.txt trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm trunk/Source/WebKit/UIProcess/ProcessThrottler.cpp trunk/Source/WebKit/UIProcess/ProcessThrottler.h trunk/Source/WebKit/UIProcess/WebProcessPool.h trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj Added Paths trunk/Source/WebKit/UIProcess/ios/ProcessStateMonitor.h trunk/Source/WebKit/UIProcess/ios/ProcessStateMonitor.mm Diff Modified: trunk/Source/WebKit/Platform/spi/ios/RunningBoardServicesSPI.h (294404 => 294405) --- trunk/Source/WebKit/Platform/spi/ios/RunningBoardServicesSPI.h 2022-05-18 17:28:13 UTC (rev 294404) +++ trunk/Source/WebKit/Platform/spi/ios/RunningBoardServicesSPI.h 2022-05-18 17:51:25 UTC (rev 294405) @@ -131,14 +131,24 @@ @interface RBSProcessMonitor : NSObject + (instancetype)monitorWithConfiguration:(NS_NOESCAPE RBSProcessMonitorConfigurator)block; +- (void)invalidate; @end @interface RBSProcessPredicate : NSObject + (RBSProcessPredicate *)predicateMatchingHandle:(RBSProcessHandle *)process; +typedef NS_OPTIONS(NSUInteger, RBSProcessStateValues) { +RBSProcessStateValueNone= 0, +RBSProcessStateValueTaskState = (1 << 0), +RBSProcessStateValueTags= (1 << 1), +RBSProcessStateValueTerminationResistance = (1 << 2), +RBSProcessStateValueLegacyAssertions= (1 << 3), +RBSProcessStateValueModernAssertions= (1 << 4), +}; @end @interface RBSProcessStateDescriptor : NSObject + (instancetype)descriptor; +@property (nonatomic, readwrite, assign) RBSProcessStateValues values; @property (nonatomic, readwrite, copy, nullable) NSArray *endowmentNamespaces; @end Modified: trunk/Source/WebKit/SourcesCocoa.txt (294404 => 294405) --- trunk/Source/WebKit/SourcesCocoa.txt 2022-05-18 17:28:13 UTC (rev 294404) +++ trunk/Source/WebKit/Sources
[webkit-changes] [294381] trunk/Source/WebKit/UIProcess
Title: [294381] trunk/Source/WebKit/UIProcess Revision 294381 Author sihui_...@apple.com Date 2022-05-17 20:23:38 -0700 (Tue, 17 May 2022) Log Message WebProcessProxy should not hold WebsiteDataStore alive when there is no page https://bugs.webkit.org/show_bug.cgi?id=238892 Reviewed by Youenn Fablet. WebProcessProxy can outlive WebPageProxy, and because WebProcessProxy holds strong reference to WebsiteDataStore, WebsiteDataStore will be kept alive even when it's not used by any page and will not be used by any page. * UIProcess/GPU/GPUProcessProxy.cpp: (WebKit::GPUProcessProxy::createGPUProcessConnection): * UIProcess/ProvisionalPageProxy.cpp: (WebKit::ProvisionalPageProxy::ProvisionalPageProxy): (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy): * UIProcess/ProvisionalPageProxy.h: * UIProcess/SuspendedPageProxy.cpp: (WebKit::SuspendedPageProxy::findReusableSuspendedPageProcess): * UIProcess/WebBackForwardCache.cpp: (WebKit::WebBackForwardCache::removeEntriesForSession): * UIProcess/WebLockRegistryProxy.cpp: (WebKit::WebLockRegistryProxy::requestLock): (WebKit::WebLockRegistryProxy::releaseLock): (WebKit::WebLockRegistryProxy::abortLockRequest): (WebKit::WebLockRegistryProxy::snapshot): (WebKit::WebLockRegistryProxy::clientIsGoingAway): (WebKit::WebLockRegistryProxy::processDidExit): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::swapToProvisionalPage): (WebKit::WebPageProxy::commitProvisionalPage): * UIProcess/WebProcessCache.cpp: (WebKit::WebProcessCache::canCacheProcess const): (WebKit::WebProcessCache::takeProcess): (WebKit::WebProcessCache::clearAllProcessesForSession): (WebKit::WebProcessCache::CachedProcess::CachedProcess): * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::establishRemoteWorkerContextConnectionToNetworkProcess): (WebKit::WebProcessPool::processForRegistrableDomain): (WebKit::WebProcessPool::createWebPage): (WebKit::WebProcessPool::processForNavigationInternal): * UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::WebProcessProxy): (WebKit::m_webLockRegistry): (WebKit::WebProcessProxy::websiteDataStore const): (WebKit::WebProcessProxy::setWebsiteDataStore): (WebKit::WebProcessProxy::isDummyProcessProxy const): (WebKit::WebProcessProxy::updateRegistrationWithDataStore): (WebKit::WebProcessProxy::addExistingWebPage): (WebKit::WebProcessProxy::getNetworkProcessConnection): (WebKit::WebProcessProxy::didStartProvisionalLoadForMainFrame): (WebKit::WebProcessProxy::sessionID const): * UIProcess/WebProcessProxy.h: (WebKit::WebProcessProxy::websiteDataStore const): Deleted. * UIProcess/glib/WebProcessProxyGLib.cpp: (WebKit::WebProcessProxy::platformGetLaunchOptions): Modified Paths trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h trunk/Source/WebKit/UIProcess/SuspendedPageProxy.cpp trunk/Source/WebKit/UIProcess/WebBackForwardCache.cpp trunk/Source/WebKit/UIProcess/WebLockRegistryProxy.cpp trunk/Source/WebKit/UIProcess/WebPageProxy.cpp trunk/Source/WebKit/UIProcess/WebProcessCache.cpp trunk/Source/WebKit/UIProcess/WebProcessPool.cpp trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp trunk/Source/WebKit/UIProcess/WebProcessProxy.h trunk/Source/WebKit/UIProcess/glib/WebProcessProxyGLib.cpp Diff Modified: trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp (294380 => 294381) --- trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp 2022-05-18 02:19:29 UTC (rev 294380) +++ trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp 2022-05-18 03:23:38 UTC (rev 294381) @@ -370,7 +370,9 @@ void GPUProcessProxy::createGPUProcessConnection(WebProcessProxy& webProcessProxy, IPC::Attachment&& connectionIdentifier, GPUProcessConnectionParameters&& parameters) { -addSession(webProcessProxy.websiteDataStore()); +if (auto* store = webProcessProxy.websiteDataStore()) +addSession(*store); + RELEASE_LOG(ProcessSuspension, "%p - GPUProcessProxy is taking a background assertion because a web process is requesting a connection", this); startResponsivenessTimer(UseLazyStop::No); sendWithAsyncReply(Messages::GPUProcess::CreateGPUConnectionToWebProcess { webProcessProxy.coreProcessIdentifier(), webProcessProxy.sessionID(), connectionIdentifier, parameters }, [this, weakThis = WeakPtr { *this }]() mutable { Modified: trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp (294380 => 294381) --- trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp 2022-05-18 02:19:29 UTC (rev 294380) +++ trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp 2022-05-18 03:23:38 UTC (rev 294381) @@ -84,8 +84,10 @@ m_process->addMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_webPageID, *this); m_process->addProvisionalPageProxy(*this); -if (&m_process->websiteDataStore() != &m_page.websiteDataStore()) -m_process->processPool().pageBeginUsingWebsiteDataStore(m_page.identifier(), m_process->websiteDataStore(
[webkit-changes] [294124] trunk/Source/WebCore
Title: [294124] trunk/Source/WebCore Revision 294124 Author sihui_...@apple.com Date 2022-05-12 14:57:09 -0700 (Thu, 12 May 2022) Log Message StorageMap::removeItem may fail to remove item from map https://bugs.webkit.org/show_bug.cgi?id=239982 rdar://80891555 * storage/StorageMap.cpp: (WebCore::StorageMap::removeItem): Address post-landing review comment from Darin. Modified Paths trunk/Source/WebCore/ChangeLog trunk/Source/WebCore/storage/StorageMap.cpp Diff Modified: trunk/Source/WebCore/ChangeLog (294123 => 294124) --- trunk/Source/WebCore/ChangeLog 2022-05-12 21:56:45 UTC (rev 294123) +++ trunk/Source/WebCore/ChangeLog 2022-05-12 21:57:09 UTC (rev 294124) @@ -1,3 +1,13 @@ +2022-05-12 Sihui Liu + +StorageMap::removeItem may fail to remove item from map +https://bugs.webkit.org/show_bug.cgi?id=239982 +rdar://80891555 + +* storage/StorageMap.cpp: +(WebCore::StorageMap::removeItem): +Address post-landing review comment from Darin. + 2022-05-12 J Pascoe [WebAuthn] Include backup state in authenticatorData Modified: trunk/Source/WebCore/storage/StorageMap.cpp (294123 => 294124) --- trunk/Source/WebCore/storage/StorageMap.cpp 2022-05-12 21:56:45 UTC (rev 294123) +++ trunk/Source/WebCore/storage/StorageMap.cpp 2022-05-12 21:57:09 UTC (rev 294124) @@ -134,11 +134,14 @@ oldValue = iter->value; newSize = newSize - iter->key.sizeInBytes() - oldValue.sizeInBytes(); -// Implement copy-on-write semantics. -if (m_impl->refCount() > 1) +if (m_impl->hasOneRef()) +m_impl->map.remove(iter); +else { +// Implement copy-on-write semantics. m_impl = m_impl->copy(); +m_impl->map.remove(key); +} -m_impl->map.remove(key); m_impl->currentSize = newSize; invalidateIterator(); } ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [294062] trunk
Title: [294062] trunk Revision 294062 Author sihui_...@apple.com Date 2022-05-11 11:18:49 -0700 (Wed, 11 May 2022) Log Message Unreviewed, add github info to contributors.json. * metadata/contributors.json: Modified Paths trunk/ChangeLog trunk/metadata/contributors.json Diff Modified: trunk/ChangeLog (294061 => 294062) --- trunk/ChangeLog 2022-05-11 17:58:17 UTC (rev 294061) +++ trunk/ChangeLog 2022-05-11 18:18:49 UTC (rev 294062) @@ -1,3 +1,9 @@ +2022-05-06 Sihui Liu + +Unreviewed, add github info to contributors.json. + +* metadata/contributors.json: + 2022-05-09 Ryosuke Niwa Introduction.md: Explain active DOM objects Modified: trunk/metadata/contributors.json (294061 => 294062) --- trunk/metadata/contributors.json 2022-05-11 17:58:17 UTC (rev 294061) +++ trunk/metadata/contributors.json 2022-05-11 18:18:49 UTC (rev 294062) @@ -6085,6 +6085,7 @@ "emails" : [ "sihui_...@apple.com" ], + "github" : "szewai", "name" : "Sihui Liu", "nicks" : [ "sihuil" ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [293842] trunk
Title: [293842] trunk Revision 293842 Author sihui_...@apple.com Date 2022-05-05 09:40:55 -0700 (Thu, 05 May 2022) Log Message SuspendableWorkQueue::suspend should invoke callback immediately when queue is suspended https://bugs.webkit.org/show_bug.cgi?id=240070 Reviewed by Chris Dumez. Source/WTF: With current implementation, if suspend() is called when queue is suspended, the completionHandler is not invoked unitl the queue is resumed and suspended again. This might cause confusion for callers. To fix it, now SuspendableWorkQueue will invoke callback immediately when queue is already suspended. API test: WTF_SuspendableWorkQueue.SuspendTwice * wtf/SuspendableWorkQueue.cpp: (WTF::SuspendableWorkQueue::suspend): (WTF::SuspendableWorkQueue::resume): (WTF::SuspendableWorkQueue::dispatchSync): (WTF::SuspendableWorkQueue::suspendIfNeeded): * wtf/SuspendableWorkQueue.h: Tools: * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * TestWebKitAPI/Tests/WTF/SuspendableWorkQueue.cpp: Added. (TestWebKitAPI::TEST): Modified Paths trunk/Source/WTF/ChangeLog trunk/Source/WTF/wtf/SuspendableWorkQueue.cpp trunk/Source/WTF/wtf/SuspendableWorkQueue.h trunk/Tools/ChangeLog trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj Added Paths trunk/Tools/TestWebKitAPI/Tests/WTF/SuspendableWorkQueue.cpp Diff Modified: trunk/Source/WTF/ChangeLog (293841 => 293842) --- trunk/Source/WTF/ChangeLog 2022-05-05 16:34:33 UTC (rev 293841) +++ trunk/Source/WTF/ChangeLog 2022-05-05 16:40:55 UTC (rev 293842) @@ -1,3 +1,23 @@ +2022-05-05 Sihui Liu + +SuspendableWorkQueue::suspend should invoke callback immediately when queue is suspended +https://bugs.webkit.org/show_bug.cgi?id=240070 + +Reviewed by Chris Dumez. + +With current implementation, if suspend() is called when queue is suspended, the completionHandler is not +invoked unitl the queue is resumed and suspended again. This might cause confusion for callers. To fix it, +now SuspendableWorkQueue will invoke callback immediately when queue is already suspended. + +API test: WTF_SuspendableWorkQueue.SuspendTwice + +* wtf/SuspendableWorkQueue.cpp: +(WTF::SuspendableWorkQueue::suspend): +(WTF::SuspendableWorkQueue::resume): +(WTF::SuspendableWorkQueue::dispatchSync): +(WTF::SuspendableWorkQueue::suspendIfNeeded): +* wtf/SuspendableWorkQueue.h: + 2022-05-04 Kimmo Kinnunen SharedMemory::systemPageSize is redundant function Modified: trunk/Source/WTF/wtf/SuspendableWorkQueue.cpp (293841 => 293842) --- trunk/Source/WTF/wtf/SuspendableWorkQueue.cpp 2022-05-05 16:34:33 UTC (rev 293841) +++ trunk/Source/WTF/wtf/SuspendableWorkQueue.cpp 2022-05-05 16:40:55 UTC (rev 293842) @@ -44,13 +44,16 @@ ASSERT(isMainThread()); Locker suspensionLocker { m_suspensionLock }; +if (m_state == State::Suspended) +return completionHandler(); + // Last suspend function will be the one that is used. m_suspendFunction = WTFMove(suspendFunction); m_suspensionCompletionHandlers.append(WTFMove(completionHandler)); -if (m_isOrWillBeSuspended) +if (m_state == State::WillSuspend) return; -m_isOrWillBeSuspended = true; +m_state = State::WillSuspend; // Make sure queue will be suspended when there is no task scheduled on the queue. WorkQueue::dispatch([this] { suspendIfNeeded(); @@ -62,11 +65,13 @@ ASSERT(isMainThread()); Locker suspensionLocker { m_suspensionLock }; -if (!m_isOrWillBeSuspended) +if (m_state == State::Running) return; -m_isOrWillBeSuspended = false; -m_suspensionCondition.notifyOne(); +if (m_state == State::Suspended) +m_suspensionCondition.notifyOne(); + +m_state = State::Running; } void SuspendableWorkQueue::dispatch(Function&& function) @@ -92,7 +97,7 @@ // otherwise thread may be blocked. if (isMainThread()) { Locker suspensionLocker { m_suspensionLock }; -RELEASE_ASSERT(!m_isOrWillBeSuspended); +RELEASE_ASSERT(m_state == State::Running); } WorkQueue::dispatchSync(WTFMove(function)); } @@ -118,12 +123,14 @@ Locker suspensionLocker { m_suspensionLock }; auto suspendFunction = std::exchange(m_suspendFunction, { }); -if (m_isOrWillBeSuspended) -suspendFunction(); +if (m_state != State::WillSuspend) +return; +m_state = State::Suspended; +suspendFunction(); invokeAllSuspensionCompletionHandlers(); -while (m_isOrWillBeSuspended) +while (m_state != State::Running) m_suspensionCondition.wait(m_suspensionLock); } Modified: trunk/Source/WTF/wtf/SuspendableWorkQueue.h (293841 => 293842) --- trunk/Source/WTF/wtf/SuspendableWorkQueue.h 2022-05-05 16:34:33 UTC (rev 293841) +++ trunk/Source/WTF/wtf/SuspendableWorkQueue.h 2022-05-05 16:40:55 UTC (rev 293842) @@ -56,7 +56,8 @@ Lock m_suspen
[webkit-changes] [293736] trunk
Title: [293736] trunk Revision 293736 Author sihui_...@apple.com Date 2022-05-03 13:18:02 -0700 (Tue, 03 May 2022) Log Message StorageMap::removeItem may fail to remove item from map https://bugs.webkit.org/show_bug.cgi?id=239982 rdar://80891555 Reviewed by Chris Dumez. Source/WebCore: We may have updated m_impl, but we don't update iterator for removal. In this case, item is not removed from map, but currentSize is updated. The mismatch between currentSize and actual size of the map may lead to underflow and overflow in currentSize when item is added or removed later. Test: storage/domstorage/sessionstorage/window-open-remove-item.html * storage/StorageMap.cpp: (WebCore::StorageMap::removeItem): LayoutTests: * storage/domstorage/sessionstorage/resources/window-open-remove-item.html: Added. * storage/domstorage/sessionstorage/window-open-remove-item-expected.txt: Added. * storage/domstorage/sessionstorage/window-open-remove-item.html: Added. Modified Paths trunk/LayoutTests/ChangeLog trunk/Source/WebCore/ChangeLog trunk/Source/WebCore/storage/StorageMap.cpp Added Paths trunk/LayoutTests/storage/domstorage/sessionstorage/resources/window-open-remove-item.html trunk/LayoutTests/storage/domstorage/sessionstorage/window-open-remove-item-expected.txt trunk/LayoutTests/storage/domstorage/sessionstorage/window-open-remove-item.html Diff Modified: trunk/LayoutTests/ChangeLog (293735 => 293736) --- trunk/LayoutTests/ChangeLog 2022-05-03 19:15:26 UTC (rev 293735) +++ trunk/LayoutTests/ChangeLog 2022-05-03 20:18:02 UTC (rev 293736) @@ -1,3 +1,15 @@ +2022-05-03 Sihui Liu + +StorageMap::removeItem may fail to remove item from map +https://bugs.webkit.org/show_bug.cgi?id=239982 +rdar://80891555 + +Reviewed by Chris Dumez. + +* storage/domstorage/sessionstorage/resources/window-open-remove-item.html: Added. +* storage/domstorage/sessionstorage/window-open-remove-item-expected.txt: Added. +* storage/domstorage/sessionstorage/window-open-remove-item.html: Added. + 2022-05-03 Robert Jenner [ Test Gardening ] Batch remove expectations no longer needed Added: trunk/LayoutTests/storage/domstorage/sessionstorage/resources/window-open-remove-item.html (0 => 293736) --- trunk/LayoutTests/storage/domstorage/sessionstorage/resources/window-open-remove-item.html (rev 0) +++ trunk/LayoutTests/storage/domstorage/sessionstorage/resources/window-open-remove-item.html 2022-05-03 20:18:02 UTC (rev 293736) @@ -0,0 +1,15 @@ + + + + +if (sessionStorage.getItem("key") != "value") +localStorage.setItem("result", "fail"); +else { +sessionStorage.removeItem("key"); +sessionStorage.setItem("key", "newValue"); +localStorage.setItem("result", "pass"); +} + + + + \ No newline at end of file Added: trunk/LayoutTests/storage/domstorage/sessionstorage/window-open-remove-item-expected.txt (0 => 293736) --- trunk/LayoutTests/storage/domstorage/sessionstorage/window-open-remove-item-expected.txt (rev 0) +++ trunk/LayoutTests/storage/domstorage/sessionstorage/window-open-remove-item-expected.txt 2022-05-03 20:18:02 UTC (rev 293736) @@ -0,0 +1,11 @@ +Test verifies that process does not crash when item is updated in another window + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS localStorage.getItem('result') is "pass" +PASS sessionStorage.getItem('key') is "value" +PASS successfullyParsed is true + +TEST COMPLETE + Added: trunk/LayoutTests/storage/domstorage/sessionstorage/window-open-remove-item.html (0 => 293736) --- trunk/LayoutTests/storage/domstorage/sessionstorage/window-open-remove-item.html (rev 0) +++ trunk/LayoutTests/storage/domstorage/sessionstorage/window-open-remove-item.html 2022-05-03 20:18:02 UTC (rev 293736) @@ -0,0 +1,24 @@ + + + + +