Add API to get any global variable from browser.
authorCheng Zhao <zcbenz@gmail.com>
Tue, 30 Apr 2013 08:27:14 +0000 (16:27 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Tue, 30 Apr 2013 08:27:14 +0000 (16:27 +0800)
browser/atom/rpc_server.coffee
renderer/api/lib/remote.coffee

index 3cb9f74..e431f62 100644 (file)
@@ -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()
index 3e10de2..91c8d5b 100644 (file)
@@ -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