Title: [180612] trunk/Tools
Revision
180612
Author
aes...@apple.com
Date
2015-02-24 20:53:43 -0800 (Tue, 24 Feb 2015)

Log Message

Teach MiniBrowser how to disable per-window web processes
https://bugs.webkit.org/show_bug.cgi?id=141988

Reviewed by Darin Adler.

* MiniBrowser/mac/AppDelegate.m:
(defaultConfiguration): Created a _WKProcessPoolConfiguration with maximumProcessCount == 1 if per-window web processes are disabled.
* MiniBrowser/mac/SettingsController.h:
* MiniBrowser/mac/SettingsController.m:
(-[SettingsController _populateMenu]): Added a new Settings menu item.
(-[SettingsController validateMenuItem:]): Validated the new Settings menu item.
(-[SettingsController togglePerWindowWebProcessesDisabled:]): Displayed an alert informing the user that MiniBrowser must be restarted for the setting to take effect.
(-[SettingsController perWindowWebProcessesDisabled]): Returned the value from user defaults.

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (180611 => 180612)


--- trunk/Tools/ChangeLog	2015-02-25 04:32:49 UTC (rev 180611)
+++ trunk/Tools/ChangeLog	2015-02-25 04:53:43 UTC (rev 180612)
@@ -1,3 +1,19 @@
+2015-02-24  Andy Estes  <aes...@apple.com>
+
+        Teach MiniBrowser how to disable per-window web processes
+        https://bugs.webkit.org/show_bug.cgi?id=141988
+
+        Reviewed by Darin Adler.
+
+        * MiniBrowser/mac/AppDelegate.m:
+        (defaultConfiguration): Created a _WKProcessPoolConfiguration with maximumProcessCount == 1 if per-window web processes are disabled.
+        * MiniBrowser/mac/SettingsController.h:
+        * MiniBrowser/mac/SettingsController.m:
+        (-[SettingsController _populateMenu]): Added a new Settings menu item.
+        (-[SettingsController validateMenuItem:]): Validated the new Settings menu item.
+        (-[SettingsController togglePerWindowWebProcessesDisabled:]): Displayed an alert informing the user that MiniBrowser must be restarted for the setting to take effect.
+        (-[SettingsController perWindowWebProcessesDisabled]): Returned the value from user defaults.
+
 2015-02-24  Alexey Proskuryakov  <a...@apple.com>
 
         Bot watcher's dashboard sometimes hits an assertion: data.num_missing === this.layoutTestResults.testsWithMissingResults.length

Modified: trunk/Tools/MiniBrowser/mac/AppDelegate.m (180611 => 180612)


--- trunk/Tools/MiniBrowser/mac/AppDelegate.m	2015-02-25 04:32:49 UTC (rev 180611)
+++ trunk/Tools/MiniBrowser/mac/AppDelegate.m	2015-02-25 04:53:43 UTC (rev 180612)
@@ -29,8 +29,10 @@
 #import "WK1BrowserWindowController.h"
 #import "WK2BrowserWindowController.h"
 #import <WebKit/WKPreferencesPrivate.h>
+#import <WebKit/WKProcessPoolPrivate.h>
 #import <WebKit/WKWebViewConfigurationPrivate.h>
 #import <WebKit/WebKit.h>
+#import <WebKit/_WKProcessPoolConfiguration.h>
 #import <WebKit/_WKWebsiteDataStore.h>
 
 enum {
@@ -66,6 +68,13 @@
         configuration = [[WKWebViewConfiguration alloc] init];
         configuration.preferences._fullScreenEnabled = YES;
         configuration.preferences._developerExtrasEnabled = YES;
+
+        if ([SettingsController shared].perWindowWebProcessesDisabled) {
+            _WKProcessPoolConfiguration *singleProcessConfiguration = [[_WKProcessPoolConfiguration alloc] init];
+            singleProcessConfiguration.maximumProcessCount = 1;
+            configuration.processPool = [[[WKProcessPool alloc] _initWithConfiguration:singleProcessConfiguration] autorelease];
+            [singleProcessConfiguration release];
+        }
     }
 
     return configuration;

Modified: trunk/Tools/MiniBrowser/mac/SettingsController.h (180611 => 180612)


