Browse Source

Separate the webContents code in a new file.

Cheng Zhao 11 years ago
parent
commit
23ccad4915
3 changed files with 25 additions and 22 deletions
  1. 1 0
      atom.gyp
  2. 1 22
      atom/browser/api/lib/browser-window.coffee
  3. 23 0
      atom/browser/api/lib/web-contents.coffee

+ 1 - 0
atom.gyp

@@ -24,6 +24,7 @@
       'atom/browser/api/lib/menu-item.coffee',
       'atom/browser/api/lib/power-monitor.coffee',
       'atom/browser/api/lib/protocol.coffee',
+      'atom/browser/api/lib/web-contents.coffee',
       'atom/browser/lib/init.coffee',
       'atom/browser/lib/objects-registry.coffee',
       'atom/browser/lib/rpc-server.coffee',

+ 1 - 22
atom/browser/api/lib/browser-window.coffee

@@ -1,32 +1,11 @@
 EventEmitter = require('events').EventEmitter
 IDWeakMap = require 'id-weak-map'
 app = require 'app'
-ipc = require 'ipc'
+wrapWebContents = require('web-contents').wrap
 
 BrowserWindow = process.atomBinding('window').BrowserWindow
 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.
 BrowserWindow.windows = new IDWeakMap
 

+ 23 - 0
atom/browser/api/lib/web-contents.coffee

@@ -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