diff --git a/browser/atom/rpc_server.coffee b/browser/atom/rpc_server.coffee index 3cb9f741dfdc..e431f625d000 100644 --- a/browser/atom/rpc_server.coffee +++ b/browser/atom/rpc_server.coffee @@ -54,6 +54,12 @@ ipc.on 'ATOM_BROWSER_REQUIRE', (event, processId, routingId, module) -> catch e event.result = type: 'error', value: e.message +ipc.on 'ATOM_BROWSER_GLOBAL', (event, processId, routingId, name) -> + try + event.result = new Meta(processId, routingId, global[name]) + catch e + event.result = type: 'error', value: e.message + ipc.on 'ATOM_BROWSER_CURRENT_WINDOW', (event, processId, routingId) -> try windows = objectsRegistry.getAllWindows() diff --git a/renderer/api/lib/remote.coffee b/renderer/api/lib/remote.coffee index 3e10de2066de..91c8d5b082d3 100644 --- a/renderer/api/lib/remote.coffee +++ b/renderer/api/lib/remote.coffee @@ -103,3 +103,14 @@ exports.getObject = (id) -> exports.getCurrentWindow = -> meta = ipc.sendChannelSync 'ATOM_BROWSER_CURRENT_WINDOW' metaToValue meta + +# Get a global object in browser. +exports.getGlobal = (name) -> + meta = ipc.sendChannelSync 'ATOM_BROWSER_GLOBAL', name + metaToValue meta + +# Get the process object in browser. +processCache = null +exports.__defineGetter__ 'process', -> + processCache = exports.getGlobal('process') unless processCache? + processCache