From 8c83dfe918c3c1fa53776caf9e5217b36d8cf21b Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Wed, 24 Jun 2015 18:39:02 +0800 Subject: [PATCH] Remove usages of JS IDWeakMap in browser-window --- atom/browser/api/lib/browser-window.coffee | 9 --------- atom/browser/lib/guest-window-manager.coffee | 14 +++++--------- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/atom/browser/api/lib/browser-window.coffee b/atom/browser/api/lib/browser-window.coffee index 15411fb..1aa84bb 100644 --- a/atom/browser/api/lib/browser-window.coffee +++ b/atom/browser/api/lib/browser-window.coffee @@ -1,14 +1,10 @@ EventEmitter = require('events').EventEmitter -IDWeakMap = process.atomBinding('id_weak_map').IDWeakMap app = require 'app' ipc = require 'ipc' BrowserWindow = process.atomBinding('window').BrowserWindow BrowserWindow::__proto__ = EventEmitter.prototype -# Store all created windows in the weak map. -BrowserWindow.windows = new IDWeakMap - BrowserWindow::_init = -> # Simulate the application menu on platforms other than OS X. if process.platform isnt 'darwin' @@ -31,11 +27,6 @@ BrowserWindow::_init = -> @on 'focus', (event) => app.emit 'browser-window-focus', event, this - # Remove the window from weak map immediately when it's destroyed, since we - # could be iterating windows before GC happened. - @once 'closed', => - BrowserWindow.windows.remove @id if BrowserWindow.windows.has @id - BrowserWindow::setMenu = (menu) -> throw new TypeError('Invalid menu') unless menu is null or menu?.constructor?.name is 'Menu' diff --git a/atom/browser/lib/guest-window-manager.coffee b/atom/browser/lib/guest-window-manager.coffee index aef8b0d..e26c935 100644 --- a/atom/browser/lib/guest-window-manager.coffee +++ b/atom/browser/lib/guest-window-manager.coffee @@ -48,17 +48,14 @@ ipc.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_OPEN', (event, args...) -> event.returnValue = createGuest event.sender, args... ipc.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_CLOSE', (event, guestId) -> - return unless BrowserWindow.windows.has guestId - BrowserWindow.windows.get(guestId).destroy() + BrowserWindow.fromId(guestId)?.destroy() ipc.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_METHOD', (event, guestId, method, args...) -> - return unless BrowserWindow.windows.has guestId - BrowserWindow.windows.get(guestId)[method] args... + BrowserWindow.fromId(guestId)?[method] args... ipc.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_POSTMESSAGE', (event, guestId, message, targetOrigin) -> - return unless BrowserWindow.windows.has guestId - guestContents = BrowserWindow.windows.get(guestId).webContents - if guestContents.getUrl().indexOf(targetOrigin) is 0 or targetOrigin is '*' + guestContents = BrowserWindow.fromId(guestId)?.webContents + if guestContents?.getUrl().indexOf(targetOrigin) is 0 or targetOrigin is '*' guestContents.send 'ATOM_SHELL_GUEST_WINDOW_POSTMESSAGE', message, targetOrigin ipc.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_OPENER_POSTMESSAGE', (event, message, targetOrigin) -> @@ -67,5 +64,4 @@ ipc.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WINDOW_OPENER_POSTMESSAGE', (event, mess embedder.send 'ATOM_SHELL_GUEST_WINDOW_POSTMESSAGE', message, targetOrigin ipc.on 'ATOM_SHELL_GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD', (event, guestId, method, args...) -> - return unless BrowserWindow.windows.has guestId - BrowserWindow.windows.get(guestId).webContents?[method] args... + BrowserWindow.fromId(guestId)?.webContents?[method] args... -- 2.7.4