[plugins] PluginEnabler implementations registered
[idea/community.git] / platform / platform-impl / src / com / intellij / internal / statistic / collectors / fus / plugins / PluginsUsagesCollector.kt
index 2d9b721cb40cfbbac4c6c811975c832137519fbb..074fd83874fd44390303a0c3b539c99a0b071b6b 100644 (file)
@@ -1,10 +1,7 @@
 // Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
 package com.intellij.internal.statistic.collectors.fus.plugins
 
-import com.intellij.ide.plugins.DisabledPluginsState
-import com.intellij.ide.plugins.DynamicPluginEnabler
-import com.intellij.ide.plugins.PluginManagerCore
-import com.intellij.ide.plugins.ProjectPluginTracker
+import com.intellij.ide.plugins.*
 import com.intellij.internal.statistic.beans.MetricEvent
 import com.intellij.internal.statistic.eventLog.EventLogGroup
 import com.intellij.internal.statistic.eventLog.events.EventFields
@@ -51,11 +48,18 @@ class PluginsUsagesCollector : ApplicationUsagesCollector() {
   private fun getPerProjectPlugins(
     eventId: EventId1<Int>,
     countProducer: (ProjectPluginTracker) -> Set<PluginId>
-  ) = DynamicPluginEnabler.getInstance().trackers.values
-    .map { countProducer(it) }
-    .filter { it.isNotEmpty() }
-    .map { eventId.metric(it.size) }
-    .toSet()
+  ): Set<MetricEvent> {
+    return when (val pluginEnabler = PluginEnabler.getInstance()) {
+      is DynamicPluginEnabler ->
+        pluginEnabler.trackers.values
+          .map { countProducer(it) }
+          .filter { it.isNotEmpty() }
+          .map { eventId.metric(it.size) }
+          .toSet()
+      else ->
+        emptySet()
+    }
+  }
 
   private fun getNotBundledPlugins() = PluginManagerCore
     .getPlugins().asSequence()