IDEA-361349 Debugger Shows Internal Android Fields - added EP

GitOrigin-RevId: e4e88b06bbcac856bfe3b539354240aacefd586b
This commit is contained in:
Egor Ushakov
2024-11-08 20:41:51 +00:00
committed by intellij-monorepo-bot
parent 2dd1692215
commit c38063f59b
3 changed files with 26 additions and 1 deletions
@@ -5,6 +5,7 @@ import com.intellij.debugger.DebuggerContext;
import com.intellij.debugger.JavaDebuggerBundle;
import com.intellij.debugger.engine.DebuggerManagerThreadImpl;
import com.intellij.debugger.engine.DebuggerUtils;
import com.intellij.debugger.engine.FieldVisibilityProvider;
import com.intellij.debugger.engine.evaluation.EvaluateException;
import com.intellij.debugger.engine.evaluation.EvaluationContext;
import com.intellij.debugger.engine.jdi.StackFrameProxy;
@@ -293,7 +294,7 @@ public class ClassRenderer extends NodeRendererImpl {
return false;
}
return true;
return FieldVisibilityProvider.shouldDisplayField(field);
}
@Override
@@ -0,0 +1,21 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.debugger.engine
import com.intellij.openapi.extensions.ExtensionPointName
import com.sun.jdi.Field
/**
* Allows plugins to hide fields unconditionally
*
* The field will be displayed only if all extensions allow.
*/
interface FieldVisibilityProvider {
fun shouldDisplay(field: Field): Boolean
companion object {
private val EP_NAME: ExtensionPointName<FieldVisibilityProvider> = ExtensionPointName.create("com.intellij.debugger.fieldVisibilityProvider")
@JvmStatic
fun shouldDisplayField(field: Field): Boolean = EP_NAME.findFirstSafe { !it.shouldDisplay(field) } == null
}
}
@@ -303,6 +303,9 @@
<extensionPoint qualifiedName="com.intellij.debugger.syntheticProvider"
interface="com.intellij.debugger.engine.SyntheticTypeComponentProvider" dynamic="true"/>
<extensionPoint qualifiedName="com.intellij.debugger.fieldVisibilityProvider"
interface="com.intellij.debugger.engine.FieldVisibilityProvider" dynamic="true"/>
<extensionPoint qualifiedName="com.intellij.debugger.extraSteppingFilter"
interface="com.intellij.debugger.engine.ExtraSteppingFilter" dynamic="true"/>