Browse Source

11.2.x Private/PublicAPI adjustments (#16733)

* Mark RenderWorker as internal

* Add remaining Fonts.Tables types as internal

* Mark new diagnostic APIs as a PrivateAPI

* Restore old GetStyleDiagnostics APIs, but mark them with [PrivateApi], avoiding breaking changes
pull/16734/head
Max Katz 2 years ago
committed by GitHub
parent
commit
6ca040b3b3
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 4
      api/Avalonia.Skia.nupkg.xml
  2. 32
      api/Avalonia.nupkg.xml
  3. 3
      src/Avalonia.Base/Diagnostics/IValueFrameDiagnostic.cs
  4. 37
      src/Avalonia.Base/Diagnostics/StyleDiagnostics.cs
  5. 4
      src/Avalonia.Base/Diagnostics/StyleValueFrameDiagnostic.cs
  6. 19
      src/Avalonia.Base/Diagnostics/StyledElementExtensions.cs
  7. 2
      src/Avalonia.Base/Diagnostics/ValueStoreDiagnostic.cs
  8. 2
      src/Avalonia.Base/Media/Fonts/Tables/InvalidFontTableException.cs
  9. 2
      src/Avalonia.Base/Media/Fonts/Tables/KnownNameIds.cs
  10. 2
      src/Avalonia.Base/Media/Fonts/Tables/MissingFontTableException.cs
  11. 2
      src/Browser/Avalonia.Browser/Rendering/RenderWorker.cs

4
api/Avalonia.Skia.nupkg.xml

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- https://learn.microsoft.com/en-us/dotnet/fundamentals/package-validation/diagnostic-ids --> <!-- https://learn.microsoft.com/en-us/dotnet/fundamentals/package-validation/diagnostic-ids -->
<Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Suppression> <Suppression>
@ -7,4 +7,4 @@
<Left>baseline/netstandard2.0/Avalonia.Skia.dll</Left> <Left>baseline/netstandard2.0/Avalonia.Skia.dll</Left>
<Right>target/netstandard2.0/Avalonia.Skia.dll</Right> <Right>target/netstandard2.0/Avalonia.Skia.dll</Right>
</Suppression> </Suppression>
</Suppressions> </Suppressions>

32
api/Avalonia.nupkg.xml

@ -2,14 +2,20 @@
<!-- https://learn.microsoft.com/en-us/dotnet/fundamentals/package-validation/diagnostic-ids --> <!-- https://learn.microsoft.com/en-us/dotnet/fundamentals/package-validation/diagnostic-ids -->
<Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Suppression> <Suppression>
<DiagnosticId>CP0001</DiagnosticId> <DiagnosticId>CP0002</DiagnosticId>
<Target>T:Avalonia.Diagnostics.AppliedStyle</Target> <Target>M:Avalonia.Diagnostics.AppliedStyle.get_HasActivator</Target>
<Left>baseline/netstandard2.0/Avalonia.Base.dll</Left> <Left>baseline/netstandard2.0/Avalonia.Base.dll</Left>
<Right>target/netstandard2.0/Avalonia.Base.dll</Right> <Right>target/netstandard2.0/Avalonia.Base.dll</Right>
</Suppression> </Suppression>
<Suppression> <Suppression>
<DiagnosticId>CP0001</DiagnosticId> <DiagnosticId>CP0002</DiagnosticId>
<Target>T:Avalonia.Diagnostics.StyleDiagnostics</Target> <Target>M:Avalonia.Diagnostics.AppliedStyle.get_IsActive</Target>
<Left>baseline/netstandard2.0/Avalonia.Base.dll</Left>
<Right>target/netstandard2.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Diagnostics.AppliedStyle.get_Style</Target>
<Left>baseline/netstandard2.0/Avalonia.Base.dll</Left> <Left>baseline/netstandard2.0/Avalonia.Base.dll</Left>
<Right>target/netstandard2.0/Avalonia.Base.dll</Right> <Right>target/netstandard2.0/Avalonia.Base.dll</Right>
</Suppression> </Suppression>
@ -19,6 +25,18 @@
<Left>baseline/netstandard2.0/Avalonia.Base.dll</Left> <Left>baseline/netstandard2.0/Avalonia.Base.dll</Left>
<Right>target/netstandard2.0/Avalonia.Base.dll</Right> <Right>target/netstandard2.0/Avalonia.Base.dll</Right>
</Suppression> </Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Diagnostics.StyleDiagnostics.#ctor(System.Collections.Generic.IReadOnlyList{Avalonia.Diagnostics.AppliedStyle})</Target>
<Left>baseline/netstandard2.0/Avalonia.Base.dll</Left>
<Right>target/netstandard2.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Diagnostics.StyleDiagnostics.get_AppliedStyles</Target>
<Left>baseline/netstandard2.0/Avalonia.Base.dll</Left>
<Right>target/netstandard2.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression> <Suppression>
<DiagnosticId>CP0002</DiagnosticId> <DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Primitives.IPopupHost.ConfigurePosition(Avalonia.Visual,Avalonia.Controls.PlacementMode,Avalonia.Point,Avalonia.Controls.Primitives.PopupPositioning.PopupAnchor,Avalonia.Controls.Primitives.PopupPositioning.PopupGravity,Avalonia.Controls.Primitives.PopupPositioning.PopupPositionerConstraintAdjustment,System.Nullable{Avalonia.Rect})</Target> <Target>M:Avalonia.Controls.Primitives.IPopupHost.ConfigurePosition(Avalonia.Visual,Avalonia.Controls.PlacementMode,Avalonia.Point,Avalonia.Controls.Primitives.PopupPositioning.PopupAnchor,Avalonia.Controls.Primitives.PopupPositioning.PopupGravity,Avalonia.Controls.Primitives.PopupPositioning.PopupPositionerConstraintAdjustment,System.Nullable{Avalonia.Rect})</Target>
@ -55,6 +73,12 @@
<Left>baseline/netstandard2.0/Avalonia.Controls.dll</Left> <Left>baseline/netstandard2.0/Avalonia.Controls.dll</Left>
<Right>target/netstandard2.0/Avalonia.Controls.dll</Right> <Right>target/netstandard2.0/Avalonia.Controls.dll</Right>
</Suppression> </Suppression>
<Suppression>
<DiagnosticId>CP0009</DiagnosticId>
<Target>T:Avalonia.Diagnostics.StyleDiagnostics</Target>
<Left>baseline/netstandard2.0/Avalonia.Base.dll</Left>
<Right>target/netstandard2.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression> <Suppression>
<DiagnosticId>CP0009</DiagnosticId> <DiagnosticId>CP0009</DiagnosticId>
<Target>T:Avalonia.Controls.Screens</Target> <Target>T:Avalonia.Controls.Screens</Target>

3
src/Avalonia.Base/Diagnostics/IValueFrameDiagnostic.cs

@ -4,9 +4,10 @@ using Avalonia.Metadata;
namespace Avalonia.Diagnostics; namespace Avalonia.Diagnostics;
[PrivateApi]
public record ValueEntryDiagnostic(AvaloniaProperty Property, object? Value); public record ValueEntryDiagnostic(AvaloniaProperty Property, object? Value);
[Unstable] [PrivateApi]
[NotClientImplementable] [NotClientImplementable]
public interface IValueFrameDiagnostic public interface IValueFrameDiagnostic
{ {

37
src/Avalonia.Base/Diagnostics/StyleDiagnostics.cs

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using Avalonia.Metadata;
using Avalonia.Styling;
namespace Avalonia.Diagnostics;
[PrivateApi]
[Unstable("Use StyledElementExtensions.GetValueStoreDiagnostic() instead")]
public class StyleDiagnostics
{
/// <summary>
/// Currently applied styles.
/// </summary>
public IReadOnlyList<AppliedStyle> AppliedStyles { get; }
public StyleDiagnostics(IReadOnlyList<AppliedStyle> appliedStyles)
{
AppliedStyles = appliedStyles;
}
}
[PrivateApi]
[Unstable("Use StyledElementExtensions.GetValueStoreDiagnostic() instead")]
public sealed class AppliedStyle
{
private readonly StyleInstance _instance;
internal AppliedStyle(StyleInstance instance)
{
_instance = instance;
}
public bool HasActivator => _instance.HasActivator;
public bool IsActive => _instance.IsActive();
public StyleBase Style => (StyleBase)_instance.Source;
}

4
src/Avalonia.Base/Diagnostics/StyleValueFrameDiagnostic.cs

@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using Avalonia.Data; using Avalonia.Data;
using Avalonia.Metadata;
using Avalonia.PropertyStore; using Avalonia.PropertyStore;
using Avalonia.Styling; using Avalonia.Styling;
@ -60,4 +61,7 @@ internal class StyleValueFrameDiagnostic : IValueFrameDiagnostic
return string.Concat(selectors); return string.Concat(selectors);
} }
[Unstable("Compatibility with 11.x")]
public AppliedStyle AsAppliedStyle() => new AppliedStyle(_styleInstance);
} }

