Title: [219958] trunk
- Revision
- 219958
- Author
- beid...@apple.com
- Date
- 2017-07-26 13:00:02 -0700 (Wed, 26 Jul 2017)
Log Message
Add test to verify certain child processes are not launched as a side effect of enabling ResourceLoadStatistics.
https://bugs.webkit.org/show_bug.cgi?id=174851
Reviewed by Chris Dumez.
Source/WebKit:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _databaseProcessIdentifier]):
(-[WKProcessPool _pluginProcessCount]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/Plugins/PluginProcessManager.h:
(WebKit::PluginProcessManager::pluginProcesses):
Tools:
* TestWebKitAPI/Tests/WebKit2Cocoa/ResourceLoadStatistics.mm:
(TEST):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (219957 => 219958)
--- trunk/Source/WebKit/ChangeLog 2017-07-26 19:24:33 UTC (rev 219957)
+++ trunk/Source/WebKit/ChangeLog 2017-07-26 20:00:02 UTC (rev 219958)
@@ -1,3 +1,18 @@
+2017-07-26 Brady Eidson <beid...@apple.com>
+
+ Add test to verify certain child processes are not launched as a side effect of enabling ResourceLoadStatistics.
+ https://bugs.webkit.org/show_bug.cgi?id=174851
+
+ Reviewed by Chris Dumez.
+
+ * UIProcess/API/Cocoa/WKProcessPool.mm:
+ (-[WKProcessPool _databaseProcessIdentifier]):
+ (-[WKProcessPool _pluginProcessCount]):
+ * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
+
+ * UIProcess/Plugins/PluginProcessManager.h:
+ (WebKit::PluginProcessManager::pluginProcesses):
+
2017-07-26 Brian Burg <bb...@apple.com>
Remove WEB_TIMING feature flag
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm (219957 => 219958)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm 2017-07-26 19:24:33 UTC (rev 219957)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm 2017-07-26 20:00:02 UTC (rev 219958)
@@ -32,6 +32,7 @@
#import "CacheModel.h"
#import "DownloadClient.h"
#import "Logging.h"
+#import "PluginProcessManager.h"
#import "SandboxUtilities.h"
#import "UIGamepadProvider.h"
#import "WKObject.h"
@@ -399,6 +400,11 @@
return _processPool->networkProcessIdentifier();
}
+- (pid_t)_databaseProcessIdentifier
+{
+ return _processPool->databaseProcessIdentifier();
+}
+
- (void)_syncNetworkProcessCookies
{
_processPool->syncNetworkProcessCookies();
@@ -409,6 +415,15 @@
return _processPool->processes().size();
}
+- (size_t)_pluginProcessCount
+{
+#if !PLATFORM(IOS)
+ return WebKit::PluginProcessManager::singleton().pluginProcesses().size();
+#else
+ return 0;
+#endif
+}
+
+ (void)_forceGameControllerFramework
{
#if ENABLE(GAMEPAD)
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h (219957 => 219958)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h 2017-07-26 19:24:33 UTC (rev 219957)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h 2017-07-26 20:00:02 UTC (rev 219958)
@@ -77,9 +77,11 @@
// Test only.
- (pid_t)_networkProcessIdentifier WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
+- (pid_t)_databaseProcessIdentifier WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
// Test only.
- (size_t)_webProcessCount WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
+- (size_t)_pluginProcessCount WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
- (void)_syncNetworkProcessCookies WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
// Test only. Should be called before any web content processes are launched.
Modified: trunk/Source/WebKit/UIProcess/Plugins/PluginProcessManager.h (219957 => 219958)
--- trunk/Source/WebKit/UIProcess/Plugins/PluginProcessManager.h 2017-07-26 19:24:33 UTC (rev 219957)
+++ trunk/Source/WebKit/UIProcess/Plugins/PluginProcessManager.h 2017-07-26 20:00:02 UTC (rev 219958)
@@ -69,6 +69,8 @@
void updateProcessSuppressionDisabled(RefCounterEvent);
#endif
+ const Vector<RefPtr<PluginProcessProxy>>& pluginProcesses() const { return m_pluginProcesses; }
+
private:
PluginProcessManager();
Modified: trunk/Tools/ChangeLog (219957 => 219958)
--- trunk/Tools/ChangeLog 2017-07-26 19:24:33 UTC (rev 219957)
+++ trunk/Tools/ChangeLog 2017-07-26 20:00:02 UTC (rev 219958)
@@ -1,3 +1,13 @@
+2017-07-26 Brady Eidson <beid...@apple.com>
+
+ Add test to verify certain child processes are not launched as a side effect of enabling ResourceLoadStatistics.
+ https://bugs.webkit.org/show_bug.cgi?id=174851
+
+ Reviewed by Chris Dumez.
+
+ * TestWebKitAPI/Tests/WebKit2Cocoa/ResourceLoadStatistics.mm:
+ (TEST):
+
2017-07-26 Brian Burg <bb...@apple.com>
Remove WEB_TIMING feature flag
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ResourceLoadStatistics.mm (219957 => 219958)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ResourceLoadStatistics.mm 2017-07-26 19:24:33 UTC (rev 219957)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ResourceLoadStatistics.mm 2017-07-26 20:00:02 UTC (rev 219958)
@@ -27,6 +27,7 @@
#import "PlatformUtilities.h"
#import <WebKit/WKFoundation.h>
+#import <WebKit/WKProcessPoolPrivate.h>
#import <WebKit/WKWebsiteDataRecordPrivate.h>
#import <WebKit/WKWebsiteDataStorePrivate.h>
#import <wtf/RetainPtr.h>
@@ -116,5 +117,40 @@
TestWebKitAPI::Util::run(&callbackFlag);
}
+
+TEST(ResourceLoadStatistics, ChildProcessesNotLaunched)
+{
+ // Ensure the shared process pool exists so the data store operations we're about to do work with it.
+ WKProcessPool *sharedProcessPool = [WKProcessPool _sharedProcessPool];
+
+ EXPECT_EQ((pid_t)0, [sharedProcessPool _databaseProcessIdentifier]);
+ EXPECT_EQ((size_t)0, [sharedProcessPool _pluginProcessCount]);
+
+ auto *dataStore = [WKWebsiteDataStore defaultDataStore];
+ [dataStore _setResourceLoadStatisticsEnabled:NO];
+
+ NSURL *statisticsDirectoryURL = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/WebsiteData/ResourceLoadStatistics" stringByExpandingTildeInPath] isDirectory:YES];
+ NSURL *targetURL = [statisticsDirectoryURL URLByAppendingPathComponent:@"full_browsing_session_resourceLog.plist"];
+ NSURL *testResourceURL = [[NSBundle mainBundle] URLForResource:@"EmptyGrandfatheredResourceLoadStatistics" withExtension:@"plist" subdirectory:@"TestWebKitAPI.resources"];
+
+ [[NSFileManager defaultManager] createDirectoryAtURL:statisticsDirectoryURL withIntermediateDirectories:YES attributes:nil error:nil];
+ [[NSFileManager defaultManager] copyItemAtURL:testResourceURL toURL:targetURL error:nil];
+
+ EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:targetURL.path]);
+
+ static bool doneFlag;
+ [dataStore _setResourceLoadStatisticsTestingCallback:^(WKWebsiteDataStore *, NSString *message) {
+ EXPECT_TRUE([message isEqualToString:@"PopulatedWithoutGrandfathering"]);
+ doneFlag = true;
+ }];
+
+ TestWebKitAPI::Util::run(&doneFlag);
+
+ EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:targetURL.path]);
+
+ EXPECT_EQ((pid_t)0, [sharedProcessPool _databaseProcessIdentifier]);
+ EXPECT_EQ((size_t)0, [sharedProcessPool _pluginProcessCount]);
+}
+
#endif
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes