mirror of
https://github.com/atom/atom.git
synced 2026-01-24 14:28:14 -05:00
Activate atom.directory-provider services before deserialization
Signed-off-by: Nathan Sobo <nathan@github.com>
This commit is contained in:
committed by
Nathan Sobo
parent
7929e261a0
commit
3aaa738944
3
spec/fixtures/packages/package-with-directory-provider/index.js
vendored
Normal file
3
spec/fixtures/packages/package-with-directory-provider/index.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
exports.provideDirectoryProvider = function () {
|
||||
return 'directory provider from package-with-directory-provider'
|
||||
}
|
||||
12
spec/fixtures/packages/package-with-directory-provider/package.json
vendored
Normal file
12
spec/fixtures/packages/package-with-directory-provider/package.json
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "package-with-directory-provider",
|
||||
|
||||
"providedServices": {
|
||||
"atom.directory-provider": {
|
||||
"description": "Provides custom Directory instances",
|
||||
"versions": {
|
||||
"0.1.1": "provideDirectoryProvider"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -120,6 +120,16 @@ describe "PackageManager", ->
|
||||
state: state2
|
||||
}
|
||||
|
||||
it "early-activates any atom.directory-provider or atom.repository-provider services that the package provide", ->
|
||||
jasmine.useRealClock()
|
||||
|
||||
providers = []
|
||||
atom.packages.serviceHub.consume 'atom.directory-provider', '^0.1.0', (provider) ->
|
||||
providers.push(provider)
|
||||
|
||||
atom.packages.loadPackage('package-with-directory-provider')
|
||||
expect(providers).toEqual(['directory provider from package-with-directory-provider'])
|
||||
|
||||
describe "when there are view providers specified in the package's package.json", ->
|
||||
model1 = {worksWithViewProvider1: true}
|
||||
model2 = {worksWithViewProvider2: true}
|
||||
|
||||
@@ -85,6 +85,7 @@ class Package
|
||||
@loadMenus()
|
||||
@loadStylesheets()
|
||||
@registerDeserializerMethods()
|
||||
@activateCoreStartupServices()
|
||||
@configSchemaRegisteredOnLoad = @registerConfigSchemaFromMetadata()
|
||||
@settingsPromise = @loadSettings()
|
||||
if @shouldRequireMainModuleOnLoad() and not @mainModule?
|
||||
@@ -290,6 +291,17 @@ class Package
|
||||
@mainModule[methodName](state, atomEnvironment)
|
||||
return
|
||||
|
||||
activateCoreStartupServices: ->
|
||||
if directoryProviderService = @metadata.providedServices?['atom.directory-provider']
|
||||
@requireMainModule()
|
||||
servicesByVersion = {}
|
||||
for version, methodName of directoryProviderService.versions
|
||||
if typeof @mainModule[methodName] is 'function'
|
||||
servicesByVersion[version] = @mainModule[methodName]()
|
||||
|
||||
disposable = @packageManager.serviceHub.provide('atom.directory-provider', servicesByVersion)
|
||||
@activationDisposables.add(disposable)
|
||||
|
||||
registerViewProviders: ->
|
||||
if @metadata.viewProviders? and not @registeredViewProviders
|
||||
@requireMainModule()
|
||||
|
||||
Reference in New Issue
Block a user