Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/mono/wasm/debugger/BrowserDebugProxy/MemberObjectsExplorer.cs')
-rw-r--r--src/mono/wasm/debugger/BrowserDebugProxy/MemberObjectsExplorer.cs56
1 files changed, 17 insertions, 39 deletions
diff --git a/src/mono/wasm/debugger/BrowserDebugProxy/MemberObjectsExplorer.cs b/src/mono/wasm/debugger/BrowserDebugProxy/MemberObjectsExplorer.cs
index 24f4d8522cb..0a854864306 100644
--- a/src/mono/wasm/debugger/BrowserDebugProxy/MemberObjectsExplorer.cs
+++ b/src/mono/wasm/debugger/BrowserDebugProxy/MemberObjectsExplorer.cs
@@ -64,13 +64,8 @@ namespace BrowserDebugProxy
typePropertiesBrowsableInfo.TryGetValue(field.Name, out state);
}
fieldValue["__state"] = state?.ToString();
-
- fieldValue["__section"] = field.Attributes switch
- {
- FieldAttributes.Private => "private",
- FieldAttributes.Public => "result",
- _ => "internal"
- };
+ fieldValue["__section"] = field.Attributes.HasFlag(FieldAttributes.Private)
+ ? "private" : "result";
if (field.IsBackingField)
{
@@ -238,6 +233,9 @@ namespace BrowserDebugProxy
JObject fieldValue = await ReadFieldValue(sdbHelper, retDebuggerCmdReader, field, id.Value, typeInfo, valtype, isOwn, parentTypeId, getCommandOptions, token);
numFieldsRead++;
+ if (typeInfo.Info.IsNonUserCode && getCommandOptions.HasFlag(GetObjectCommandOptions.JustMyCode) && field.Attributes.HasFlag(FieldAttributes.Private))
+ continue;
+
if (!Enum.TryParse(fieldValue["__state"].Value<string>(), out DebuggerBrowsableState fieldState)
|| fieldState == DebuggerBrowsableState.Collapsed)
{
@@ -311,7 +309,7 @@ namespace BrowserDebugProxy
int typeId,
string typeName,
ArraySegment<byte> getterParamsBuffer,
- bool isAutoExpandable,
+ GetObjectCommandOptions getCommandOptions,
DotnetObjectId objectId,
bool isValueType,
bool isOwn,
@@ -347,6 +345,10 @@ namespace BrowserDebugProxy
MethodAttributes getterAttrs = getterInfo.Info.Attributes;
MethodAttributes getterMemberAccessAttrs = getterAttrs & MethodAttributes.MemberAccessMask;
MethodAttributes vtableLayout = getterAttrs & MethodAttributes.VtableLayoutMask;
+
+ if (typeInfo.Info.IsNonUserCode && getCommandOptions.HasFlag(GetObjectCommandOptions.JustMyCode) && getterMemberAccessAttrs == MethodAttributes.Private)
+ continue;
+
bool isNewSlot = (vtableLayout & MethodAttributes.NewSlot) == MethodAttributes.NewSlot;
typePropertiesBrowsableInfo.TryGetValue(propName, out DebuggerBrowsableState? state);
@@ -425,8 +427,7 @@ namespace BrowserDebugProxy
backingField["__section"] = getterMemberAccessAttrs switch
{
MethodAttributes.Private => "private",
- MethodAttributes.Public => "result",
- _ => "internal"
+ _ => "result"
};
backingField["__state"] = state?.ToString();
@@ -454,7 +455,7 @@ namespace BrowserDebugProxy
{
string returnTypeName = await sdbHelper.GetReturnType(getMethodId, token);
JObject propRet = null;
- if (isAutoExpandable || (state is DebuggerBrowsableState.RootHidden && IsACollectionType(returnTypeName)))
+ if (getCommandOptions.HasFlag(GetObjectCommandOptions.AutoExpandable) || getCommandOptions.HasFlag(GetObjectCommandOptions.ForDebuggerProxyAttribute) || (state is DebuggerBrowsableState.RootHidden && IsACollectionType(returnTypeName)))
{
try
{
@@ -474,8 +475,7 @@ namespace BrowserDebugProxy
propRet["__section"] = getterAttrs switch
{
MethodAttributes.Private => "private",
- MethodAttributes.Public => "result",
- _ => "internal"
+ _ => "result"
};
propRet["__state"] = state?.ToString();
if (parentTypeId != -1)
@@ -568,10 +568,6 @@ namespace BrowserDebugProxy
for (int i = 0; i < typeIdsCnt; i++)
{
int typeId = typeIdsIncludingParents[i];
- var typeInfo = await sdbHelper.GetTypeInfo(typeId, token);
-
- if (typeInfo.Info.IsNonUserCode && getCommandType.HasFlag(GetObjectCommandOptions.JustMyCode))
- continue;
int parentTypeId = i + 1 < typeIdsCnt ? typeIdsIncludingParents[i + 1] : -1;
string typeName = await sdbHelper.GetTypeName(typeId, token);
@@ -604,7 +600,7 @@ namespace BrowserDebugProxy
typeId,
typeName,
getPropertiesParamBuffer,
- getCommandType.HasFlag(GetObjectCommandOptions.ForDebuggerProxyAttribute),
+ getCommandType,
id,
isValueType: false,
isOwn,
@@ -656,25 +652,21 @@ namespace BrowserDebugProxy
internal sealed class GetMembersResult
{
- // public:
+ // public / protected / internal:
public JArray Result { get; set; }
// private:
public JArray PrivateMembers { get; set; }
- // protected / internal:
- public JArray OtherMembers { get; set; }
public JObject JObject => JObject.FromObject(new
{
result = Result,
- privateProperties = PrivateMembers,
- internalProperties = OtherMembers
+ privateProperties = PrivateMembers
});
public GetMembersResult()
{
Result = new JArray();
PrivateMembers = new JArray();
- OtherMembers = new JArray();
}
public GetMembersResult(JArray value, bool sortByAccessLevel)
@@ -682,7 +674,6 @@ namespace BrowserDebugProxy
var t = FromValues(value, sortByAccessLevel);
Result = t.Result;
PrivateMembers = t.PrivateMembers;
- OtherMembers = t.OtherMembers;
}
public static GetMembersResult FromValues(IEnumerable<JToken> values, bool splitMembersByAccessLevel = false) =>
@@ -717,9 +708,6 @@ namespace BrowserDebugProxy
case "private":
PrivateMembers.Add(member);
return;
- case "internal":
- OtherMembers.Add(member);
- return;
default:
Result.Add(member);
return;
@@ -730,7 +718,6 @@ namespace BrowserDebugProxy
{
Result = (JArray)Result.DeepClone(),
PrivateMembers = (JArray)PrivateMembers.DeepClone(),
- OtherMembers = (JArray)OtherMembers.DeepClone()
};
public IEnumerable<JToken> Where(Func<JToken, bool> predicate)
@@ -749,26 +736,17 @@ namespace BrowserDebugProxy
yield return item;
}
}
- foreach (var item in OtherMembers)
- {
- if (predicate(item))
- {
- yield return item;
- }
- }
}
internal JToken FirstOrDefault(Func<JToken, bool> p)
=> Result.FirstOrDefault(p)
- ?? PrivateMembers.FirstOrDefault(p)
- ?? OtherMembers.FirstOrDefault(p);
+ ?? PrivateMembers.FirstOrDefault(p);
internal JArray Flatten()
{
var result = new JArray();
result.AddRange(Result);
result.AddRange(PrivateMembers);
- result.AddRange(OtherMembers);
return result;
}
public override string ToString() => $"{JObject}\n";