Skip to content

Commit 6ca040b

Browse files
authored
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
1 parent 1cfa82c commit 6ca040b

File tree

11 files changed

+97
-12
lines changed

11 files changed

+97
-12
lines changed

api/Avalonia.Skia.nupkg.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<!-- https://learn.microsoft.com/en-us/dotnet/fundamentals/package-validation/diagnostic-ids -->
33
<Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
44
<Suppression>
@@ -7,4 +7,4 @@
77
<Left>baseline/netstandard2.0/Avalonia.Skia.dll</Left>
88
<Right>target/netstandard2.0/Avalonia.Skia.dll</Right>
99
</Suppression>
10-
</Suppressions>
10+
</Suppressions>

api/Avalonia.nupkg.xml

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,20 @@
22
<!-- https://learn.microsoft.com/en-us/dotnet/fundamentals/package-validation/diagnostic-ids -->
33
<Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
44
<Suppression>
5-
<DiagnosticId>CP0001</DiagnosticId>
6-
<Target>T:Avalonia.Diagnostics.AppliedStyle</Target>
5+
<DiagnosticId>CP0002</DiagnosticId>
6+
<Target>M:Avalonia.Diagnostics.AppliedStyle.get_HasActivator</Target>
77
<Left>baseline/netstandard2.0/Avalonia.Base.dll</Left>
88
<Right>target/netstandard2.0/Avalonia.Base.dll</Right>
99
</Suppression>
1010
<Suppression>
11-
<DiagnosticId>CP0001</DiagnosticId>
12-
<Target>T:Avalonia.Diagnostics.StyleDiagnostics</Target>
11+
<DiagnosticId>CP0002</DiagnosticId>
12+
<Target>M:Avalonia.Diagnostics.AppliedStyle.get_IsActive</Target>
13+
<Left>baseline/netstandard2.0/Avalonia.Base.dll</Left>
14+
<Right>target/netstandard2.0/Avalonia.Base.dll</Right>
15+
</Suppression>
16+
<Suppression>
17+
<DiagnosticId>CP0002</DiagnosticId>
18+
<Target>M:Avalonia.Diagnostics.AppliedStyle.get_Style</Target>
1319
<Left>baseline/netstandard2.0/Avalonia.Base.dll</Left>
1420
<Right>target/netstandard2.0/Avalonia.Base.dll</Right>
1521
</Suppression>
@@ -19,6 +25,18 @@
1925
<Left>baseline/netstandard2.0/Avalonia.Base.dll</Left>
2026
<Right>target/netstandard2.0/Avalonia.Base.dll</Right>
2127
</Suppression>
28+
<Suppression>
29+
<DiagnosticId>CP0002</DiagnosticId>
30+
<Target>M:Avalonia.Diagnostics.StyleDiagnostics.#ctor(System.Collections.Generic.IReadOnlyList{Avalonia.Diagnostics.AppliedStyle})</Target>
31+
<Left>baseline/netstandard2.0/Avalonia.Base.dll</Left>
32+
<Right>target/netstandard2.0/Avalonia.Base.dll</Right>
33+
</Suppression>
34+
<Suppression>
35+
<DiagnosticId>CP0002</DiagnosticId>
36+
<Target>M:Avalonia.Diagnostics.StyleDiagnostics.get_AppliedStyles</Target>
37+
<Left>baseline/netstandard2.0/Avalonia.Base.dll</Left>
38+
<Right>target/netstandard2.0/Avalonia.Base.dll</Right>
39+
</Suppression>
2240
<Suppression>
2341
<DiagnosticId>CP0002</DiagnosticId>
2442
<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 @@
5573
<Left>baseline/netstandard2.0/Avalonia.Controls.dll</Left>
5674
<Right>target/netstandard2.0/Avalonia.Controls.dll</Right>
5775
</Suppression>
76+
<Suppression>
77+
<DiagnosticId>CP0009</DiagnosticId>
78+
<Target>T:Avalonia.Diagnostics.StyleDiagnostics</Target>
79+
<Left>baseline/netstandard2.0/Avalonia.Base.dll</Left>
80+
<Right>target/netstandard2.0/Avalonia.Base.dll</Right>
81+
</Suppression>
5882
<Suppression>
5983
<DiagnosticId>CP0009</DiagnosticId>
6084
<Target>T:Avalonia.Controls.Screens</Target>

src/Avalonia.Base/Diagnostics/IValueFrameDiagnostic.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44

55
namespace Avalonia.Diagnostics;
66

7+
[PrivateApi]
78
public record ValueEntryDiagnostic(AvaloniaProperty Property, object? Value);
89

