diff --git a/ElectronNET.API/WindowManager.cs b/ElectronNET.API/WindowManager.cs index 70fb1b2..c8e3ae9 100755 --- a/ElectronNET.API/WindowManager.cs +++ b/ElectronNET.API/WindowManager.cs @@ -6,6 +6,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; +using System.Text.RegularExpressions; using System.Threading.Tasks; using ElectronNET.API.Interfaces; @@ -80,7 +81,7 @@ namespace ElectronNET.API /// /// The load URL. /// - public async Task CreateWindowAsync(string loadUrl = "http://localhost") + public async Task CreateWindowAsync(string loadUrl = "/") { return await CreateWindowAsync(new BrowserWindowOptions(), loadUrl); } @@ -91,7 +92,7 @@ namespace ElectronNET.API /// 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(TaskCreationOptions.RunContinuationsAsynchronously); @@ -117,9 +118,9 @@ namespace ElectronNET.API } }); - 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 @@ -158,6 +159,20 @@ namespace ElectronNET.API 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");