webview: add blinkfeatures attribute
authorRobo <hop2deep@gmail.com>
Thu, 21 Jan 2016 10:13:41 +0000 (15:43 +0530)
committerRobo <hop2deep@gmail.com>
Thu, 21 Jan 2016 10:13:41 +0000 (15:43 +0530)
atom/browser/lib/guest-view-manager.js
atom/renderer/lib/web-view/web-view-attributes.js
atom/renderer/lib/web-view/web-view-constants.js
docs/api/web-view-tag.md

index bf92cf8..3e71789 100644 (file)
@@ -158,7 +158,8 @@ var attachGuest = function(embedder, elementInstanceId, guestInstanceId, params)
     guestInstanceId: guestInstanceId,
     nodeIntegration: (ref1 = params.nodeintegration) != null ? ref1 : false,
     plugins: params.plugins,
-    webSecurity: !params.disablewebsecurity
+    webSecurity: !params.disablewebsecurity,
+    blinkFeatures: params.blinkfeatures
   };
   if (params.preload) {
     webPreferences.preloadURL = params.preload;
index 6a58a2b..c5d3b90 100644 (file)
@@ -288,6 +288,13 @@ class PreloadAttribute extends WebViewAttribute {
   }
 }
 
+// Attribute that specifies the blink features to be enabled.
+class BlinkFeaturesAttribute extends WebViewAttribute {
+  constructor(webViewImpl) {
+    super(webViewConstants.ATTRIBUTE_BLINKFEATURES, webViewImpl);
+  }
+}
+
 // Sets up all of the webview attributes.
 WebViewImpl.prototype.setupWebViewAttributes = function() {
   var attribute, autosizeAttributes, i, len, results;
@@ -303,6 +310,7 @@ WebViewImpl.prototype.setupWebViewAttributes = function() {
   this.attributes[webViewConstants.ATTRIBUTE_DISABLEWEBSECURITY] = new BooleanAttribute(webViewConstants.ATTRIBUTE_DISABLEWEBSECURITY, this);
   this.attributes[webViewConstants.ATTRIBUTE_ALLOWPOPUPS] = new BooleanAttribute(webViewConstants.ATTRIBUTE_ALLOWPOPUPS, this);
   this.attributes[webViewConstants.ATTRIBUTE_PRELOAD] = new PreloadAttribute(this);
+  this.attributes[webViewConstants.ATTRIBUTE_BLINKFEATURES] = new BlinkFeaturesAttribute(this);
   autosizeAttributes = [webViewConstants.ATTRIBUTE_MAXHEIGHT, webViewConstants.ATTRIBUTE_MAXWIDTH, webViewConstants.ATTRIBUTE_MINHEIGHT, webViewConstants.ATTRIBUTE_MINWIDTH];
   results = [];
   for (i = 0, len = autosizeAttributes.length; i < len; i++) {
index 4180830..de2a571 100644 (file)
@@ -16,6 +16,7 @@ module.exports = {
   ATTRIBUTE_ALLOWPOPUPS: 'allowpopups',
   ATTRIBUTE_PRELOAD: 'preload',
   ATTRIBUTE_USERAGENT: 'useragent',
+  ATTRIBUTE_BLINKFEATURES: 'blinkfeatures',
 
   // Internal attribute.
   ATTRIBUTE_INTERNALINSTANCEID: 'internalinstanceid',
index b3d94b8..a4b9c56 100644 (file)
@@ -157,6 +157,16 @@ value will fail with a DOM exception.
 
 If "on", the guest page will be allowed to open new windows.
 
+### `blinkfeatures`
+
+```html
+<webview src="https://www.github.com/" blinkfeatures="PreciseMemoryInfo, CSSVariables"></webview>
+```
+
+A list of strings which specifies the blink features to be enabled separated by `,`.
+The full list of supported feature strings can be found in the
+[setFeatureEnabledFromString][blink-feature-string] function.
+
 ## Methods
 
 The `webview` tag has the following methods:
@@ -714,3 +724,5 @@ Emitted when DevTools is closed.
 ### Event: 'devtools-focused'
 
 Emitted when DevTools is focused / opened.
+
+[blink-feature-string]: https://code.google.com/p/chromium/codesearch#chromium/src/out/Debug/gen/blink/platform/RuntimeEnabledFeatures.cpp&sq=package:chromium&type=cs&l=527