Merge pull request #13050 from electron/3.0.0-deprecations
chore: removal of 3.0.0 deprecations
This commit is contained in:
commit
b89fe86fa1
32 changed files with 76 additions and 421 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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[];
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 `,`.
|
||||||
|
|
|
@ -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
|
|
@ -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']
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
|
|
@ -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',
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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') {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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')
|
||||||
|
|
|
@ -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()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue