mirror of
https://github.com/atom/atom.git
synced 2026-01-25 06:48:28 -05:00
Hook up package URL handlers
This commit is contained in:
@@ -648,6 +648,10 @@ module.exports = class PackageManager {
|
||||
})
|
||||
}
|
||||
|
||||
registerUrlHandlerForPackage (packageName, handler) {
|
||||
return this.urlHandlerRegistry.registerHostHandler(packageName, handler)
|
||||
}
|
||||
|
||||
// another type of package manager can handle other package types.
|
||||
// See ThemeManager
|
||||
registerPackageActivator (activator, types) {
|
||||
|
||||
@@ -84,6 +84,7 @@ class Package
|
||||
@loadMenus()
|
||||
@registerDeserializerMethods()
|
||||
@activateCoreStartupServices()
|
||||
@registerUrlHandler()
|
||||
@configSchemaRegisteredOnLoad = @registerConfigSchemaFromMetadata()
|
||||
@requireMainModule()
|
||||
@settingsPromise = @loadSettings()
|
||||
@@ -114,6 +115,7 @@ class Package
|
||||
@loadStylesheets()
|
||||
@registerDeserializerMethods()
|
||||
@activateCoreStartupServices()
|
||||
@registerUrlHandler()
|
||||
@registerTranspilerConfig()
|
||||
@configSchemaRegisteredOnLoad = @registerConfigSchemaFromMetadata()
|
||||
@settingsPromise = @loadSettings()
|
||||
@@ -318,6 +320,21 @@ class Package
|
||||
@activationDisposables.add @packageManager.serviceHub.consume(name, version, @mainModule[methodName].bind(@mainModule))
|
||||
return
|
||||
|
||||
registerUrlHandler: ->
|
||||
handlerConfig = @getUrlHandler()
|
||||
if methodName = handlerConfig?.method
|
||||
@urlHandlerSubscription = @packageManager.registerUrlHandlerForPackage @name, (url) =>
|
||||
@handleUrl(url, methodName)
|
||||
|
||||
unregisterUrlHandler: ->
|
||||
@urlHandlerSubscription?.dispose()
|
||||
|
||||
handleUrl: (url, methodName) ->
|
||||
@activate().then =>
|
||||
@mainModule[methodName]?(url)
|
||||
unless @mainActivated
|
||||
@activateNow()
|
||||
|
||||
registerTranspilerConfig: ->
|
||||
if @metadata.atomTranspilers
|
||||
CompileCache.addTranspilerConfigForPath(@path, @name, @metadata, @metadata.atomTranspilers)
|
||||
@@ -595,7 +612,7 @@ class Package
|
||||
@mainModulePath = fs.resolveExtension(mainModulePath, ["", CompileCache.supportedExtensions...])
|
||||
|
||||
activationShouldBeDeferred: ->
|
||||
@hasActivationCommands() or @hasActivationHooks()
|
||||
@hasActivationCommands() or @hasActivationHooks() or @hasDeferredUrlHandler()
|
||||
|
||||
hasActivationHooks: ->
|
||||
@getActivationHooks()?.length > 0
|
||||
@@ -605,6 +622,9 @@ class Package
|
||||
return true if commands.length > 0
|
||||
false
|
||||
|
||||
hasDeferredUrlHandler: ->
|
||||
@getUrlHandler() and @getUrlHandler().deferActivation isnt false
|
||||
|
||||
subscribeToDeferredActivation: ->
|
||||
@subscribeToActivationCommands()
|
||||
@subscribeToActivationHooks()
|
||||
@@ -673,6 +693,9 @@ class Package
|
||||
|
||||
@activationHooks = _.uniq(@activationHooks)
|
||||
|
||||
getUrlHandler: ->
|
||||
@metadata?.urlHandler
|
||||
|
||||
# Does the given module path contain native code?
|
||||
isNativeModule: (modulePath) ->
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user