Merge pull request #13050 from electron/3.0.0-deprecations

chore: removal of 3.0.0 deprecations
This commit is contained in:
Charles Kerr 2018-05-30 09:25:36 +02:00 committed by GitHub
commit b89fe86fa1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 76 additions and 421 deletions

View file

@ -145,9 +145,6 @@ void Screen::BuildPrototype(v8::Isolate* isolate,
.SetMethod("dipToScreenPoint", &display::win::ScreenWin::DIPToScreenPoint) .SetMethod("dipToScreenPoint", &display::win::ScreenWin::DIPToScreenPoint)
.SetMethod("screenToDipRect", &ScreenToDIPRect) .SetMethod("screenToDipRect", &ScreenToDIPRect)
.SetMethod("dipToScreenRect", &DIPToScreenRect) .SetMethod("dipToScreenRect", &DIPToScreenRect)
#endif
#if defined(OS_MACOSX)
.SetMethod("getMenuBarHeight", &Screen::getMenuBarHeight)
#endif #endif
.SetMethod("getDisplayMatching", &Screen::GetDisplayMatching); .SetMethod("getDisplayMatching", &Screen::GetDisplayMatching);
} }

View file

@ -40,10 +40,6 @@ class Screen : public mate::EventEmitter<Screen>,
display::Display GetDisplayNearestPoint(const gfx::Point& point); display::Display GetDisplayNearestPoint(const gfx::Point& point);
display::Display GetDisplayMatching(const gfx::Rect& match_rect); display::Display GetDisplayMatching(const gfx::Rect& match_rect);
#if defined(OS_MACOSX)
int getMenuBarHeight();
#endif
// display::DisplayObserver: // display::DisplayObserver:
void OnDisplayAdded(const display::Display& new_display) override; void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override; void OnDisplayRemoved(const display::Display& old_display) override;

View file

@ -1,19 +0,0 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#import <Cocoa/Cocoa.h>
#import "atom/browser/api/atom_api_screen.h"
namespace atom {
namespace api {
// TODO(codebytere): deprecated; remove in 3.0
int Screen::getMenuBarHeight() {
return [[NSApp mainMenu] menuBarHeight];
}
} // namespace api
} // namespace atom

View file

@ -821,7 +821,7 @@ void Session::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setDownloadPath", &Session::SetDownloadPath) .SetMethod("setDownloadPath", &Session::SetDownloadPath)
.SetMethod("enableNetworkEmulation", &Session::EnableNetworkEmulation) .SetMethod("enableNetworkEmulation", &Session::EnableNetworkEmulation)
.SetMethod("disableNetworkEmulation", &Session::DisableNetworkEmulation) .SetMethod("disableNetworkEmulation", &Session::DisableNetworkEmulation)
.SetMethod("_setCertificateVerifyProc", &Session::SetCertVerifyProc) .SetMethod("setCertificateVerifyProc", &Session::SetCertVerifyProc)
.SetMethod("setPermissionRequestHandler", .SetMethod("setPermissionRequestHandler",
&Session::SetPermissionRequestHandler) &Session::SetPermissionRequestHandler)
.SetMethod("clearHostResolverCache", &Session::ClearHostResolverCache) .SetMethod("clearHostResolverCache", &Session::ClearHostResolverCache)

View file

@ -40,16 +40,6 @@ struct Converter<atom::TrayIcon::HighlightMode> {
return true; return true;
} }
} }
bool highlight;
if (ConvertFromV8(isolate, val, &highlight)) {
if (highlight)
*out = atom::TrayIcon::HighlightMode::SELECTION;
else
*out = atom::TrayIcon::HighlightMode::NEVER;
return true;
}
return false; return false;
} }
}; };

View file

@ -1296,15 +1296,9 @@ void WebContents::OpenDevTools(mate::Arguments* args) {
state = "detach"; state = "detach";
} }
if (args && args->Length() == 1) { if (args && args->Length() == 1) {
bool detach = false;
mate::Dictionary options; mate::Dictionary options;
if (args->GetNext(&options)) { if (args->GetNext(&options)) {
options.Get("mode", &state); options.Get("mode", &state);
// TODO(kevinsawicki) Remove in 2.0
options.Get("detach", &detach);
if (state.empty() && detach)
state = "detach";
} }
} }
managed_web_contents()->SetDockState(state); managed_web_contents()->SetDockState(state);

View file

@ -143,10 +143,6 @@ bool NativeWindowViews::ExecuteWindowsCommand(int command_id) {
std::string command = AppCommandToString(command_id); std::string command = AppCommandToString(command_id);
NotifyWindowExecuteWindowsCommand(command); NotifyWindowExecuteWindowsCommand(command);
if (command_id == APPCOMMAND_MEDIA_PLAY_PAUSE)
// FIXME(htk3): Remove media-play_pause in 3.0
NotifyWindowExecuteWindowsCommand("media-play_pause");
return false; return false;
} }

View file

