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