diff --git a/atom/browser/lib/guest-view-manager.js b/atom/browser/lib/guest-view-manager.js index bf92cf80706..3e71789a560 100644 --- a/atom/browser/lib/guest-view-manager.js +++ b/atom/browser/lib/guest-view-manager.js @@ -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; diff --git a/atom/renderer/lib/web-view/web-view-attributes.js b/atom/renderer/lib/web-view/web-view-attributes.js index 6a58a2bcaf5..c5d3b901ed2 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 418083061a2..de2a571f5d5 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 b3d94b85f71..a4b9c56572c 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: @@ -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