@ -232,7 +232,7 @@ void WebContentsPreferences::AppendCommandLineSwitches(
} }
// Enable blink features. // Enable blink features.
if (dict_.GetString(options::kBlinkFeatures, &s)) if (dict_.GetString(options::kEnableBlinkFeatures, &s))
command_line->AppendSwitchASCII(::switches::kEnableBlinkFeatures, s); command_line->AppendSwitchASCII(::switches::kEnableBlinkFeatures, s);
// Disable blink features. // Disable blink features.

View file

@ -517,9 +517,6 @@ mate::Handle<NativeImage> NativeImage::CreateFromBuffer(
options.Get("width", &width); options.Get("width", &width);
options.Get("height", &height); options.Get("height", &height);
options.Get("scaleFactor", &scale_factor); options.Get("scaleFactor", &scale_factor);
} else {
// TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings
args->GetNext(&scale_factor);
} }
gfx::ImageSkia image_skia; gfx::ImageSkia image_skia;

View file

@ -127,8 +127,7 @@ const char kOpenerID[] = "openerId";
const char kScrollBounce[] = "scrollBounce"; const char kScrollBounce[] = "scrollBounce";
// Enable blink features. // Enable blink features.
// TODO(kevinsawicki) Rename to enableBlinkFeatures in 2.0 const char kEnableBlinkFeatures[] = "enableBlinkFeatures";
const char kBlinkFeatures[] = "blinkFeatures";
// Disable blink features. // Disable blink features.
const char kDisableBlinkFeatures[] = "disableBlinkFeatures"; const char kDisableBlinkFeatures[] = "disableBlinkFeatures";

View file

@ -64,7 +64,7 @@ extern const char kExperimentalFeatures[];
extern const char kExperimentalCanvasFeatures[]; extern const char kExperimentalCanvasFeatures[];
extern const char kOpenerID[]; extern const char kOpenerID[];
extern const char kScrollBounce[]; extern const char kScrollBounce[];
extern const char kBlinkFeatures[]; extern const char kEnableBlinkFeatures[];
extern const char kDisableBlinkFeatures[]; extern const char kDisableBlinkFeatures[];
extern const char kNodeIntegrationInWorker[]; extern const char kNodeIntegrationInWorker[];
extern const char kWebviewTag[]; extern const char kWebviewTag[];

View file