19
src/Avalonia.Base/Diagnostics/StyledElementExtensions.cs

@ -1,8 +1,14 @@
namespace Avalonia.Diagnostics; using System;
using System.Linq;
using Avalonia.Metadata;
using Avalonia.Styling;
namespace Avalonia.Diagnostics;
/// <summary> /// <summary>
/// Defines diagnostic extensions on <see cref="StyledElement"/>s. /// Defines diagnostic extensions on <see cref="StyledElement"/>s.
/// </summary> /// </summary>
[PrivateApi]
public static class StyledElementExtensions public static class StyledElementExtensions
{ {
/// <summary> /// <summary>
@ -13,4 +19,15 @@ public static class StyledElementExtensions
{ {
return styledElement.GetValueStore().GetStoreDiagnostic(); return styledElement.GetValueStore().GetStoreDiagnostic();
} }
[Obsolete("Use StyledElementExtensions.GetValueStoreDiagnostic instead", true)]
public static StyleDiagnostics GetStyleDiagnostics(this StyledElement styledElement)
{
var diagnostics = styledElement.GetValueStore().GetStoreDiagnostic();
return new StyleDiagnostics(diagnostics.AppliedFrames
.OfType<StyleValueFrameDiagnostic>()
.Select(f => f.AsAppliedStyle())
.ToArray());
}
} }

