Separate the webContents code in a new file.
This commit is contained in:
parent
c0875864dc
commit
23ccad4915
3 changed files with 25 additions and 22 deletions
1
atom.gyp
1
atom.gyp
|
@ -24,6 +24,7 @@
|
||||||
'atom/browser/api/lib/menu-item.coffee',
|
'atom/browser/api/lib/menu-item.coffee',
|
||||||
'atom/browser/api/lib/power-monitor.coffee',
|
'atom/browser/api/lib/power-monitor.coffee',
|
||||||
'atom/browser/api/lib/protocol.coffee',
|
'atom/browser/api/lib/protocol.coffee',
|
||||||
|
'atom/browser/api/lib/web-contents.coffee',
|
||||||
'atom/browser/lib/init.coffee',
|
'atom/browser/lib/init.coffee',
|
||||||
'atom/browser/lib/objects-registry.coffee',
|
'atom/browser/lib/objects-registry.coffee',
|
||||||
'atom/browser/lib/rpc-server.coffee',
|
'atom/browser/lib/rpc-server.coffee',
|
||||||
|
|
|
@ -1,32 +1,11 @@
|
||||||
EventEmitter = require('events').EventEmitter
|
EventEmitter = require('events').EventEmitter
|
||||||
IDWeakMap = require 'id-weak-map'
|
IDWeakMap = require 'id-weak-map'
|
||||||
app = require 'app'
|
app = require 'app'
|
||||||
ipc = require 'ipc'
|
wrapWebContents = require('web-contents').wrap
|
||||||
|
|
||||||
BrowserWindow = process.atomBinding('window').BrowserWindow
|
BrowserWindow = process.atomBinding('window').BrowserWindow
|
||||||
BrowserWindow::__proto__ = EventEmitter.prototype
|
BrowserWindow::__proto__ = EventEmitter.prototype
|
||||||
|
|
||||||
wrapWebContents = (webContents) ->
|
|
||||||
return null unless webContents.isAlive()
|
|
||||||
# webContents is an EventEmitter.
|
|
||||||
webContents.__proto__ = EventEmitter.prototype
|
|
||||||
|
|
||||||
# Wrap around the send method.
|
|
||||||
webContents.send = (args...) ->
|
|
||||||
@_send 'ATOM_INTERNAL_MESSAGE', [args...]
|
|
||||||
|
|
||||||
# Dispatch the ipc messages.
|
|
||||||
webContents.on 'ipc-message', (event, channel, args...) =>
|
|
||||||
Object.defineProperty event, 'sender', value: webContents
|
|
||||||
ipc.emit channel, event, args...
|
|
||||||
webContents.on 'ipc-message-sync', (event, channel, args...) =>
|
|
||||||
set = (value) -> event.sendReply JSON.stringify(value)
|
|
||||||
Object.defineProperty event, 'returnValue', {set}
|
|
||||||
Object.defineProperty event, 'sender', value: webContents
|
|
||||||
ipc.emit channel, event, args...
|
|
||||||
|
|
||||||
webContents
|
|
||||||
|
|
||||||
# Store all created windows in the weak map.
|
# Store all created windows in the weak map.
|
||||||
BrowserWindow.windows = new IDWeakMap
|
BrowserWindow.windows = new IDWeakMap
|
||||||
|
|
||||||
|
|
23
atom/browser/api/lib/web-contents.coffee
Normal file
23
atom/browser/api/lib/web-contents.coffee
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
EventEmitter = require('events').EventEmitter
|
||||||
|
ipc = require 'ipc'
|
||||||
|
|
||||||
|
module.exports.wrap = (webContents) ->
|
||||||
|
return null unless webContents.isAlive()
|
||||||
|
|
||||||
|
# webContents is an EventEmitter.
|
||||||
|
webContents.__proto__ = EventEmitter.prototype
|
||||||
|
|
||||||
|
# Add the send method.
|
||||||
|
webContents.send = (args...) ->
|
||||||
|
@_send 'ATOM_INTERNAL_MESSAGE', [args...]
|
||||||
|
|
||||||
|
# Dispatch IPC messages to the ipc module.
|
||||||
|
webContents.on 'ipc-message', (event, channel, args...) =>
|
||||||
|
Object.defineProperty event, 'sender', value: webContents
|
||||||
|
ipc.emit channel, event, args...
|
||||||
|
webContents.on 'ipc-message-sync', (event, channel, args...) =>
|
||||||
|
Object.defineProperty event, 'returnValue', set: (value) -> event.sendReply JSON.stringify(value)
|
||||||
|
Object.defineProperty event, 'sender', value: webContents
|
||||||
|
ipc.emit channel, event, args...
|
||||||
|
|
||||||
|
webContents
|
Loading…
Reference in a new issue