diff --git a/atom/browser/lib/guest-view-manager.js b/atom/browser/lib/guest-view-manager.js index d0fed4b80600..40f59691e7a1 100644 --- a/atom/browser/lib/guest-view-manager.js +++ b/atom/browser/lib/guest-view-manager.js @@ -156,7 +156,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; diff --git a/atom/renderer/lib/web-view/web-view-attributes.js b/atom/renderer/lib/web-view/web-view-attributes.js index 43b4c6b2ad8f..4ad4bd725012 100644 --- a/atom/renderer/lib/web-view/web-view-attributes.js +++ b/atom/renderer/lib/web-view/web-view-attributes.js @@ -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++) { diff --git a/atom/renderer/lib/web-view/web-view-constants.js b/atom/renderer/lib/web-view/web-view-constants.js index 418083061a26..de2a571f5d5f 100644 --- a/atom/renderer/lib/web-view/web-view-constants.js +++ b/atom/renderer/lib/web-view/web-view-constants.js @@ -16,6 +16,7 @@ module.exports = { ATTRIBUTE_ALLOWPOPUPS: 'allowpopups', ATTRIBUTE_PRELOAD: 'preload', ATTRIBUTE_USERAGENT: 'useragent', + ATTRIBUTE_BLINKFEATURES: 'blinkfeatures', // Internal attribute. ATTRIBUTE_INTERNALINSTANCEID: 'internalinstanceid', diff --git a/docs/api/web-view-tag.md b/docs/api/web-view-tag.md index c6fef87fc35e..9cb8f49af352 100644 --- a/docs/api/web-view-tag.md +++ b/docs/api/web-view-tag.md @@ -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 + +``` + +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: @@ -725,3 +735,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