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

Reply via email to