49 lines
1.1 KiB
C#
49 lines
1.1 KiB
C#
|
|
// Licensed to the .NET Foundation under one or more agreements.
|
||
|
|
// The .NET Foundation licenses this file to you under the MIT license.
|
||
|
|
|
||
|
|
namespace Microsoft.Maui.Platform.Linux.Services;
|
||
|
|
|
||
|
|
public static class AccessibilityServiceFactory
|
||
|
|
{
|
||
|
|
private static IAccessibilityService? _instance;
|
||
|
|
private static readonly object _lock = new();
|
||
|
|
|
||
|
|
public static IAccessibilityService Instance
|
||
|
|
{
|
||
|
|
get
|
||
|
|
{
|
||
|
|
if (_instance == null)
|
||
|
|
{
|
||
|
|
lock (_lock)
|
||
|
|
{
|
||
|
|
_instance ??= CreateService();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return _instance;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
private static IAccessibilityService CreateService()
|
||
|
|
{
|
||
|
|
try
|
||
|
|
{
|
||
|
|
var service = new AtSpi2AccessibilityService();
|
||
|
|
service.Initialize();
|
||
|
|
return service;
|
||
|
|
}
|
||
|
|
catch
|
||
|
|
{
|
||
|
|
return new NullAccessibilityService();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public static void Reset()
|
||
|
|
{
|
||
|
|
lock (_lock)
|
||
|
|
{
|
||
|
|
_instance?.Shutdown();
|
||
|
|
_instance = null;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|