Add the "atom://" custom protocol handler.

This commit is contained in:
Cheng Zhao
2013-09-13 16:24:24 +08:00
parent 59e7229ea4
commit 656793108c
2 changed files with 21 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
AtomWindow = require 'atom-window'
ApplicationMenu = require 'application-menu'
AtomProtocolHandler = require 'atom-protocol-handler'
BrowserWindow = require 'browser-window'
Menu = require 'menu'
autoUpdater = require 'auto-updater'
@@ -45,6 +46,7 @@ class AtomApplication
windows: null
applicationMenu: null
atomProtocolHandler: null
resourcePath: null
version: null
@@ -56,6 +58,7 @@ class AtomApplication
@windows = []
@applicationMenu = new ApplicationMenu(@version, devMode)
@atomProtocolHandler = new AtomProtocolHandler(@resourcePath)
@listenForArgumentsFromNewProcess()
@setupJavaScriptArguments()

View File

@@ -0,0 +1,18 @@
path = require 'path'
protocol = require 'protocol'
# Private: Handles requests with 'atom' protocol.
#
# It's created by {AtomApplication} upon instantiation, and is used to create a
# custom resource loader by adding the 'atom' custom protocol.
module.exports =
class AtomProtocolHandler
constructor: (@resourcePath) ->
@registerAtomProtocol()
# Private: Creates the 'atom' custom protocol handler.
registerAtomProtocol: ->
protocol.registerProtocol 'atom', (request) =>
relativePath = path.normalize(request.url.substr(7))
filePath = path.join(@resourcePath, 'node_modules', relativePath)
return new protocol.RequestFileJob(filePath)