9-
[Unstable]
10+
[PrivateApi]
1011
[NotClientImplementable]
1112
public interface IValueFrameDiagnostic
1213
{
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using Avalonia.Metadata;
4+
using Avalonia.Styling;
5+
6+
namespace Avalonia.Diagnostics;
7+
8+
[PrivateApi]
9+
[Unstable("Use StyledElementExtensions.GetValueStoreDiagnostic() instead")]
10+
public class StyleDiagnostics
11+
{
12+
/// <summary>
13+
/// Currently applied styles.
14+
/// </summary>
15+
public IReadOnlyList<AppliedStyle> AppliedStyles { get; }
16+
17+
public StyleDiagnostics(IReadOnlyList<AppliedStyle> appliedStyles)
18+
{
19+
AppliedStyles = appliedStyles;
20+
}
21+
}
22+
23+
[PrivateApi]
24+
[Unstable("Use StyledElementExtensions.GetValueStoreDiagnostic() instead")]
25+
public sealed class AppliedStyle
26+
{
27+
private readonly StyleInstance _instance;
28+
29+
internal AppliedStyle(StyleInstance instance)
30+
{
31+
_instance = instance;
32+
}
33+
34+
public bool HasActivator => _instance.HasActivator;
35+
public bool IsActive => _instance.IsActive();
36+
public StyleBase Style => (StyleBase)_instance.Source;
37+
}

src/Avalonia.Base/Diagnostics/StyleValueFrameDiagnostic.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Collections.Generic;
22
using Avalonia.Data;
3+
using Avalonia.Metadata;
34
using Avalonia.PropertyStore;
45
using Avalonia.Styling;
56

@@ -60,4 +61,7 @@ private string GetFullSelector(Style? style)
6061

6162
return string.Concat(selectors);
6263
}
64+
65+
[Unstable("Compatibility with 11.x")]
66+
public AppliedStyle AsAppliedStyle() => new AppliedStyle(_styleInstance);
6367
}

src/Avalonia.Base/Diagnostics/StyledElementExtensions.cs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
1-
namespace Avalonia.Diagnostics;
1+
using System;
2+
using System.Linq;
3+
using Avalonia.Metadata;
4+
using Avalonia.Styling;
5+
6+
namespace Avalonia.Diagnostics;
27

38
/// <summary>
49
/// Defines diagnostic extensions on <see cref="StyledElement"/>s.
510
/// </summary>
11+
[PrivateApi]
612
public static class StyledElementExtensions
713
{
814
/// <summary>
@@ -13,4 +19,15 @@ public static ValueStoreDiagnostic GetValueStoreDiagnostic(this StyledElement st
1319
{
1420
return styledElement.GetValueStore().GetStoreDiagnostic();
1521
}
22+
23+
[Obsolete("Use StyledElementExtensions.GetValueStoreDiagnostic instead", true)]
24+
public static StyleDiagnostics GetStyleDiagnostics(this StyledElement styledElement)
25+
{
26+
var diagnostics = styledElement.GetValueStore().GetStoreDiagnostic();
27+
return new StyleDiagnostics(diagnostics.AppliedFrames
28+
.OfType<StyleValueFrameDiagnostic>()
29+
.Select(f => f.AsAppliedStyle())
30+
.ToArray());
31+
}
1632
}
33+

src/Avalonia.Base/Diagnostics/ValueStoreDiagnostic.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
using System.Collections.Generic;
2+
using Avalonia.Metadata;
23
using Avalonia.Styling;
34

45
namespace Avalonia.Diagnostics;
56

7+
[PrivateApi]
68
public class ValueStoreDiagnostic
79
{
810
/// <summary>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace Avalonia.Media.Fonts.Tables
1010
/// Exception font loading can throw if it encounters invalid data during font loading.
1111
/// </summary>
1212
/// <seealso cref="Exception" />
13-
public class InvalidFontTableException : Exception
13+
internal class InvalidFontTableException : Exception
1414
{
1515
/// <summary>
1616
/// Initializes a new instance of the <see cref="InvalidFontTableException"/> class.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace Avalonia.Media.Fonts.Tables
88
/// Provides enumeration of common name ids
99
/// <see href="https://docs.microsoft.com/en-us/typography/opentype/spec/name#name-ids"/>
1010
/// </summary>
11-
public enum KnownNameIds : ushort
11+
internal enum KnownNameIds : ushort
1212
{
1313
/// <summary>
1414
/// The copyright notice

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace Avalonia.Media.Fonts.Tables
1010
/// Exception font loading can throw if it finds a required table is missing during font loading.
1111
/// </summary>
1212
/// <seealso cref="Exception" />
13-
public class MissingFontTableException : Exception
13+
internal class MissingFontTableException : Exception
1414
{
1515
/// <summary>
1616
/// Initializes a new instance of the <see cref="MissingFontTableException"/> class.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
namespace Avalonia.Browser.Rendering;
1212

13-
public partial class RenderWorker
13+
internal partial class RenderWorker
1414
{
1515
[DllImport("*")]
1616
private static extern int pthread_self();

0 commit comments

Comments
 (0)