From 374d48be0d7148f8ea15c8b0a4a495bdc9d7cacf Mon Sep 17 00:00:00 2001 From: "Svetlana.Zemlyanskaya" Date: Sat, 19 Jan 2019 18:49:04 +0100 Subject: [PATCH] FUS: add plugin information to toolwindow collector --- .../persistence/ToolWindowCollector.java | 119 +++++++++++------- .../statistic/utils/PluginInfoDetector.kt | 14 ++- 2 files changed, 82 insertions(+), 51 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/actions/persistence/ToolWindowCollector.java b/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/actions/persistence/ToolWindowCollector.java index ca192b6583c3..a2445d55191f 100644 --- a/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/actions/persistence/ToolWindowCollector.java +++ b/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/actions/persistence/ToolWindowCollector.java @@ -3,11 +3,13 @@ package com.intellij.internal.statistic.collectors.fus.actions.persistence; import com.intellij.facet.ui.FacetDependentToolWindow; import com.intellij.internal.statistic.collectors.fus.ui.persistence.ShortcutsCollector; +import com.intellij.internal.statistic.eventLog.FeatureUsageDataBuilder; import com.intellij.internal.statistic.eventLog.FeatureUsageGroup; import com.intellij.internal.statistic.eventLog.FeatureUsageLogger; import com.intellij.internal.statistic.persistence.UsageStatisticsPersistenceComponent; import com.intellij.internal.statistic.service.fus.collectors.FUSUsageContext; -import com.intellij.internal.statistic.utils.StatisticsUtilKt; +import com.intellij.internal.statistic.utils.PluginInfo; +import com.intellij.internal.statistic.utils.PluginInfoDetectorKt; import com.intellij.openapi.components.*; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.wm.ToolWindowEP; @@ -19,11 +21,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; import static com.intellij.internal.statistic.beans.ConvertUsagesUtil.escapeDescriptorName; +import static com.intellij.internal.statistic.collectors.fus.actions.persistence.ToolWindowCollector.ToolWindowActivationSource.ACTIVATION; +import static com.intellij.internal.statistic.collectors.fus.actions.persistence.ToolWindowCollector.ToolWindowActivationSource.CLICK; +import static com.intellij.internal.statistic.utils.PluginInfoDetectorKt.getPlatformPlugin; +import static com.intellij.internal.statistic.utils.PluginInfoDetectorKt.getUnknownPlugin; import static com.intellij.openapi.wm.ToolWindowId.*; /** @@ -36,45 +40,46 @@ import static com.intellij.openapi.wm.ToolWindowId.*; } ) public class ToolWindowCollector implements PersistentStateComponent { - private static final FeatureUsageGroup GROUP = new FeatureUsageGroup("toolwindow.v2", 1); - private static final String UNKNOWN = "unknown_by_"; + private static final FeatureUsageGroup GROUP = new FeatureUsageGroup("toolwindow", 1); + private static final String UNKNOWN = "unknown"; public static ToolWindowCollector getInstance() { return ServiceManager.getService(ToolWindowCollector.class); } - public static final Set ourToolwindowWhitelist = new HashSet<>(); + public static final Map ourToolwindowWhitelist = new HashMap<>(); static { - ourToolwindowWhitelist.add(COMMANDER); - ourToolwindowWhitelist.add(MESSAGES_WINDOW); - ourToolwindowWhitelist.add(PROJECT_VIEW); - ourToolwindowWhitelist.add(STRUCTURE_VIEW); - ourToolwindowWhitelist.add(FAVORITES_VIEW); - ourToolwindowWhitelist.add(ANT_BUILD); - ourToolwindowWhitelist.add(DEBUG); - ourToolwindowWhitelist.add(RUN); - ourToolwindowWhitelist.add(BUILD); - ourToolwindowWhitelist.add(FIND); - ourToolwindowWhitelist.add(CVS); - ourToolwindowWhitelist.add(HIERARCHY); - ourToolwindowWhitelist.add(INSPECTION); - ourToolwindowWhitelist.add(TODO_VIEW); - ourToolwindowWhitelist.add(DEPENDENCIES); - ourToolwindowWhitelist.add(VCS); - ourToolwindowWhitelist.add(MODULES_DEPENDENCIES); - ourToolwindowWhitelist.add(DUPLICATES); - ourToolwindowWhitelist.add(EXTRACT_METHOD); - ourToolwindowWhitelist.add(DOCUMENTATION); - ourToolwindowWhitelist.add(TASKS); - ourToolwindowWhitelist.add(DATABASE_VIEW); - ourToolwindowWhitelist.add(PREVIEW); - ourToolwindowWhitelist.add(RUN_DASHBOARD); + ourToolwindowWhitelist.put(COMMANDER, getPlatformPlugin()); + ourToolwindowWhitelist.put(MESSAGES_WINDOW, getPlatformPlugin()); + ourToolwindowWhitelist.put(PROJECT_VIEW, getPlatformPlugin()); + ourToolwindowWhitelist.put(STRUCTURE_VIEW, getPlatformPlugin()); + ourToolwindowWhitelist.put(FAVORITES_VIEW, getPlatformPlugin()); + ourToolwindowWhitelist.put(ANT_BUILD, getPlatformPlugin()); + ourToolwindowWhitelist.put(DEBUG, getPlatformPlugin()); + ourToolwindowWhitelist.put(RUN, getPlatformPlugin()); + ourToolwindowWhitelist.put(BUILD, getPlatformPlugin()); + ourToolwindowWhitelist.put(FIND, getPlatformPlugin()); + ourToolwindowWhitelist.put(CVS, getPlatformPlugin()); + ourToolwindowWhitelist.put(HIERARCHY, getPlatformPlugin()); + ourToolwindowWhitelist.put(INSPECTION, getPlatformPlugin()); + ourToolwindowWhitelist.put(TODO_VIEW, getPlatformPlugin()); + ourToolwindowWhitelist.put(DEPENDENCIES, getPlatformPlugin()); + ourToolwindowWhitelist.put(VCS, getPlatformPlugin()); + ourToolwindowWhitelist.put(MODULES_DEPENDENCIES, getPlatformPlugin()); + ourToolwindowWhitelist.put(DUPLICATES, getPlatformPlugin()); + ourToolwindowWhitelist.put(EXTRACT_METHOD, getPlatformPlugin()); + ourToolwindowWhitelist.put(DOCUMENTATION, getPlatformPlugin()); + ourToolwindowWhitelist.put(TASKS, getPlatformPlugin()); + ourToolwindowWhitelist.put(DATABASE_VIEW, getPlatformPlugin()); + ourToolwindowWhitelist.put(PREVIEW, getPlatformPlugin()); + ourToolwindowWhitelist.put(RUN_DASHBOARD, getPlatformPlugin()); } public ToolWindowCollector() { for (ToolWindowWhitelistEP extension : ToolWindowWhitelistEP.EP_NAME.getExtensions()) { - if (StatisticsUtilKt.isDevelopedByJetBrains(extension.getPluginId())) { - ourToolwindowWhitelist.add(extension.id); + final PluginInfo info = PluginInfoDetectorKt.getPluginInfoById(extension.getPluginId()); + if (info.isDevelopedByJetBrains()) { + ourToolwindowWhitelist.put(extension.id, info); } } @@ -84,36 +89,54 @@ public class ToolWindowCollector implements PersistentStateComponent): PluginInfo { - val pluginId = PluginManagerCore.getPluginByClassName(clazz.name) ?: return PluginInfo(PluginType.PLATFORM, null) + val pluginId = PluginManagerCore.getPluginByClassName(clazz.name) ?: return platformPlugin return getPluginInfoById(pluginId) } @@ -21,7 +21,7 @@ fun getPluginInfo(clazz: Class<*>): PluginInfo { * so API from it may be reported */ fun getPluginInfoById(pluginId: PluginId?): PluginInfo { - if (pluginId == null) return PluginInfo(PluginType.UNKNOWN, null) + if (pluginId == null) return unknownPlugin return getPluginInfoByDescriptor(PluginManager.getPlugin(pluginId)) } @@ -31,7 +31,7 @@ fun getPluginInfoById(pluginId: PluginId?): PluginInfo { * so API from it may be reported */ fun getPluginInfoByDescriptor(plugin: IdeaPluginDescriptor?): PluginInfo { - if (plugin == null) return PluginInfo(PluginType.UNKNOWN, null) + if (plugin == null) return unknownPlugin val id = plugin.pluginId.idString if (PluginManagerMain.isDevelopedByJetBrains(plugin)) { @@ -50,7 +50,7 @@ fun getPluginInfoByDescriptor(plugin: IdeaPluginDescriptor?): PluginInfo { PluginInfo(PluginType.LISTED, id) } else { - PluginInfo(PluginType.NOT_LISTED, null) + notListedPlugin } } @@ -79,4 +79,8 @@ class PluginInfo(val type: PluginType, val id: String?) { fun isSafeToReport(): Boolean { return type.isSafeToReport() } -} \ No newline at end of file +} + +val platformPlugin: PluginInfo = PluginInfo(PluginType.PLATFORM, null) +val unknownPlugin: PluginInfo = PluginInfo(PluginType.UNKNOWN, null) +val notListedPlugin: PluginInfo = PluginInfo(PluginType.NOT_LISTED, null) \ No newline at end of file