diff --git a/ElectronNET.API/WindowManager.cs b/ElectronNET.API/WindowManager.cs index 4ac85dab..bf4ddf06 100644 --- a/ElectronNET.API/WindowManager.cs +++ b/ElectronNET.API/WindowManager.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; +using System.Text.RegularExpressions; using System.Threading.Tasks; namespace ElectronNET.API @@ -79,7 +80,7 @@ public bool IsQuitOnWindowAllClosed /// /// The load URL. /// - public async Task CreateWindowAsync(string loadUrl = "http://localhost") + public async Task CreateWindowAsync(string loadUrl = "/") { return await CreateWindowAsync(new BrowserWindowOptions(), loadUrl); } @@ -90,10 +91,9 @@ public async Task CreateWindowAsync(string loadUrl = "http://loca /// The options. /// The load URL. /// - public Task CreateWindowAsync(BrowserWindowOptions options, string loadUrl = "http://localhost") + public Task CreateWindowAsync(BrowserWindowOptions options, string loadUrl = "/") { var taskCompletionSource = new TaskCompletionSource(); - BridgeConnector.Socket.On("BrowserWindowCreated", (id) => { BridgeConnector.Socket.Off("BrowserWindowCreated"); @@ -119,9 +119,9 @@ public Task CreateWindowAsync(BrowserWindowOptions options, strin } }); - if (loadUrl.ToUpper() == "HTTP://LOCALHOST") - { - loadUrl = $"{loadUrl}:{BridgeSettings.WebPort}"; + if(!TryParseLoadUrl(loadUrl, out loadUrl)) + { + throw new ArgumentException($"Unable to parse {loadUrl}", nameof(loadUrl)); } // Workaround Windows 10 / Electron Bug @@ -159,6 +159,20 @@ public Task CreateWindowAsync(BrowserWindowOptions options, strin return taskCompletionSource.Task; } + + private bool TryParseLoadUrl(string loadUrl, out string parsedUrl) + { + Uri BaseUri = new Uri($"http://localhost:{BridgeSettings.WebPort}"); + if (Uri.TryCreate(loadUrl, UriKind.Absolute, out var url) || + Uri.TryCreate(BaseUri, loadUrl, out url)) { + var uri = new UriBuilder(url.ToString()); + parsedUrl = uri.ToString(); + return true; + } + parsedUrl = loadUrl; + return false; + } + private bool isWindows10() { return RuntimeInformation.OSDescription.Contains("Windows 10");