[webkit-changes] [295596] trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp

2022-06-16 Thread sihui_liu
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

2022-06-13 Thread sihui_liu
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())
 

[webkit-changes] [295254] trunk/Source/WebKit/UIProcess/ios/ProcessAssertionIOS.mm

2022-06-03 Thread sihui_liu
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

2022-06-02 Thread sihui_liu
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])
 

[webkit-changes] [295056] trunk

2022-05-31 Thread sihui_liu
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 

[webkit-changes] [294949] trunk/Source/WebCore

2022-05-27 Thread sihui_liu
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

2022-05-25 Thread sihui_liu
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

2022-05-25 Thread sihui_liu
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)

--- 

[webkit-changes] [294802] trunk/Source/WebKit

2022-05-25 Thread sihui_liu
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: 

[webkit-changes] [294670] trunk/Source/WebKit/UIProcess

2022-05-23 Thread sihui_liu
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:]) {
@@ -661,15 +666,20 @@
 return path;
 }
 
-String WebsiteDataStore::parentBundleDirectory()
+String WebsiteDataStore::parentBundleDirectory() const
 {

[webkit-changes] [294562] trunk/Source/WebKit/NetworkProcess

2022-05-20 Thread sihui_liu
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: 

[webkit-changes] [294469] trunk/Source/WebKit/UIProcess

2022-05-19 Thread sihui_liu
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:]) {
-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:]) {
-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

2022-05-18 Thread sihui_liu
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)
+++ 

[webkit-changes] [294381] trunk/Source/WebKit/UIProcess

2022-05-17 Thread sihui_liu
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 (_process->websiteDataStore() != _page.websiteDataStore())
-m_process->processPool().pageBeginUsingWebsiteDataStore(m_page.identifier(), m_process->websiteDataStore());

[webkit-changes] [294124] trunk/Source/WebCore

2022-05-12 Thread sihui_liu
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

2022-05-11 Thread sihui_liu
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

2022-05-05 Thread sihui_liu
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 

[webkit-changes] [293736] trunk

2022-05-03 Thread sihui_liu
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 @@
+
+
+
+
+