Handle profile startup option on load

This commit is contained in:
Kevin Sawicki
2015-04-27 18:13:35 -07:00
parent 9c7f9f74a1
commit 3cc99d5662

View File

@@ -32,46 +32,58 @@ window.onload = function() {
var devMode = loadSettings.devMode || !loadSettings.resourcePath.startsWith(process.resourcesPath + path.sep);
setupCoffeeCache(cacheDir);
ModuleCache = require('../src/module-cache');
ModuleCache.register(loadSettings);
ModuleCache.add(loadSettings.resourcePath);
require('grim').includeDeprecatedAPIs = !loadSettings.apiPreviewMode;
// Start the crash reporter before anything else.
require('crash-reporter').start({
productName: 'Atom',
companyName: 'GitHub',
// By explicitly passing the app version here, we could save the call
// of "require('remote').require('app').getVersion()".
extra: {_version: loadSettings.appVersion}
});
setupVmCompatibility();
setupCsonCache(cacheDir);
setupSourceMapCache(cacheDir);
setupBabel(cacheDir);
setupTypeScript(cacheDir);
require(loadSettings.bootstrapScript);
require('ipc').sendChannel('window-command', 'window:loaded');
if (loadSettings.profileStartup) {
profileStartup(cacheDir, loadSettings);
} else {
setupWindow(cacheDir, loadSettings);
}
if (global.atom) {
global.atom.loadTime = Date.now() - startTime;
console.log('Window load time: ' + global.atom.getWindowLoadTime() + 'ms');
}
} catch (error) {
var currentWindow = require('remote').getCurrentWindow();
currentWindow.setSize(800, 600);
currentWindow.center();
currentWindow.show();
currentWindow.openDevTools();
console.error(error.stack || error);
handleSetupError(error);
}
}
var handleSetupError = function(error) {
var currentWindow = require('remote').getCurrentWindow();
currentWindow.setSize(800, 600);
currentWindow.center();
currentWindow.show();
currentWindow.openDevTools();
console.error(error.stack || error);
}
var setupWindow = function(cacheDir, loadSettings) {
setupCoffeeCache(cacheDir);
ModuleCache = require('../src/module-cache');
ModuleCache.register(loadSettings);
ModuleCache.add(loadSettings.resourcePath);
require('grim').includeDeprecatedAPIs = !loadSettings.apiPreviewMode;
// Start the crash reporter before anything else.
require('crash-reporter').start({
productName: 'Atom',
companyName: 'GitHub',
// By explicitly passing the app version here, we could save the call
// of "require('remote').require('app').getVersion()".
extra: {_version: loadSettings.appVersion}
});
setupVmCompatibility();
setupCsonCache(cacheDir);
setupSourceMapCache(cacheDir);
setupBabel(cacheDir);
setupTypeScript(cacheDir);
require(loadSettings.bootstrapScript);
require('ipc').sendChannel('window-command', 'window:loaded');
}
var setupCoffeeCache = function(cacheDir) {
var CoffeeCache = require('coffee-cash');
CoffeeCache.setCacheDirectory(path.join(cacheDir, 'coffee'));
@@ -121,3 +133,21 @@ var setupVmCompatibility = function() {
if (!vm.Script.createContext)
vm.Script.createContext = vm.createContext;
}
var profileStartup = function(cacheDir, loadSettings) {
var currentWindow = require('remote').getCurrentWindow();
currentWindow.openDevTools();
currentWindow.once('devtools-opened', function() {
setTimeout(function() {
console.profile('startup');
try {
setupWindow(cacheDir, loadSettings);
} catch (error) {
handleSetupError(error);
} finally {
console.profileEnd('startup');
console.log("Switch to the Profiles tab to view the startup profile")
}
}, 100);
});
}