File: Embedding\EmbeddedWindowProvider.cs
Web Access
Project: src\src\Core\src\Core.csproj (Microsoft.Maui)
#if ANDROID || IOS || MACCATALYST || WINDOWS
using System;
 
#if ANDROID
using PlatformWindow = Android.App.Activity;
#elif IOS || MACCATALYST
using PlatformWindow = UIKit.UIWindow;
#elif WINDOWS
using PlatformWindow = Microsoft.UI.Xaml.Window;
#endif
 
namespace Microsoft.Maui.Embedding;
 
/// <summary>
/// A proxy service that provides access to the embedded window and its associated platform window.
/// </summary>
/// <remarks>
/// This is used when embedding but also serves to allow the platform window to be added to the service collection
/// before it is actually known or instantiated.
/// </remarks>
internal class EmbeddedWindowProvider
{
	WeakReference<PlatformWindow>? _platformWindow;
	WeakReference<IWindow>? _window;
 
	public void SetWindow(PlatformWindow? platformWindow, IWindow? window)
	{
		_platformWindow = platformWindow is null ? null : new WeakReference<PlatformWindow>(platformWindow);
		_window = window is null ? null : new WeakReference<IWindow>(window);
	}
 
	public PlatformWindow? PlatformWindow => _platformWindow?.GetTargetOrDefault();
 
	public IWindow? Window => _window?.GetTargetOrDefault();
}
#endif