diff --git a/platform/platform-impl/src/com/intellij/ide/FeedbackDescriptionProvider.kt b/platform/platform-impl/src/com/intellij/ide/FeedbackDescriptionProvider.kt new file mode 100644 index 000000000000..40d7415ec69a --- /dev/null +++ b/platform/platform-impl/src/com/intellij/ide/FeedbackDescriptionProvider.kt @@ -0,0 +1,15 @@ +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.ide + +import com.intellij.openapi.project.Project + +/** + * Allows plugins to add additional details, which we want to see pre-populated in the bug reports. + */ +interface FeedbackDescriptionProvider { + + /** + * @return additional description details. + */ + fun getDescription(project: Project?): String? +} diff --git a/platform/platform-impl/src/com/intellij/ide/actions/ReportProblemAction.java b/platform/platform-impl/src/com/intellij/ide/actions/ReportProblemAction.java index f1a7ba673e39..bcf4a5c47ed5 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/ReportProblemAction.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/ReportProblemAction.java @@ -17,6 +17,6 @@ public class ReportProblemAction extends DumbAwareAction { @Override public void actionPerformed(@NotNull AnActionEvent e) { ApplicationInfoEx appInfo = ApplicationInfoEx.getInstanceEx(); - SendFeedbackAction.doPerformActionImpl(e.getProject(), appInfo.getYoutrackUrl(), SendFeedbackAction.getDescription()); + SendFeedbackAction.doPerformActionImpl(e.getProject(), appInfo.getYoutrackUrl(), SendFeedbackAction.getDescription(e.getProject())); } } diff --git a/platform/platform-impl/src/com/intellij/ide/actions/SendFeedbackAction.java b/platform/platform-impl/src/com/intellij/ide/actions/SendFeedbackAction.java index e02738438271..f796371f135e 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/SendFeedbackAction.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/SendFeedbackAction.java @@ -17,9 +17,11 @@ package com.intellij.ide.actions; import com.intellij.ide.BrowserUtil; +import com.intellij.ide.FeedbackDescriptionProvider; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.application.ex.ApplicationInfoEx; +import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.SystemInfo; @@ -43,7 +45,7 @@ public class SendFeedbackAction extends AnAction implements DumbAware { } public static void doPerformAction(@Nullable Project project) { - doPerformActionImpl(project, ApplicationInfoEx.getInstanceEx().getFeedbackUrl(), getDescription()); + doPerformActionImpl(project, ApplicationInfoEx.getInstanceEx().getFeedbackUrl(), getDescription(project)); } public static void doPerformAction(@Nullable Project project, @NotNull String description) { @@ -64,8 +66,17 @@ public class SendFeedbackAction extends AnAction implements DumbAware { BrowserUtil.browse(url, project); } + /** + * @deprecated use {@link #getDescription(Project)} instead + */ + @Deprecated @NotNull public static String getDescription() { + return getDescription(null); + } + + @NotNull + public static String getDescription(@Nullable Project project) { StringBuilder sb = new StringBuilder("\n\n"); sb.append(ApplicationInfoEx.getInstanceEx().getBuild().asString()).append(", "); String javaVersion = System.getProperty("java.runtime.version", System.getProperty("java.version", "unknown")); @@ -106,6 +117,14 @@ public class SendFeedbackAction extends AnAction implements DumbAware { sb.append(SystemInfo.isMac ? "; Retina" : "; HiDPI"); } } + for (FeedbackDescriptionProvider ext : EP_NAME.getExtensions()) { + String pluginDescription = ext.getDescription(project); + if (pluginDescription != null && pluginDescription.length() > 0) + sb.append("\n").append(pluginDescription); + } return sb.toString(); } -} + + private static ExtensionPointName EP_NAME = + new ExtensionPointName<>("com.intellij.feedbackDescriptionProvider"); +} \ No newline at end of file diff --git a/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml b/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml index 4459c1107fea..6666fd550e2b 100644 --- a/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml +++ b/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml @@ -348,5 +348,7 @@ + +