2
src/Avalonia.Base/Diagnostics/ValueStoreDiagnostic.cs

@ -1,8 +1,10 @@
using System.Collections.Generic; using System.Collections.Generic;
using Avalonia.Metadata;
using Avalonia.Styling; using Avalonia.Styling;
namespace Avalonia.Diagnostics; namespace Avalonia.Diagnostics;
[PrivateApi]
public class ValueStoreDiagnostic public class ValueStoreDiagnostic
{ {
/// <summary> /// <summary>

2
src/Avalonia.Base/Media/Fonts/Tables/InvalidFontTableException.cs

@ -10,7 +10,7 @@ namespace Avalonia.Media.Fonts.Tables
/// Exception font loading can throw if it encounters invalid data during font loading. /// Exception font loading can throw if it encounters invalid data during font loading.
/// </summary> /// </summary>
/// <seealso cref="Exception" /> /// <seealso cref="Exception" />
public class InvalidFontTableException : Exception internal class InvalidFontTableException : Exception
{ {
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="InvalidFontTableException"/> class. /// Initializes a new instance of the <see cref="InvalidFontTableException"/> class.

2
src/Avalonia.Base/Media/Fonts/Tables/KnownNameIds.cs

@ -8,7 +8,7 @@ namespace Avalonia.Media.Fonts.Tables
/// Provides enumeration of common name ids /// Provides enumeration of common name ids
/// <see href="https://docs.microsoft.com/en-us/typography/opentype/spec/name#name-ids"/> /// <see href="https://docs.microsoft.com/en-us/typography/opentype/spec/name#name-ids"/>
/// </summary> /// </summary>
public enum KnownNameIds : ushort internal enum KnownNameIds : ushort
{ {
/// <summary> /// <summary>
/// The copyright notice /// The copyright notice

2
src/Avalonia.Base/Media/Fonts/Tables/MissingFontTableException.cs

@ -10,7 +10,7 @@ namespace Avalonia.Media.Fonts.Tables
/// Exception font loading can throw if it finds a required table is missing during font loading. /// Exception font loading can throw if it finds a required table is missing during font loading.
/// </summary> /// </summary>
/// <seealso cref="Exception" /> /// <seealso cref="Exception" />
public class MissingFontTableException : Exception internal class MissingFontTableException : Exception
{ {
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="MissingFontTableException"/> class. /// Initializes a new instance of the <see cref="MissingFontTableException"/> class.

2
src/Browser/Avalonia.Browser/Rendering/RenderWorker.cs

@ -10,7 +10,7 @@ using Avalonia.Browser.Interop;
namespace Avalonia.Browser.Rendering; namespace Avalonia.Browser.Rendering;
public partial class RenderWorker internal partial class RenderWorker
{ {
[DllImport("*")] [DllImport("*")]
private static extern int pthread_self(); private static extern int pthread_self();

Loading…
Cancel
Save