node: --no-browser-globals configure flag

Introduce `--no-browser-globals` configure flag. With this flag set, following
globals won't be exported:

- `setTimeout`, `clearTimeout`, `setInterval`, `clearInterval`,
  `setImmediate`, `clearImmediate`
- `console`

These are provided by the DOM implementation in browser, so the
`--no-browser-globals` flag may be helpful when embedding node.js within
chromium/webkit.

Inspired-By: https://github.com/atom/node/commit/82e10ce94f3c90234dac187f04a47d4d357ffd31
PR-URL: https://github.com/nodejs/node/pull/5853
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Rod Vagg <rod@vagg.org>
This commit is contained in:
Fedor Indutny committed 2016-03-25 21:02:18 -04:00
1 parent 53a95a5b12
commit 8363ede855
4 files changed
+21 -2

No files matched your search

Vendored
+8
View File
@@ -373,6 +373,12 @@ parser.add_option('--enable-static',
dest='enable_static',
help='build as static library')
parser.add_option('--no-browser-globals',
action='store_true',
dest='no_browser_globals',
help='do not export browser globals like setTimeout, console, etc. ' +
'(This mode is not officially supported for regular applications)')
(options, args) = parser.parse_args()
# Expand ~ in the install prefix now, it gets written to multiple files.
@@ -762,6 +768,8 @@ def configure_node(o):
if options.enable_static:
o['variables']['node_target_type'] = 'static_library'
o['variables']['node_no_browser_globals'] = b(options.no_browser_globals)
if options.linked_module:
o['variables']['library_files'] = options.linked_module
+4 -2
View File
@@ -40,8 +40,10 @@
setupProcessFatal();
setupGlobalVariables();
setupGlobalTimeouts();
setupGlobalConsole();
if (!process._noBrowserGlobals) {
setupGlobalTimeouts();
setupGlobalConsole();
}
const _process = NativeModule.require('internal/process');
+4
View File
@@ -5,6 +5,7 @@
'node_use_lttng%': 'false',
'node_use_etw%': 'false',
'node_use_perfctr%': 'false',
'node_no_browser_globals%': 'false',
'node_has_winsdk%': 'false',
'node_shared_zlib%': 'false',
'node_shared_http_parser%': 'false',
@@ -367,6 +368,9 @@
'tools/msvs/genfiles/node_perfctr_provider.rc',
]
} ],
[ 'node_no_browser_globals=="true"', {
'defines': [ 'NODE_NO_BROWSER_GLOBALS' ],
} ],
[ 'v8_postmortem_support=="true"', {
'dependencies': [ 'deps/v8/tools/gyp/v8.gyp:postmortem-metadata' ],
'conditions': [
+5
View File
@@ -3070,6 +3070,11 @@ void SetupProcessObject(Environment* env,
READONLY_PROPERTY(process, "throwDeprecation", True(env->isolate()));
}
#ifdef NODE_NO_BROWSER_GLOBALS
// configure --no-browser-globals
READONLY_PROPERTY(process, "_noBrowserGlobals", True(env->isolate()));
#endif // NODE_NO_BROWSER_GLOBALS
// --prof-process
if (prof_process) {
READONLY_PROPERTY(process, "profProcess", True(env->isolate()));