--- trunk/Tools/MiniBrowser/mac/SettingsController.h	2015-02-25 04:32:49 UTC (rev 180611)
+++ trunk/Tools/MiniBrowser/mac/SettingsController.h	2015-02-25 04:53:43 UTC (rev 180612)
@@ -42,6 +42,7 @@
 @property (nonatomic, readonly) BOOL nonFastScrollableRegionOverlayVisible;
 @property (nonatomic, readonly) BOOL wheelEventHandlerRegionOverlayVisible;
 @property (nonatomic, readonly) BOOL useUISideCompositing;
+@property (nonatomic, readonly) BOOL perWindowWebProcessesDisabled;
 @property (nonatomic, readonly) BOOL subPixelCSSOMMetricsEnabled;
 @property (nonatomic, readonly) NSString *defaultURL;
 

Modified: trunk/Tools/MiniBrowser/mac/SettingsController.m (180611 => 180612)


--- trunk/Tools/MiniBrowser/mac/SettingsController.m	2015-02-25 04:32:49 UTC (rev 180611)
+++ trunk/Tools/MiniBrowser/mac/SettingsController.m	2015-02-25 04:53:43 UTC (rev 180612)
@@ -46,6 +46,8 @@
 // This default name intentionally overlaps with the key that WebKit2 checks when creating a view.
 static NSString * const UseRemoteLayerTreeDrawingAreaPreferenceKey = @"WebKit2UseRemoteLayerTreeDrawingArea";
 
+static NSString * const PerWindowWebProcessesDisabledKey = @"PerWindowWebProcessesDisabled";
+
 typedef NS_ENUM(NSInteger, DebugOverylayMenuItemTag) {
     NonFastScrollableRegionOverlayTag = 100,
     WheelEventHandlerRegionOverlayTag
@@ -107,6 +109,7 @@
 
     [self _addItemWithTitle:@"Show Tiled Scrolling Indicator" action:@selector(toggleShowTiledScrollingIndicator:) indented:YES];
     [self _addItemWithTitle:@"Use UI-Side Compositing" action:@selector(toggleUseUISideCompositing:) indented:YES];
+    [self _addItemWithTitle:@"Disable Per-Window Web Processes" action:@selector(togglePerWindowWebProcessesDisabled:) indented:YES];
 
     NSMenuItem *debugOverlaysSubmenuItem = [[NSMenuItem alloc] initWithTitle:@"Debug Overlays" action:nil keyEquivalent:@""];
     NSMenu *debugOverlaysMenu = [[NSMenu alloc] initWithTitle:@"Debug Overlays"];
@@ -148,6 +151,8 @@
         [menuItem setState:[self tiledScrollingIndicatorVisible] ? NSOnState : NSOffState];
     else if (action == @selector(toggleUseUISideCompositing:))
         [menuItem setState:[self useUISideCompositing] ? NSOnState : NSOffState];
+    else if (action == @selector(togglePerWindowWebProcessesDisabled:))
+        [menuItem setState:[self perWindowWebProcessesDisabled] ? NSOnState : NSOffState];
     else if (action == @selector(toggleEnableSubPixelCSSOMMetrics:))
         [menuItem setState:[self subPixelCSSOMMetricsEnabled] ? NSOnState : NSOffState];
     else if (action == @selector(toggleDebugOverlay:))
@@ -204,6 +209,26 @@
     return [[NSUserDefaults standardUserDefaults] boolForKey:UseRemoteLayerTreeDrawingAreaPreferenceKey];
 }
 
+- (void)togglePerWindowWebProcessesDisabled:(id)sender
+{
+    NSAlert *alert = [[NSAlert alloc] init];
+    [alert setMessageText:self.perWindowWebProcessesDisabled ? @"Are you sure you want to switch to per-window web processes?" : @"Are you sure you want to switch to a single web process?"];
+    [alert setInformativeText:@"This requires quitting and relaunching MiniBrowser. I'll do the quitting. You will have to do the relaunching."];
+    [alert addButtonWithTitle:@"Switch and Quit"];
+    [alert addButtonWithTitle:@"Cancel"];
+
+    if ([alert runModal] != NSAlertFirstButtonReturn)
+        return;
+
+    [self _toggleBooleanDefault:PerWindowWebProcessesDisabledKey];
+    [NSApp terminate:self];
+}
+
+- (BOOL)perWindowWebProcessesDisabled
+{
+    return [[NSUserDefaults standardUserDefaults] boolForKey:PerWindowWebProcessesDisabledKey];
+}
+
 - (void)toggleShowLayerBorders:(id)sender
 {
     [self _toggleBooleanDefault:LayerBordersVisiblePreferenceKey];
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to