From 36a246a8482a421fb45b82ab46a2b8092b8c46cb Mon Sep 17 00:00:00 2001 From: Jonathan Pobst Date: Mon, 20 Apr 2020 11:44:05 -0500 Subject: [PATCH 1/3] [Mono.Android] Hide "internal" members of JLO from IDEs. --- src/Mono.Android/Java.Lang/Object.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/Mono.Android/Java.Lang/Object.cs b/src/Mono.Android/Java.Lang/Object.cs index d38e01d871c..5f4e1da2d40 100644 --- a/src/Mono.Android/Java.Lang/Object.cs +++ b/src/Mono.Android/Java.Lang/Object.cs @@ -6,6 +6,8 @@ using Java.Interop; using Android.Runtime; +using System.ComponentModel; +using System.Diagnostics; namespace Java.Lang { @@ -91,21 +93,29 @@ internal void SetHandleOnDeserialized (StreamingContext context) } #if JAVA_INTEROP + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] public int JniIdentityHashCode { get {return (int) key_handle;} } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] public JniObjectReference PeerReference { get { return new JniObjectReference (handle, (JniObjectReferenceType) handle_type); } } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] public virtual JniPeerMembers JniPeerMembers { get { return _members; } } #endif // JAVA_INTEROP + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] public IntPtr Handle { get { if (weak_handle != IntPtr.Zero) @@ -115,10 +125,14 @@ public IntPtr Handle { } } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] protected virtual IntPtr ThresholdClass { get { return Class.Object; } } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] protected virtual System.Type ThresholdType { get { return typeof (Java.Lang.Object); } } @@ -154,6 +168,7 @@ void IJavaPeerable.DisposeUnlessReferenced () } } + [EditorBrowsable (EditorBrowsableState.Never)] public void UnregisterFromRuntime () { JNIEnv.AndroidValueManager.RemovePeer (this, key_handle); @@ -231,6 +246,7 @@ internal static void Dispose (IJavaPeerable instance, ref IntPtr handle, IntPtr } } + [EditorBrowsable (EditorBrowsableState.Never)] protected void SetHandle (IntPtr value, JniHandleOwnership transfer) { JNIEnv.AndroidValueManager.AddPeer (this, value, transfer, out handle); @@ -287,6 +303,7 @@ internal static IJavaPeerable GetObject (IntPtr handle, JniHandleOwnership trans return Java.Interop.TypeManager.CreateInstance (handle, transfer, type); } + [EditorBrowsable (EditorBrowsableState.Never)] public T[] ToArray() { return JNIEnv.GetArray(Handle); From bd43205595b6c43d24d5ad676d6f1f8f1227eca2 Mon Sep 17 00:00:00 2001 From: Jonathan Pobst Date: Tue, 21 Apr 2020 10:05:10 -0500 Subject: [PATCH 2/3] Address feedback, add Java.Lang.Throwable. --- src/Mono.Android/Java.Lang/Object.cs | 2 -- src/Mono.Android/Java.Lang/Throwable.cs | 13 +++++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Mono.Android/Java.Lang/Object.cs b/src/Mono.Android/Java.Lang/Object.cs index 5f4e1da2d40..e50289e7db3 100644 --- a/src/Mono.Android/Java.Lang/Object.cs +++ b/src/Mono.Android/Java.Lang/Object.cs @@ -93,7 +93,6 @@ internal void SetHandleOnDeserialized (StreamingContext context) } #if JAVA_INTEROP - [DebuggerBrowsable (DebuggerBrowsableState.Never)] [EditorBrowsable (EditorBrowsableState.Never)] public int JniIdentityHashCode { get {return (int) key_handle;} @@ -114,7 +113,6 @@ public virtual JniPeerMembers JniPeerMembers { } #endif // JAVA_INTEROP - [DebuggerBrowsable (DebuggerBrowsableState.Never)] [EditorBrowsable (EditorBrowsableState.Never)] public IntPtr Handle { get { diff --git a/src/Mono.Android/Java.Lang/Throwable.cs b/src/Mono.Android/Java.Lang/Throwable.cs index 7c5fb6616b7..76654f0b6a2 100644 --- a/src/Mono.Android/Java.Lang/Throwable.cs +++ b/src/Mono.Android/Java.Lang/Throwable.cs @@ -4,6 +4,8 @@ using Java.Interop; using Android.Runtime; +using System.ComponentModel; +using System.Diagnostics; namespace Java.Lang { @@ -171,27 +173,37 @@ public override string ToString () } #if JAVA_INTEROP + [EditorBrowsable (EditorBrowsableState.Never)] public int JniIdentityHashCode { get {return (int) key_handle;} } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] public JniObjectReference PeerReference { get { return new JniObjectReference (handle, (JniObjectReferenceType) handle_type); } } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] public virtual JniPeerMembers JniPeerMembers { get { return _members; } } #endif // JAVA_INTEROP + [EditorBrowsable (EditorBrowsableState.Never)] public IntPtr Handle { get { return handle; } } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] protected virtual IntPtr ThresholdClass { get { return class_ref; } } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] protected virtual System.Type ThresholdType { get { return typeof (Java.Lang.Throwable); } } @@ -226,6 +238,7 @@ public unsafe Java.Lang.Class Class { } } + [EditorBrowsable (EditorBrowsableState.Never)] protected void SetHandle (IntPtr value, JniHandleOwnership transfer) { JNIEnv.AndroidValueManager.AddPeer (this, value, transfer, out handle); From e9c92135c62e56b1ee758b47f7e74c6e372ecc6c Mon Sep 17 00:00:00 2001 From: Jonathan Pobst Date: Wed, 22 Apr 2020 09:54:54 -0500 Subject: [PATCH 3/3] Add release notes. --- Documentation/release-notes/4583.md | 17 +++++++++++++++++ Documentation/release-notes/images/4583.png | Bin 0 -> 8606 bytes 2 files changed, 17 insertions(+) create mode 100644 Documentation/release-notes/4583.md create mode 100644 Documentation/release-notes/images/4583.png diff --git a/Documentation/release-notes/4583.md b/Documentation/release-notes/4583.md new file mode 100644 index 00000000000..6c360f18d1a --- /dev/null +++ b/Documentation/release-notes/4583.md @@ -0,0 +1,17 @@ +### Tidier IntelliSense suggestions for Java.Lang.Object subclasses + +`Java.Lang.Object` contains several properties and methods that are +required to be `public` to support bindings, but are not intended +to be called by users. Use `[EditorBrowser]` to hide them from +IntelliSense, making it easier to find useful members. + +[IntelliSense cleanup)[images/4583.png] + +### Issues fixed + +#### IDE compatibility + + * [GitHub 4582](https://github.com/xamarin/xamarin-android/issues/4582): + Some `Java.Lang.Object` properties and methods like `Handle` and + `PeerReference` appeared in IntelliSense suggestions even though they were + primarily intended for use only in generated code. \ No newline at end of file diff --git a/Documentation/release-notes/images/4583.png b/Documentation/release-notes/images/4583.png new file mode 100644 index 0000000000000000000000000000000000000000..5296a74c6ed1ab570347fcb0f4d9d38031c82763 GIT binary patch literal 8606 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