remote.require should return the same object for the same module.

This is required to use jasmine to test methods of the remote module.
This commit is contained in:
Cheng Zhao 2013-07-23 11:59:07 +08:00
parent 2f9c30dd50
commit 620c9fa109
2 changed files with 15 additions and 1 deletions

View file

@ -87,9 +87,14 @@ window.addEventListener 'unload', (event) ->
ipc.sendChannelSync 'ATOM_BROWSER_RELEASE_RENDER_VIEW' ipc.sendChannelSync 'ATOM_BROWSER_RELEASE_RENDER_VIEW'
# Get remote module. # Get remote module.
# (Just like node's require, the modules are cached permanently, note that this
# is safe leak since the object is not expected to get freed in browser)
moduleCache = {}
exports.require = (module) -> exports.require = (module) ->
return moduleCache[module] if moduleCache[module]?
meta = ipc.sendChannelSync 'ATOM_BROWSER_REQUIRE', module meta = ipc.sendChannelSync 'ATOM_BROWSER_REQUIRE', module
metaToValue meta moduleCache[module] = metaToValue meta
# Get object with specified id. # Get object with specified id.
exports.getObject = (id) -> exports.getObject = (id) ->

9
spec/api/ipc.coffee Normal file
View file

@ -0,0 +1,9 @@
assert = require 'assert'
remote = require 'remote'
describe 'ipc', ->
describe 'remote.require', ->
it 'should returns same object for the same module', ->
dialog1 = remote.require 'dialog'
dialog2 = remote.require 'dialog'
assert.equal dialog1, dialog2