Skip to content

Commit ccef805

Browse files
committed
Add API for custom handling of deprecations
1 parent 175449f commit ccef805

File tree

5 files changed

+58
-1
lines changed

5 files changed

+58
-1
lines changed

atom/common/api/lib/deprecate.js

+13-1
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,13 @@ deprecate.warn = function(oldName, newName) {
8888
return deprecate.log(oldName + " is deprecated. Use " + newName + " instead.");
8989
};
9090

91+
var deprecationHandler = null;
92+
9193
// Print deprecation message.
9294
deprecate.log = function(message) {
93-
if (process.throwDeprecation) {
95+
if (typeof deprecationHandler === 'function') {
96+
deprecationHandler(message);
97+
} else if (process.throwDeprecation) {
9498
throw new Error(message);
9599
} else if (process.traceDeprecation) {
96100
return console.trace(message);
@@ -99,4 +103,12 @@ deprecate.log = function(message) {
99103
}
100104
};
101105

106+
deprecate.setHandler = function(handler) {
107+
deprecationHandler = handler;
108+
};
109+
110+
deprecate.getHandler = function() {
111+
return deprecationHandler;
112+
}
113+
102114
module.exports = deprecate;

atom/common/api/lib/deprecations.js

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
'use strict';
2+
3+
const deprecate = require('electron').deprecate;
4+
5+
exports.setHandler = function (deprecationHandler) {
6+
deprecate.setHandler(deprecationHandler);
7+
};
8+
9+
exports.getHandler = function () {
10+
return deprecate.getHandler();
11+
}

atom/common/api/lib/exports/electron.js

+6
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ exports.defineProperties = function(exports) {
3131
return require('../crash-reporter');
3232
}
3333
},
34+
deprecations: {
35+
enumerable: true,
36+
get: function() {
37+
return require('../deprecations');
38+
}
39+
},
3440
nativeImage: {
3541
enumerable: true,
3642
get: function() {

filenames.gypi

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
'atom/common/api/lib/clipboard.js',
4242
'atom/common/api/lib/crash-reporter.js',
4343
'atom/common/api/lib/deprecate.js',
44+
'atom/common/api/lib/deprecations.js',
4445
'atom/common/api/lib/exports/electron.js',
4546
'atom/common/api/lib/native-image.js',
4647
'atom/common/api/lib/shell.js',

spec/api-deprecations-spec.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
const assert = require('assert');
2+
const deprecations = require('electron').deprecations;
3+
4+
describe('deprecations', function() {
5+
beforeEach(function() {
6+
deprecations.setHandler(null);
7+
process.throwDeprecation = true;
8+
});
9+
10+
it('allows a deprecation handler function to be specified', function() {
11+
var messages = [];
12+
13+
deprecations.setHandler(function (message) {
14+
messages.push(message)
15+
});
16+
17+
require('electron').webFrame.registerUrlSchemeAsSecure('some-scheme')
18+
19+
assert.deepEqual(messages, ['registerUrlSchemeAsSecure is deprecated. Use registerURLSchemeAsSecure instead.']);
20+
});
21+
22+
it('throws an exception if no deprecation handler is specified', function() {
23+
assert.throws(function() {
24+
require('electron').webFrame.registerUrlSchemeAsPrivileged('some-scheme')
25+
}, "registerUrlSchemeAsPrivileged is deprecated. Use registerURLSchemeAsPrivileged instead.");
26+
});
27+
})

0 commit comments

Comments
 (0)