diff --git a/platform/vcs-log/impl/src/META-INF/vcs-log.xml b/platform/vcs-log/impl/src/META-INF/vcs-log.xml
index 8a8f4ace27f8..f98b4ef31fc3 100644
--- a/platform/vcs-log/impl/src/META-INF/vcs-log.xml
+++ b/platform/vcs-log/impl/src/META-INF/vcs-log.xml
@@ -30,6 +30,11 @@
+
+
+
+
+
diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/statistics/VcsLogValidators.kt b/platform/vcs-log/impl/src/com/intellij/vcs/log/statistics/VcsLogValidators.kt
new file mode 100644
index 000000000000..0d53d1b39e48
--- /dev/null
+++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/statistics/VcsLogValidators.kt
@@ -0,0 +1,41 @@
+// 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.vcs.log.statistics
+
+import com.intellij.internal.statistic.eventLog.validator.ValidationResultType
+import com.intellij.internal.statistic.eventLog.validator.rules.EventContext
+import com.intellij.internal.statistic.eventLog.validator.rules.impl.CustomWhiteListRule
+import com.intellij.internal.statistic.eventLog.validator.rules.impl.LocalEnumCustomWhitelistRule
+import com.intellij.openapi.util.text.StringUtil
+import com.intellij.vcs.log.VcsLogFilterCollection
+import com.intellij.vcs.log.graph.PermanentGraph
+import com.intellij.vcs.log.ui.highlighters.CurrentBranchHighlighter
+import com.intellij.vcs.log.ui.highlighters.MergeCommitsHighlighter
+import com.intellij.vcs.log.ui.highlighters.MyCommitsHighlighter
+import com.intellij.vcs.log.ui.table.GraphTableModel
+
+open class CustomStringsWhiteListRule(private val id: String, private val values: Collection) : CustomWhiteListRule() {
+ final override fun acceptRuleId(ruleId: String?): Boolean = id == ruleId
+
+ final override fun doValidate(data: String, context: EventContext): ValidationResultType {
+ if (values.contains(data)) return ValidationResultType.ACCEPTED
+ return ValidationResultType.REJECTED
+ }
+}
+
+class VcsLogTriggerEventIdValidator :
+ CustomStringsWhiteListRule("vcs_log_trigger_event_id", VcsLogUsageTriggerCollector.VcsLogEvent.values().map { it.id }.toSet())
+
+class VcsLogFilterNameValidator :
+ CustomStringsWhiteListRule("vcs_log_filter_name", VcsLogFilterCollection.STANDARD_KEYS.map { it.name }.toSet())
+
+class VcsLogSortKindValidator :
+ LocalEnumCustomWhitelistRule("vcs_log_sort_kind", PermanentGraph.SortType::class.java)
+
+class VcsLogHighlighterIdValidator :
+ CustomStringsWhiteListRule("vcs_log_highlighter_id", setOf(MyCommitsHighlighter.Factory.ID, MergeCommitsHighlighter.Factory.ID,
+ CurrentBranchHighlighter.Factory.ID))
+
+class VcsLogColumnNameValidator :
+ CustomStringsWhiteListRule("vcs_log_column_name", GraphTableModel.DYNAMIC_COLUMNS.map {
+ StringUtil.toLowerCase(GraphTableModel.COLUMN_NAMES[it])
+ }.toSet())
\ No newline at end of file
diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/highlighters/MergeCommitsHighlighter.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/highlighters/MergeCommitsHighlighter.java
index a5ce599ecc63..f36f5c8fcd6a 100644
--- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/highlighters/MergeCommitsHighlighter.java
+++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/highlighters/MergeCommitsHighlighter.java
@@ -45,7 +45,7 @@ public class MergeCommitsHighlighter implements VcsLogHighlighter {
}
public static class Factory implements VcsLogHighlighterFactory {
- @NotNull private static final String ID = "MERGE_COMMITS";
+ @NotNull public static final String ID = "MERGE_COMMITS";
@NotNull
@Override