From 78753864985e3f3ba7f9b3f6be08e4efc55a5a83 Mon Sep 17 00:00:00 2001 From: Matt Colyer Date: Wed, 9 Oct 2013 14:10:03 -0700 Subject: [PATCH 01/12] Separate classes that run in the browser process --- package.json | 2 +- src/{ => browser}/application-menu.coffee | 0 src/{ => browser}/atom-application.coffee | 6 +++--- src/{ => browser}/atom-protocol-handler.coffee | 0 src/{ => browser}/atom-window.coffee | 0 src/{ => browser}/main.coffee | 2 +- 6 files changed, 5 insertions(+), 5 deletions(-) rename src/{ => browser}/application-menu.coffee (100%) rename src/{ => browser}/atom-application.coffee (98%) rename src/{ => browser}/atom-protocol-handler.coffee (100%) rename src/{ => browser}/atom-window.coffee (100%) rename src/{ => browser}/main.coffee (98%) diff --git a/package.json b/package.json index 09d76509b..3b4089d07 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "atom", "version": "31.0.0", - "main": "./src/main.js", + "main": "./src/browser/main.js", "repository": { "type": "git", "url": "https://github.com/atom/atom.git" diff --git a/src/application-menu.coffee b/src/browser/application-menu.coffee similarity index 100% rename from src/application-menu.coffee rename to src/browser/application-menu.coffee diff --git a/src/atom-application.coffee b/src/browser/atom-application.coffee similarity index 98% rename from src/atom-application.coffee rename to src/browser/atom-application.coffee index b3fc70596..b0a17bdcd 100644 --- a/src/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -1,6 +1,6 @@ -AtomWindow = require 'atom-window' -ApplicationMenu = require 'application-menu' -AtomProtocolHandler = require 'atom-protocol-handler' +AtomWindow = require 'browser/atom-window' +ApplicationMenu = require 'browser/application-menu' +AtomProtocolHandler = require 'browser/atom-protocol-handler' Menu = require 'menu' autoUpdater = require 'auto-updater' app = require 'app' diff --git a/src/atom-protocol-handler.coffee b/src/browser/atom-protocol-handler.coffee similarity index 100% rename from src/atom-protocol-handler.coffee rename to src/browser/atom-protocol-handler.coffee diff --git a/src/atom-window.coffee b/src/browser/atom-window.coffee similarity index 100% rename from src/atom-window.coffee rename to src/browser/atom-window.coffee diff --git a/src/main.coffee b/src/browser/main.coffee similarity index 98% rename from src/main.coffee rename to src/browser/main.coffee index f6c5bf165..77886173e 100644 --- a/src/main.coffee +++ b/src/browser/main.coffee @@ -52,7 +52,7 @@ delegate.browserMainParts.preMainMessageLoopRun = -> appSrcPath = path.resolve(process.argv[0], "../../Resources/app/src") module.globalPaths.push(appSrcPath) - AtomApplication = require 'atom-application' + AtomApplication = require 'browser/atom-application' AtomApplication.open(args) console.log("App load time: #{new Date().getTime() - startTime}ms") From 31c1241ce8c188817e5fa86dce6fc0b8846f6cf9 Mon Sep 17 00:00:00 2001 From: Matt Colyer Date: Wed, 9 Oct 2013 17:00:02 -0700 Subject: [PATCH 02/12] Use relative paths for browser files --- src/browser/atom-application.coffee | 6 +++--- src/browser/main.coffee | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index b0a17bdcd..aef0b6b23 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -1,6 +1,6 @@ -AtomWindow = require 'browser/atom-window' -ApplicationMenu = require 'browser/application-menu' -AtomProtocolHandler = require 'browser/atom-protocol-handler' +AtomWindow = require './atom-window' +ApplicationMenu = require './application-menu' +AtomProtocolHandler = require './atom-protocol-handler' Menu = require 'menu' autoUpdater = require 'auto-updater' app = require 'app' diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 77886173e..66f6b0312 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -52,7 +52,7 @@ delegate.browserMainParts.preMainMessageLoopRun = -> appSrcPath = path.resolve(process.argv[0], "../../Resources/app/src") module.globalPaths.push(appSrcPath) - AtomApplication = require 'browser/atom-application' + AtomApplication = require './atom-application' AtomApplication.open(args) console.log("App load time: #{new Date().getTime() - startTime}ms") From db64e8c0b3a6a11136eae24f7458bd6f0de45221 Mon Sep 17 00:00:00 2001 From: Matt Colyer Date: Wed, 9 Oct 2013 17:10:12 -0700 Subject: [PATCH 03/12] Correct resolve to window-bootstrap --- src/browser/atom-application.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index aef0b6b23..300be6516 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -251,7 +251,7 @@ class AtomApplication bootstrapScript = require.resolve(path.join(global.devResourcePath, 'src', 'window-bootstrap')) else resourcePath = @resourcePath - bootstrapScript = require.resolve('./window-bootstrap') + bootstrapScript = require.resolve('../window-bootstrap') openedWindow = new AtomWindow({pathToOpen, initialLine, bootstrapScript, resourcePath, devMode, initialSize}) if pidToKillWhenClosed? From 1538afee05fb4b1c234ac4b063a0629b42476878 Mon Sep 17 00:00:00 2001 From: Matt Colyer Date: Thu, 10 Oct 2013 10:01:58 -0700 Subject: [PATCH 04/12] Relative openUrl requires in AtomApplication --- src/browser/atom-application.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index 300be6516..e4845088c 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -279,8 +279,8 @@ class AtomApplication # Boolean to control the opened window's dev mode. openUrl: ({urlToOpen, devMode}) -> unless @packages? - PackageManager = require './package-manager' - fsUtils = require './fs-utils' + PackageManager = require '../package-manager' + fsUtils = require '../fs-utils' @packages = new PackageManager configDirPath: fsUtils.absolute('~/.atom') devMode: devMode From d7836f6082e24166828caee1e8036e96d21c39ba Mon Sep 17 00:00:00 2001 From: Matt Colyer Date: Thu, 10 Oct 2013 10:06:23 -0700 Subject: [PATCH 05/12] Fix resourcePath in main.coffee --- src/browser/main.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 66f6b0312..37b3d817f 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -112,6 +112,6 @@ parseCommandLine = -> fs.statSync resourcePath catch e devMode = false - resourcePath = path.dirname(__dirname) + resourcePath = path.dirname(path.dirname(__dirname)) {resourcePath, pathsToOpen, executedFrom, test, version, pidToKillWhenClosed, devMode, newWindow, specDirectory} From d815147df6794859e85a1627506b6039cebf60a2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 10 Oct 2013 11:01:24 -0700 Subject: [PATCH 06/12] Log uncaught exceptions in browser process --- src/browser/main.coffee | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 37b3d817f..079fa6a93 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -14,6 +14,10 @@ dialog = require 'dialog' console.log = (args...) -> nslog(args.map((arg) -> JSON.stringify(arg)).join(" ")) +process.on 'uncaughtException', (error={}) -> + nslog(error.message) if error.message? + nslog(error.stack) if error.stack? + delegate.browserMainParts.preMainMessageLoopRun = -> args = parseCommandLine() From 891200d65840d53c76fbe83058c541ec808a6c86 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 10 Oct 2013 11:05:41 -0700 Subject: [PATCH 07/12] Remove src/ from global paths in browser process --- src/browser/main.coffee | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 079fa6a93..e2490b97c 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -51,12 +51,9 @@ delegate.browserMainParts.preMainMessageLoopRun = -> require('coffee-script') if args.devMode require(path.join(args.resourcePath, 'src', 'coffee-cache')).register() - module.globalPaths.push(path.join(args.resourcePath, 'src')) + AtomApplication = require path.join(args.resourcePath, 'src', 'browser', 'atom-application') else - appSrcPath = path.resolve(process.argv[0], "../../Resources/app/src") - module.globalPaths.push(appSrcPath) - - AtomApplication = require './atom-application' + AtomApplication = require './atom-application' AtomApplication.open(args) console.log("App load time: #{new Date().getTime() - startTime}ms") From 63fb5b1fe592bcc0814b035ba5dbe92efbba5665 Mon Sep 17 00:00:00 2001 From: Matt Colyer Date: Thu, 10 Oct 2013 16:30:33 -0700 Subject: [PATCH 08/12] Move ContextMenu into the browser folder --- src/browser/atom-window.coffee | 2 +- src/{ => browser}/context-menu.coffee | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/{ => browser}/context-menu.coffee (100%) diff --git a/src/browser/atom-window.coffee b/src/browser/atom-window.coffee index 81de39f38..8a9ed1801 100644 --- a/src/browser/atom-window.coffee +++ b/src/browser/atom-window.coffee @@ -1,7 +1,7 @@ BrowserWindow = require 'browser-window' Menu = require 'menu' MenuItem = require 'menu-item' -ContextMenu = require 'context-menu' +ContextMenu = require './context-menu' dialog = require 'dialog' ipc = require 'ipc' path = require 'path' diff --git a/src/context-menu.coffee b/src/browser/context-menu.coffee similarity index 100% rename from src/context-menu.coffee rename to src/browser/context-menu.coffee From 8d27369afc2b36590d57c16bd07f2e5ec2317bb7 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 10 Oct 2013 17:28:15 -0700 Subject: [PATCH 09/12] Add extra .. for benchmark/spec bootstrap paths --- src/browser/atom-application.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index e4845088c..35ade8082 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -314,7 +314,7 @@ class AtomApplication try bootstrapScript = require.resolve(path.resolve(global.devResourcePath, 'spec', 'spec-bootstrap')) catch error - bootstrapScript = require.resolve(path.resolve(__dirname, '..', 'spec', 'spec-bootstrap')) + bootstrapScript = require.resolve(path.resolve(__dirname, '..', '..', 'spec', 'spec-bootstrap')) isSpec = true devMode = true @@ -324,7 +324,7 @@ class AtomApplication try bootstrapScript = require.resolve(path.resolve(global.devResourcePath, 'benchmark', 'benchmark-bootstrap')) catch error - bootstrapScript = require.resolve(path.resolve(__dirname, '..', 'benchmark', 'benchmark-bootstrap')) + bootstrapScript = require.resolve(path.resolve(__dirname, '..', '..', 'benchmark', 'benchmark-bootstrap')) isSpec = true # Needed because this flag adds the spec directory to the NODE_PATH new AtomWindow({bootstrapScript, @resourcePath, isSpec}) From ed3bb509fa5e425047728e94cc6e83f7653b20d2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 10 Oct 2013 18:00:38 -0700 Subject: [PATCH 10/12] Remove outdated comment about NODE_PATH tweaking --- src/browser/atom-application.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index 35ade8082..aad19da63 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -326,7 +326,7 @@ class AtomApplication catch error bootstrapScript = require.resolve(path.resolve(__dirname, '..', '..', 'benchmark', 'benchmark-bootstrap')) - isSpec = true # Needed because this flag adds the spec directory to the NODE_PATH + isSpec = true new AtomWindow({bootstrapScript, @resourcePath, isSpec}) # Private: Opens a native dialog to prompt the user for a path. From e4219cae452b8a7bcaa5ec93e4b7b91c71ee4641 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 10 Oct 2013 18:03:39 -0700 Subject: [PATCH 11/12] Remove unused require --- src/browser/atom-window.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/src/browser/atom-window.coffee b/src/browser/atom-window.coffee index 8a9ed1801..9db12f0ae 100644 --- a/src/browser/atom-window.coffee +++ b/src/browser/atom-window.coffee @@ -1,6 +1,5 @@ BrowserWindow = require 'browser-window' Menu = require 'menu' -MenuItem = require 'menu-item' ContextMenu = require './context-menu' dialog = require 'dialog' ipc = require 'ipc' From 317365e41fb9b5951c41b6c63c22e8b16a482593 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 11 Oct 2013 08:38:15 -0700 Subject: [PATCH 12/12] :syringe: BrowserWindow instance into ContextMenu --- src/browser/atom-window.coffee | 2 +- src/browser/context-menu.coffee | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/browser/atom-window.coffee b/src/browser/atom-window.coffee index 9db12f0ae..031fcd68d 100644 --- a/src/browser/atom-window.coffee +++ b/src/browser/atom-window.coffee @@ -83,7 +83,7 @@ class AtomWindow when 1 then @browserWindow.restart() @browserWindow.on 'context-menu', (menuTemplate) => - new ContextMenu(menuTemplate) + new ContextMenu(menuTemplate, @browserWindow) if @isSpec # Spec window's web view should always have focus diff --git a/src/browser/context-menu.coffee b/src/browser/context-menu.coffee index f60a7709e..6abc6a801 100644 --- a/src/browser/context-menu.coffee +++ b/src/browser/context-menu.coffee @@ -1,12 +1,11 @@ Menu = require 'menu' -BrowserWindow = require 'browser-window' module.exports = class ContextMenu - constructor: (template) -> + constructor: (template, browserWindow) -> template = @createClickHandlers(template) menu = Menu.buildFromTemplate(template) - menu.popup(BrowserWindow.getFocusedWindow()) + menu.popup(browserWindow) # Private: It's necessary to build the event handlers in this process, otherwise # closures are drug across processes and failed to be garbage collected