@ -206,12 +206,6 @@ void WebFrame::SetSpellCheckProvider(mate::Arguments* args,
web_frame_->SetSpellCheckPanelHostClient(spell_check_client_.get()); web_frame_->SetSpellCheckPanelHostClient(spell_check_client_.get());
} }
void WebFrame::RegisterURLSchemeAsSecure(const std::string& scheme) {
// TODO(pfrazee): Remove 2.0
blink::SchemeRegistry::RegisterURLSchemeAsSecure(
WTF::String::FromUTF8(scheme.data(), scheme.length()));
}
void WebFrame::RegisterURLSchemeAsBypassingCSP(const std::string& scheme) { void WebFrame::RegisterURLSchemeAsBypassingCSP(const std::string& scheme) {
// Register scheme to bypass pages's Content Security Policy. // Register scheme to bypass pages's Content Security Policy.
blink::SchemeRegistry::RegisterURLSchemeAsBypassingContentSecurityPolicy( blink::SchemeRegistry::RegisterURLSchemeAsBypassingContentSecurityPolicy(
@ -243,10 +237,6 @@ void WebFrame::RegisterURLSchemeAsPrivileged(const std::string& scheme,
// Register scheme to privileged list (https, wss, data, chrome-extension) // Register scheme to privileged list (https, wss, data, chrome-extension)
WTF::String privileged_scheme( WTF::String privileged_scheme(
WTF::String::FromUTF8(scheme.data(), scheme.length())); WTF::String::FromUTF8(scheme.data(), scheme.length()));
if (secure) {
// TODO(pfrazee): Remove 2.0
blink::SchemeRegistry::RegisterURLSchemeAsSecure(privileged_scheme);
}
if (bypassCSP) { if (bypassCSP) {
blink::SchemeRegistry::RegisterURLSchemeAsBypassingContentSecurityPolicy( blink::SchemeRegistry::RegisterURLSchemeAsBypassingContentSecurityPolicy(
privileged_scheme); privileged_scheme);
@ -442,13 +432,13 @@ v8::Local<v8::Value> WebFrame::FindFrameByName(const std::string& name) const {
v8::Local<v8::Value> WebFrame::FindFrameByRoutingId(int routing_id) const { v8::Local<v8::Value> WebFrame::FindFrameByRoutingId(int routing_id) const {
content::RenderFrame* render_frame = content::RenderFrame* render_frame =
content::RenderFrame::FromRoutingID(routing_id); content::RenderFrame::FromRoutingID(routing_id);
blink::WebLocalFrame* local_frame = nullptr; blink::WebLocalFrame* local_frame = nullptr;
if (render_frame) if (render_frame)
local_frame = render_frame->GetWebFrame(); local_frame = render_frame->GetWebFrame();
if (local_frame) if (local_frame)
return mate::CreateHandle(isolate(), return mate::CreateHandle(isolate(), new WebFrame(isolate(), local_frame))
new WebFrame(isolate(), local_frame)).ToV8(); .ToV8();
else else
return v8::Null(isolate()); return v8::Null(isolate());
} }
@ -479,8 +469,6 @@ void WebFrame::BuildPrototype(v8::Isolate* isolate,
.SetMethod("attachGuest", &WebFrame::AttachGuest) .SetMethod("attachGuest", &WebFrame::AttachGuest)
.SetMethod("detachGuest", &WebFrame::DetachGuest) .SetMethod("detachGuest", &WebFrame::DetachGuest)
.SetMethod("setSpellCheckProvider", &WebFrame::SetSpellCheckProvider) .SetMethod("setSpellCheckProvider", &WebFrame::SetSpellCheckProvider)
.SetMethod("registerURLSchemeAsSecure",
&WebFrame::RegisterURLSchemeAsSecure)
.SetMethod("registerURLSchemeAsBypassingCSP", .SetMethod("registerURLSchemeAsBypassingCSP",
&WebFrame::RegisterURLSchemeAsBypassingCSP) &WebFrame::RegisterURLSchemeAsBypassingCSP)
.SetMethod("registerURLSchemeAsPrivileged", .SetMethod("registerURLSchemeAsPrivileged",

View file

@ -66,7 +66,6 @@ class WebFrame : public mate::Wrappable<WebFrame> {
bool auto_spell_correct_turned_on, bool auto_spell_correct_turned_on,
v8::Local<v8::Object> provider); v8::Local<v8::Object> provider);
void RegisterURLSchemeAsSecure(const std::string& scheme);
void RegisterURLSchemeAsBypassingCSP(const std::string& scheme); void RegisterURLSchemeAsBypassingCSP(const std::string& scheme);
void RegisterURLSchemeAsPrivileged(const std::string& scheme, void RegisterURLSchemeAsPrivileged(const std::string& scheme,
mate::Arguments* args); mate::Arguments* args);

View file

@ -309,7 +309,7 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
canvas features. Default is `false`. canvas features. Default is `false`.
* `scrollBounce` Boolean (optional) - Enables scroll bounce (rubber banding) effect on * `scrollBounce` Boolean (optional) - Enables scroll bounce (rubber banding) effect on
macOS. Default is `false`. macOS. Default is `false`.
* `blinkFeatures` String (optional) - A list of feature strings separated by `,`, like * `enableBlinkFeatures` String (optional) - A list of feature strings separated by `,`, like
`CSSVariables,KeyboardEventKey` to enable. The full list of supported feature `CSSVariables,KeyboardEventKey` to enable. The full list of supported feature
strings can be found in the [RuntimeEnabledFeatures.json5][runtime-enabled-features] strings can be found in the [RuntimeEnabledFeatures.json5][runtime-enabled-features]
file. file.

View file

@ -95,10 +95,6 @@ Returns [`Point`](structures/point.md)
The current absolute position of the mouse pointer. The current absolute position of the mouse pointer.
### `screen.getMenuBarHeight()` _macOS_
Returns `Integer` - The height of the menu bar in pixels.
### `screen.getPrimaryDisplay()` ### `screen.getPrimaryDisplay()`
Returns [`Display`](structures/display.md) - The primary display. Returns [`Display`](structures/display.md) - The primary display.

View file

@ -81,16 +81,6 @@ webFrame.setSpellCheckProvider('en-US', true, {
}) })
``` ```
### `webFrame.registerURLSchemeAsSecure(scheme)`
* `scheme` String
Registers the `scheme` as secure scheme.
Secure schemes do not trigger mixed content warnings. For example, `https` and
`data` are secure schemes because they cannot be corrupted by active network
attackers.
### `webFrame.registerURLSchemeAsBypassingCSP(scheme)` ### `webFrame.registerURLSchemeAsBypassingCSP(scheme)`
* `scheme` String * `scheme` String

View file

@ -214,10 +214,10 @@ A name by itself is given a `true` boolean value.
A preference can be set to another value by including an `=`, followed by the value. A preference can be set to another value by including an `=`, followed by the value.
Special values `yes` and `1` are interpreted as `true`, while `no` and `0` are interpreted as `false`. Special values `yes` and `1` are interpreted as `true`, while `no` and `0` are interpreted as `false`.
### `blinkfeatures` ### `enableblinkfeatures`
```html ```html
<webview src="https://www.github.com/" blinkfeatures="PreciseMemoryInfo, CSSVariables"></webview> <webview src="https://www.github.com/" enableblinkfeatures="PreciseMemoryInfo, CSSVariables"></webview>
``` ```
A list of strings which specifies the blink features to be enabled separated by `,`. A list of strings which specifies the blink features to be enabled separated by `,`.

View file

@ -1,169 +1,3 @@
# Planned Breaking API Changes (3.0)
The following list includes the APIs that will be removed in Electron 3.0.
There is no timetable for when this release will occur but deprecation
warnings will be added at least [one major version](electron-versioning.md#semver) beforehand.
## `app`
```js
// Deprecated
app.getAppMemoryInfo()
// Replace with
app.getAppMetrics()
```
## `BrowserWindow`
```js
// Deprecated
let optionsA = {webPreferences: {blinkFeatures: ''}}
let windowA = new BrowserWindow(optionsA)
// Replace with
let optionsB = {webPreferences: {enableBlinkFeatures: ''}}
let windowB = new BrowserWindow(optionsB)
// Deprecated
window.on('app-command', (e, cmd) => {
if (cmd === 'media-play_pause') {
// do something
}
})
// Replace with
window.on('app-command', (e, cmd) => {
if (cmd === 'media-play-pause') {
// do something
}
})
```
## `clipboard`
```js
// Deprecated
clipboard.readRtf()
// Replace with
clipboard.readRTF()
// Deprecated
clipboard.writeRtf()
// Replace with
clipboard.writeRTF()
// Deprecated
clipboard.readHtml()
// Replace with
clipboard.readHTML()
// Deprecated
clipboard.writeHtml()
// Replace with
clipboard.writeHTML()
```
## `crashReporter`
```js
// Deprecated
crashReporter.start({
companyName: 'Crashly',
submitURL: 'https://crash.server.com',
autoSubmit: true
})
// Replace with
crashReporter.start({
companyName: 'Crashly',
submitURL: 'https://crash.server.com',
uploadToServer: true
})
```
## `nativeImage`
```js
// Deprecated
nativeImage.createFromBuffer(buffer, 1.0)
// Replace with
nativeImage.createFromBuffer(buffer, {
scaleFactor: 1.0
})
```
## `screen`
```js
// Deprecated
screen.getMenuBarHeight()
// Replace with
screen.getPrimaryDisplay().workArea
```
## `session`
```js
// Deprecated
ses.setCertificateVerifyProc(function (hostname, certificate, callback) {
callback(true)
})
// Replace with
ses.setCertificateVerifyProc(function (request, callback) {
callback(0)
})
```
## `Tray`
```js
// Deprecated
tray.setHighlightMode(true)
// Replace with
tray.setHighlightMode('on')
// Deprecated
tray.setHighlightMode(false)
// Replace with
tray.setHighlightMode('off')
```
## `webContents`
```js
// Deprecated
webContents.openDevTools({detach: true})
// Replace with
webContents.openDevTools({mode: 'detach'})
```
## `webFrame`
```js
// Deprecated
webFrame.registerURLSchemeAsSecure('app')
// Replace with
protocol.registerStandardSchemes(['app'], {secure: true})
// Deprecated
webFrame.registerURLSchemeAsPrivileged('app', {secure: true})
// Replace with
protocol.registerStandardSchemes(['app'], {secure: true})
```
## Node Headers URL
This is the URL specified as `disturl` in a `.npmrc` file or as the `--dist-url`
command line flag when building native Node modules.
Deprecated: https://atom.io/download/atom-shell
Replace with: https://atom.io/download/electron
## `FIXME` comments
The `FIXME` string is used in code comments to denote things that should be
fixed for the 3.0 release. See
https://github.com/electron/electron/search?q=fixme
# Planned Breaking API Changes (4.0) # Planned Breaking API Changes (4.0)
The following list includes the APIs that will be removed in Electron 4.0. The following list includes the APIs that will be removed in Electron 4.0.
@ -171,6 +5,17 @@ The following list includes the APIs that will be removed in Electron 4.0.
There is no timetable for when this release will occur but deprecation There is no timetable for when this release will occur but deprecation
warnings will be added at least [one major version](electron-versioning.md#semver) beforehand. warnings will be added at least [one major version](electron-versioning.md#semver) beforehand.
## `webFrame`
```js
// Deprecated
webFrame.registerURLSchemeAsPrivileged('app', {secure: true})
// Replace with
protocol.registerStandardSchemes(['app'], {secure: true})
```
*Nota Bene:* Before we can remove this we need to update all of the relevant specs to `protocol.registerStandardSchemes(['app'], {secure: true})`.
## `app.makeSingleInstance` ## `app.makeSingleInstance`
```js ```js
@ -192,4 +37,10 @@ app.on('second-instance', function (argv, cwd) {
app.releaseSingleInstance() app.releaseSingleInstance()
// Replace with // Replace with
app.releaseSingleInstanceLock() app.releaseSingleInstanceLock()
``` ```
## `FIXME` comments
The `FIXME` string is used in code comments to denote things that should be
fixed for the 3.0 release. See
https://github.com/electron/electron/search?q=fixme

View file

@ -78,7 +78,7 @@ improve the security of your application.
7. [Override and disable `eval`](#7-override-and-disable-eval), which allows strings to be executed as code. 7. [Override and disable `eval`](#7-override-and-disable-eval), which allows strings to be executed as code.
8. [Do not set `allowRunningInsecureContent` to `true`](#8-do-not-set-allowrunninginsecurecontent-to-true) 8. [Do not set `allowRunningInsecureContent` to `true`](#8-do-not-set-allowrunninginsecurecontent-to-true)
9. [Do not enable experimental features](#9-do-not-enable-experimental-features) 9. [Do not enable experimental features](#9-do-not-enable-experimental-features)
10. [Do not use `blinkFeatures`](#10-do-not-use-blinkfeatures) 10. [Do not use `enableBlinkFeatures`](#10-do-not-use-enableblinkfeatures)
11. [WebViews: Do not use `allowpopups`](#11-do-not-use-allowpopups) 11. [WebViews: Do not use `allowpopups`](#11-do-not-use-allowpopups)
12. [WebViews: Verify the options and params of all `<webview>` tags](#12-verify-webview-options-before-creation) 12. [WebViews: Verify the options and params of all `<webview>` tags](#12-verify-webview-options-before-creation)
@ -452,12 +452,12 @@ const mainWindow = new BrowserWindow({})
``` ```
## 10) Do Not Use `blinkFeatures` ## 10) Do Not Use `enableBlinkFeatures`
_Recommendation is Electron's default_ _Recommendation is Electron's default_
Blink is the name of the rendering engine behind Chromium. As with Blink is the name of the rendering engine behind Chromium. As with
`experimentalFeatures`, the `blinkFeatures` property allows developers to `experimentalFeatures`, the `enableBlinkFeatures` property allows developers to
enable features that have been disabled by default. enable features that have been disabled by default.
### Why? ### Why?
@ -473,7 +473,7 @@ no circumstances should you enable features speculatively.
// Bad // Bad
const mainWindow = new BrowserWindow({ const mainWindow = new BrowserWindow({
webPreferences: { webPreferences: {
blinkFeatures: ['ExecCommandInJavaScript'] enableBlinkFeatures: ['ExecCommandInJavaScript']
} }
}) })
``` ```

View file

@ -152,7 +152,6 @@
'atom/browser/api/atom_api_render_process_preferences.h', 'atom/browser/api/atom_api_render_process_preferences.h',
'atom/browser/api/atom_api_screen.cc', 'atom/browser/api/atom_api_screen.cc',
'atom/browser/api/atom_api_screen.h', 'atom/browser/api/atom_api_screen.h',
'atom/browser/api/atom_api_screen_mac.mm',
'atom/browser/api/atom_api_session.cc', 'atom/browser/api/atom_api_session.cc',
'atom/browser/api/atom_api_session.h', 'atom/browser/api/atom_api_session.h',
'atom/browser/api/atom_api_system_preferences.cc', 'atom/browser/api/atom_api_system_preferences.cc',

View file

@ -1,17 +1,8 @@
const {EventEmitter} = require('events') const {EventEmitter} = require('events')
const {deprecate} = require('electron')
const {screen, Screen} = process.atomBinding('screen') const {screen, Screen} = process.atomBinding('screen')
// Screen is an EventEmitter. // Screen is an EventEmitter.
Object.setPrototypeOf(Screen.prototype, EventEmitter.prototype) Object.setPrototypeOf(Screen.prototype, EventEmitter.prototype)
EventEmitter.call(screen) EventEmitter.call(screen)
const nativeFn = screen.getMenuBarHeight
screen.getMenuBarHeight = function () {
if (!process.noDeprecations) {
deprecate.warn('screen.getMenuBarHeight', 'screen.getPrimaryDisplay().workArea')
}
return nativeFn.call(this)
}
module.exports = screen module.exports = screen

View file

@ -20,18 +20,3 @@ Object.setPrototypeOf(Cookies.prototype, EventEmitter.prototype)
Session.prototype._init = function () { Session.prototype._init = function () {
app.emit('session-created', this) app.emit('session-created', this)
} }
Session.prototype.setCertificateVerifyProc = function (verifyProc) {
if (verifyProc != null && verifyProc.length > 2) {
// TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings
this._setCertificateVerifyProc(({hostname, certificate, verificationResult}, cb) => {
verifyProc(hostname, certificate, (result) => {
// Disabled due to false positive in StandardJS
// eslint-disable-next-line standard/no-callback-literal
cb(result ? 0 : -2)
})
})
} else {
this._setCertificateVerifyProc(verifyProc)
}
}

View file

@ -1,20 +1,6 @@
const {EventEmitter} = require('events') const {EventEmitter} = require('events')
const {deprecate} = require('electron')
const {Tray} = process.atomBinding('tray') const {Tray} = process.atomBinding('tray')
Object.setPrototypeOf(Tray.prototype, EventEmitter.prototype) Object.setPrototypeOf(Tray.prototype, EventEmitter.prototype)
// TODO(codebytere): remove in 3.0
const nativeSetHighlightMode = Tray.prototype.setHighlightMode
Tray.prototype.setHighlightMode = function (param) {
if (!process.noDeprecations && typeof param === 'boolean') {
if (param) {
deprecate.warn('tray.setHighlightMode(true)', `tray.setHighlightMode("on")`)
} else {
deprecate.warn('tray.setHighlightMode(false)', `tray.setHighlightMode("off")`)
}
}
return nativeSetHighlightMode.call(this, param)
}
module.exports = Tray module.exports = Tray

View file

@ -165,14 +165,6 @@ for (const method of webFrameMethodsWithResult) {
} }
} }
const nativeOpenDevTools = WebContents.prototype.openDevTools
WebContents.prototype.openDevTools = function (params) {
if (!process.noDeprecations && params && 'detach' in params) {
deprecate.warn('webContents.openDevTools({detach: true})', `webContents.openDevTools({mode: 'detach'})`)
}
return nativeOpenDevTools.call(this, params)
}
// Make sure WebContents::executeJavaScript would run the code only when the // Make sure WebContents::executeJavaScript would run the code only when the
// WebContents has been loaded. // WebContents has been loaded.
WebContents.prototype.executeJavaScript = function (code, hasUserGesture, callback) { WebContents.prototype.executeJavaScript = function (code, hasUserGesture, callback) {

View file

@ -217,7 +217,7 @@ const attachGuest = function (event, elementInstanceId, guestInstanceId, params)
plugins: params.plugins, plugins: params.plugins,
zoomFactor: embedder._getZoomFactor(), zoomFactor: embedder._getZoomFactor(),
webSecurity: !params.disablewebsecurity, webSecurity: !params.disablewebsecurity,
blinkFeatures: params.blinkfeatures, enableBlinkFeatures: params.blinkfeatures,
disableBlinkFeatures: params.disableblinkfeatures disableBlinkFeatures: params.disableblinkfeatures
} }

View file

@ -2,41 +2,8 @@ if (process.platform === 'linux' && process.type === 'renderer') {
// On Linux we could not access clipboard in renderer process. // On Linux we could not access clipboard in renderer process.
module.exports = require('electron').remote.clipboard module.exports = require('electron').remote.clipboard
} else { } else {
const {deprecate} = require('electron')
const clipboard = process.atomBinding('clipboard') const clipboard = process.atomBinding('clipboard')
// TODO(codebytere): remove in 3.0
clipboard.readHtml = function () {
if (!process.noDeprecations) {
deprecate.warn('clipboard.readHtml', 'clipboard.readHTML')
}
return clipboard.readHTML()
}
// TODO(codebytere): remove in 3.0
clipboard.writeHtml = function () {
if (!process.noDeprecations) {
deprecate.warn('clipboard.writeHtml', 'clipboard.writeHTML')
}
return clipboard.writeHTML()
}
// TODO(codebytere): remove in 3.0
clipboard.readRtf = function () {
if (!process.noDeprecations) {
deprecate.warn('clipboard.readRtf', 'clipboard.writeRTF')
}
return clipboard.readRTF()
}
// TODO(codebytere): remove in 3.0
clipboard.writeRtf = function () {
if (!process.noDeprecations) {
deprecate.warn('clipboard.writeRtf', 'clipboard.writeRTF')
}
return clipboard.writeRTF()
}
// Read/write to find pasteboard over IPC since only main process is notified // Read/write to find pasteboard over IPC since only main process is notified
// of changes // of changes
if (process.platform === 'darwin' && process.type === 'renderer') { if (process.platform === 'darwin' && process.type === 'renderer') {

View file

@ -4,7 +4,7 @@ const {spawn} = require('child_process')
const os = require('os') const os = require('os')
const path = require('path') const path = require('path')
const electron = require('electron') const electron = require('electron')
const {app, deprecate} = process.type === 'browser' ? electron : electron.remote const {app} = process.type === 'browser' ? electron : electron.remote
const binding = process.atomBinding('crash_reporter') const binding = process.atomBinding('crash_reporter')
class CrashReporter { class CrashReporter {
@ -21,12 +21,7 @@ class CrashReporter {
} = options } = options
if (uploadToServer == null) { if (uploadToServer == null) {
if (options.autoSubmit) { uploadToServer = true
deprecate.warn('autoSubmit', 'uploadToServer')
uploadToServer = options.autoSubmit
} else {
uploadToServer = true
}
} }
if (ignoreSystemCrashHandler == null) ignoreSystemCrashHandler = false if (ignoreSystemCrashHandler == null) ignoreSystemCrashHandler = false

View file

@ -31,7 +31,7 @@ const {
warnAboutDisabledWebSecurity, warnAboutDisabledWebSecurity,
warnAboutInsecureContentAllowed, warnAboutInsecureContentAllowed,
warnAboutExperimentalFeatures, warnAboutExperimentalFeatures,
warnAboutBlinkFeatures, warnAboutEnableBlinkFeatures,
warnAboutInsecureResources, warnAboutInsecureResources,
warnAboutInsecureCSP, warnAboutInsecureCSP,
warnAboutAllowedPopups, warnAboutAllowedPopups,
@ -177,7 +177,7 @@ window.addEventListener('load', function loadHandler () {
warnAboutInsecureResources() warnAboutInsecureResources()
warnAboutInsecureContentAllowed() warnAboutInsecureContentAllowed()
warnAboutExperimentalFeatures() warnAboutExperimentalFeatures()
warnAboutBlinkFeatures() warnAboutEnableBlinkFeatures()
warnAboutInsecureCSP() warnAboutInsecureCSP()
warnAboutAllowedPopups() warnAboutAllowedPopups()
} }

View file

@ -91,9 +91,9 @@ const getWebPreferences = function () {
} }
} }
const moreInformation = '\nFor more information and help, consult ' + const moreInformation = `\nFor more information and help, consult
'https://electronjs.org/docs/tutorial/security.\n' + https://electronjs.org/docs/tutorial/security.\n This warning will not show up
'This warning will not show up once the app is packaged.' once the app is packaged.`
module.exports = { module.exports = {
shouldLogSecurityWarnings, shouldLogSecurityWarnings,
@ -119,11 +119,10 @@ module.exports = {
return return
} }
let warning = 'This renderer process loads resources using insecure protocols. ' + const warning = `This renderer process loads resources using insecure
'This exposes users of this app to unnecessary security risks. ' + protocols.This exposes users of this app to unnecessary security risks.
'Consider loading the following resources over HTTPS or FTPS. \n' + Consider loading the following resources over HTTPS or FTPS. \n ${resources}
resources + '\n' + \n ${moreInformation}`
moreInformation
console.warn('%cElectron Security Warning (Insecure Resources)', console.warn('%cElectron Security Warning (Insecure Resources)',
'font-weight: bold;', warning) 'font-weight: bold;', warning)
@ -137,10 +136,9 @@ module.exports = {
*/ */
warnAboutNodeWithRemoteContent: () => { warnAboutNodeWithRemoteContent: () => {
if (getIsRemoteProtocol()) { if (getIsRemoteProtocol()) {
let warning = 'This renderer process has Node.js integration enabled ' + const warning = `This renderer process has Node.js integration enabled
'and attempted to load remote content. This exposes users of this app to severe ' + and attempted to load remote content. This exposes users of this app to
'security risks.\n' + severe security risks.\n ${moreInformation}`
moreInformation
console.warn('%cElectron Security Warning (Node.js Integration with Remote Content)', console.warn('%cElectron Security Warning (Node.js Integration with Remote Content)',
'font-weight: bold;', warning) 'font-weight: bold;', warning)
@ -162,9 +160,8 @@ module.exports = {
const webPreferences = getWebPreferences() const webPreferences = getWebPreferences()
if (!webPreferences || webPreferences.webSecurity !== false) return if (!webPreferences || webPreferences.webSecurity !== false) return
let warning = 'This renderer process has "webSecurity" disabled. ' + const warning = `This renderer process has "webSecurity" disabled. This
'This exposes users of this app to severe security risks.\n' + exposes users of this app to severe security risks.\n ${moreInformation}`
moreInformation
console.warn('%cElectron Security Warning (Disabled webSecurity)', console.warn('%cElectron Security Warning (Disabled webSecurity)',
'font-weight: bold;', warning) 'font-weight: bold;', warning)
@ -180,10 +177,9 @@ module.exports = {
*/ */
warnAboutInsecureCSP: () => { warnAboutInsecureCSP: () => {
if (isUnsafeEvalEnabled()) { if (isUnsafeEvalEnabled()) {
let warning = 'This renderer process has either no Content Security Policy set ' + const warning = `This renderer process has either no Content Security
'or a policy with "unsafe-eval" enabled. This exposes users of this ' + Policy set or a policy with "unsafe-eval" enabled. This exposes users of
'app to unnecessary security risks.\n' + this app to unnecessary security risks.\n ${moreInformation}`
moreInformation
console.warn('%cElectron Security Warning (Insecure Content-Security-Policy)', console.warn('%cElectron Security Warning (Insecure Content-Security-Policy)',
'font-weight: bold;', warning) 'font-weight: bold;', warning)
@ -199,9 +195,9 @@ module.exports = {
const webPreferences = getWebPreferences() const webPreferences = getWebPreferences()
if (!webPreferences || !webPreferences.allowRunningInsecureContent) return if (!webPreferences || !webPreferences.allowRunningInsecureContent) return
let warning = 'This renderer process has "allowRunningInsecureContent" ' + const warning = `This renderer process has "allowRunningInsecureContent"
'enabled. This exposes users of this app to severe security risks.\n' + enabled. This exposes users of this app to severe security risks.\n
moreInformation ${moreInformation}`
console.warn('%cElectron Security Warning (allowRunningInsecureContent)', console.warn('%cElectron Security Warning (allowRunningInsecureContent)',
'font-weight: bold;', warning) 'font-weight: bold;', warning)
@ -219,33 +215,32 @@ module.exports = {
return return
} }
let warning = 'This renderer process has "experimentalFeatures" ' + const warning = `This renderer process has "experimentalFeatures" enabled.
'enabled. This exposes users of this app to some security risk. ' + This exposes users of this app to some security risk. If you do not need
'If you do not need this feature, you should disable it.\n' + this feature, you should disable it.\n ${moreInformation}`
moreInformation
console.warn('%cElectron Security Warning (experimentalFeatures)', console.warn('%cElectron Security Warning (experimentalFeatures)',
'font-weight: bold;', warning) 'font-weight: bold;', warning)
}, },
/** /**
* #10 on the checklist: Do not use blinkFeatures * #10 on the checklist: Do not use enableBlinkFeatures
* *
* Logs a warning message about blinkFeatures * Logs a warning message about enableBlinkFeatures
*/ */
warnAboutBlinkFeatures: () => { warnAboutEnableBlinkFeatures: () => {
const webPreferences = getWebPreferences() const webPreferences = getWebPreferences()
if (!webPreferences || !webPreferences.blinkFeatures || if (webPreferences === null ||
(webPreferences.blinkFeatures.length && webPreferences.blinkFeatures.length === 0)) { !webPreferences.hasOwnProperty('enableBlinkFeatures') ||
webPreferences.enableBlinkFeatures.length === 0) {
return return
} }
let warning = 'This renderer process has additional "blinkFeatures" ' + const warning = `This renderer process has additional "enableBlinkFeatures"
'enabled. This exposes users of this app to some security risk. ' + enabled. This exposes users of this app to some security risk. If you do not
'If you do not need this feature, you should disable it.\n' + need this feature, you should disable it.\n ${moreInformation}`
moreInformation
console.warn('%cElectron Security Warning (blinkFeatures)', console.warn('%cElectron Security Warning (enableBlinkFeatures)',
'font-weight: bold;', warning) 'font-weight: bold;', warning)
}, },
@ -262,10 +257,10 @@ module.exports = {
return return
} }
let warning = 'A <webview> has "allowpopups" set to true. ' + const warning = `A <webview> has "allowpopups" set to true. This exposes
'This exposes users of this app to some security risk, since popups are just ' + users of this app to some security risk, since popups are just
'BrowserWindows. If you do not need this feature, you should disable it.\n' + BrowserWindows. If you do not need this feature, you should disable it.\n
moreInformation ${moreInformation}`
console.warn('%cElectron Security Warning (allowpopups)', console.warn('%cElectron Security Warning (allowpopups)',
'font-weight: bold;', warning) 'font-weight: bold;', warning)

View file

@ -13,7 +13,7 @@
"dugite": "^1.45.0", "dugite": "^1.45.0",
"electabul": "~0.0.4", "electabul": "~0.0.4",
"electron-docs-linter": "^2.3.4", "electron-docs-linter": "^2.3.4",
"electron-typescript-definitions": "^1.3.4", "electron-typescript-definitions": "^1.3.5",
"github": "^9.2.0", "github": "^9.2.0",
"husky": "^0.14.3", "husky": "^0.14.3",
"lint": "^1.1.2", "lint": "^1.1.2",

View file

@ -587,35 +587,6 @@ describe('session module', () => {
w.loadURL(`https://127.0.0.1:${server.address().port}`) w.loadURL(`https://127.0.0.1:${server.address().port}`)
}) })
describe('deprecated function signature', () => {
it('supports accepting the request', (done) => {
session.defaultSession.setCertificateVerifyProc((hostname, certificate, callback) => {
assert.equal(hostname, '127.0.0.1')
callback(true)
})
w.webContents.once('did-finish-load', () => {
assert.equal(w.webContents.getTitle(), 'hello')
done()
})
w.loadURL(`https://127.0.0.1:${server.address().port}`)
})
it('supports rejecting the request', (done) => {
session.defaultSession.setCertificateVerifyProc((hostname, certificate, callback) => {
assert.equal(hostname, '127.0.0.1')
callback(false)
})
const url = `https://127.0.0.1:${server.address().port}`
w.webContents.once('did-finish-load', () => {
assert.equal(w.webContents.getTitle(), url)
done()
})
w.loadURL(url)
})
})
it('rejects the request when the callback is called with -2', (done) => { it('rejects the request when the callback is called with -2', (done) => {
session.defaultSession.setCertificateVerifyProc(({hostname, certificate, verificationResult}, callback) => { session.defaultSession.setCertificateVerifyProc(({hostname, certificate, verificationResult}, callback) => {
assert.equal(hostname, '127.0.0.1') assert.equal(hostname, '127.0.0.1')

View file

@ -133,16 +133,16 @@ describe('security warnings', () => {
w.loadURL(`http://127.0.0.1:8881/base-page-security.html`) w.loadURL(`http://127.0.0.1:8881/base-page-security.html`)
}) })
it('should warn about blinkFeatures', (done) => { it('should warn about enableBlinkFeatures', (done) => {
w = new BrowserWindow({ w = new BrowserWindow({
show: false, show: false,
webPreferences: { webPreferences: {
blinkFeatures: ['my-cool-feature'], enableBlinkFeatures: ['my-cool-feature'],
nodeIntegration: false nodeIntegration: false
} }
}) })
w.webContents.once('console-message', (e, level, message) => { w.webContents.once('console-message', (e, level, message) => {
assert(message.includes('blinkFeatures'), message) assert(message.includes('enableBlinkFeatures'), message)
done() done()
}) })