Title: [204397] trunk/Tools
- Revision
- 204397
- Author
- [email protected]
- Date
- 2016-08-11 17:35:21 -0700 (Thu, 11 Aug 2016)
Log Message
Add WK2 ExperimentalFeature support to MiniBrowser.
https://bugs.webkit.org/show_bug.cgi?id=160788
Reviewed by Alex Christensen.
* MiniBrowser/mac/AppDelegate.h:
* MiniBrowser/mac/AppDelegate.m:
(defaultConfiguration):
(defaultPreferences):
* MiniBrowser/mac/SettingsController.m:
(-[SettingsController _populateMenu]):
(-[SettingsController validateMenuItem:]):
(-[SettingsController toggleExperimentalFeature:]):
Modified Paths
Diff
Modified: trunk/Tools/ChangeLog (204396 => 204397)
--- trunk/Tools/ChangeLog 2016-08-12 00:35:18 UTC (rev 204396)
+++ trunk/Tools/ChangeLog 2016-08-12 00:35:21 UTC (rev 204397)
@@ -1,3 +1,20 @@
+2016-08-11 Brady Eidson <[email protected]>
+
+ Add WK2 ExperimentalFeature support to MiniBrowser.
+ https://bugs.webkit.org/show_bug.cgi?id=160788
+
+ Reviewed by Alex Christensen.
+
+ * MiniBrowser/mac/AppDelegate.h:
+ * MiniBrowser/mac/AppDelegate.m:
+ (defaultConfiguration):
+ (defaultPreferences):
+
+ * MiniBrowser/mac/SettingsController.m:
+ (-[SettingsController _populateMenu]):
+ (-[SettingsController validateMenuItem:]):
+ (-[SettingsController toggleExperimentalFeature:]):
+
2016-08-11 Aakash Jain <[email protected]>
Keep EWS logs for longer
Modified: trunk/Tools/MiniBrowser/mac/AppDelegate.h (204396 => 204397)
--- trunk/Tools/MiniBrowser/mac/AppDelegate.h 2016-08-12 00:35:18 UTC (rev 204396)
+++ trunk/Tools/MiniBrowser/mac/AppDelegate.h 2016-08-12 00:35:21 UTC (rev 204397)
@@ -44,3 +44,7 @@
#endif
@end
+
+#if WK_API_ENABLED
+WKPreferences *defaultPreferences();
+#endif
Modified: trunk/Tools/MiniBrowser/mac/AppDelegate.m (204396 => 204397)
--- trunk/Tools/MiniBrowser/mac/AppDelegate.m 2016-08-12 00:35:18 UTC (rev 204396)
+++ trunk/Tools/MiniBrowser/mac/AppDelegate.m 2016-08-12 00:35:21 UTC (rev 204397)
@@ -35,6 +35,7 @@
#import <WebKit/WKWebViewConfigurationPrivate.h>
#import <WebKit/WKWebsiteDataStorePrivate.h>
#import <WebKit/WebKit.h>
+#import <WebKit/_WKExperimentalFeature.h>
#import <WebKit/_WKProcessPoolConfiguration.h>
#import <WebKit/_WKUserContentExtensionStore.h>
@@ -81,6 +82,12 @@
configuration.processPool = [[[WKProcessPool alloc] _initWithConfiguration:singleProcessConfiguration] autorelease];
[singleProcessConfiguration release];
}
+
+ NSArray<_WKExperimentalFeature *> *features = [WKPreferences _experimentalFeatures];
+ for (_WKExperimentalFeature *feature in features) {
+ BOOL enabled = [[NSUserDefaults standardUserDefaults] boolForKey:feature.key];
+ [configuration.preferences _setEnabled:enabled forFeature:feature];
+ }
}
configuration.suppressesIncrementalRendering = [SettingsController shared].incrementalRenderingSuppressed;
@@ -87,6 +94,12 @@
configuration.websiteDataStore._resourceLoadStatisticsEnabled = [SettingsController shared].resourceLoadStatisticsEnabled;
return configuration;
}
+
+WKPreferences *defaultPreferences()
+{
+ return defaultConfiguration().preferences;
+}
+
#endif
Modified: trunk/Tools/MiniBrowser/mac/SettingsController.m (204396 => 204397)
--- trunk/Tools/MiniBrowser/mac/SettingsController.m 2016-08-12 00:35:18 UTC (rev 204396)
+++ trunk/Tools/MiniBrowser/mac/SettingsController.m 2016-08-12 00:35:21 UTC (rev 204397)
@@ -27,6 +27,8 @@
#import "AppDelegate.h"
#import "BrowserWindowController.h"
+#import <WebKit/WKPreferencesPrivate.h>
+#import <WebKit/_WKExperimentalFeature.h>
static NSString * const defaultURL = @"http://www.webkit.org/";
static NSString * const DefaultURLPreferenceKey = @"DefaultURL";
@@ -55,7 +57,8 @@
typedef NS_ENUM(NSInteger, DebugOverylayMenuItemTag) {
NonFastScrollableRegionOverlayTag = 100,
- WheelEventHandlerRegionOverlayTag
+ WheelEventHandlerRegionOverlayTag,
+ ExperimentalFeatureTag,
};
@implementation SettingsController
@@ -140,6 +143,24 @@
[_menu addItem:debugOverlaysSubmenuItem];
[debugOverlaysSubmenuItem release];
+ NSMenuItem *experimentalFeaturesSubmenuItem = [[NSMenuItem alloc] initWithTitle:@"Experimental Features" action:nil keyEquivalent:@""];
+ NSMenu *experimentalFeaturesMenu = [[NSMenu alloc] initWithTitle:@"Experimental Features"];
+ [experimentalFeaturesSubmenuItem setSubmenu:experimentalFeaturesMenu];
+
+ NSArray<_WKExperimentalFeature *> *features = [WKPreferences _experimentalFeatures];
+
+ for (_WKExperimentalFeature *feature in features) {
+ NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:feature.name action:@selector(toggleExperimentalFeature:) keyEquivalent:@""];
+ item.representedObject = feature;
+
+ [item setTag:ExperimentalFeatureTag];
+ [item setTarget:self];
+ [experimentalFeaturesMenu addItem:[item autorelease]];
+ }
+
+ [_menu addItem:experimentalFeaturesSubmenuItem];
+ [experimentalFeaturesSubmenuItem release];
+
[self _addHeaderWithTitle:@"WebKit1-only Settings"];
[self _addItemWithTitle:@"Enable Subpixel CSSOM Metrics" action:@selector(toggleEnableSubPixelCSSOMMetrics:) indented:YES];
}
@@ -179,6 +200,11 @@
else if (action == @selector(toggleDebugOverlay:))
[menuItem setState:[self debugOverlayVisible:menuItem] ? NSOnState : NSOffState];
+ if (menuItem.tag == ExperimentalFeatureTag) {
+ _WKExperimentalFeature *feature = menuItem.representedObject;
+ [menuItem setState:[defaultPreferences() _isEnabledForFeature:feature] ? NSOnState : NSOffState];
+ }
+
return YES;
}
@@ -369,6 +395,17 @@
[self _toggleBooleanDefault:preferenceKey];
}
+- (void)toggleExperimentalFeature:(id)sender
+{
+ _WKExperimentalFeature *feature = ((NSMenuItem *)sender).representedObject;
+ WKPreferences *preferences = defaultPreferences();
+
+ BOOL currentlyEnabled = [preferences _isEnabledForFeature:feature];
+ [preferences _setEnabled:!currentlyEnabled forFeature:feature];
+
+ [[NSUserDefaults standardUserDefaults] setBool:!currentlyEnabled forKey:feature.key];
+}
+
- (BOOL)debugOverlayVisible:(NSMenuItem *)menuItem
{
NSString *preferenceKey = [self preferenceKeyForRegionOverlayTag:[menuItem tag]];
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes