From f00120d1ff65fbd67c76ea2f94e4332ab455ad36 Mon Sep 17 00:00:00 2001 From: Georgios Diamantopoulos <georgiosd@gmail.com> Date: Thu, 16 Mar 2017 17:18:01 +0200 Subject: [PATCH] allow starting new sessions --- source/ChromeDevTools/ChromeSessionFactory.cs | 5 +++ source/ChromeDevTools/IChromeProcess.cs | 4 ++- source/ChromeDevTools/LocalChromeProcess.cs | 2 ++ source/ChromeDevTools/RemoteChromeProcess.cs | 32 +++++++++++++------ 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/source/ChromeDevTools/ChromeSessionFactory.cs b/source/ChromeDevTools/ChromeSessionFactory.cs index 4aa60b6..36facc2 100644 --- a/source/ChromeDevTools/ChromeSessionFactory.cs +++ b/source/ChromeDevTools/ChromeSessionFactory.cs @@ -3,6 +3,11 @@ namespace MasterDevs.ChromeDevTools { public class ChromeSessionFactory : IChromeSessionFactory { + public IChromeSession Create(ChromeSessionInfo sessionInfo) + { + return Create(sessionInfo.WebSocketDebuggerUrl); + } + public IChromeSession Create(string endpointUrl) { // Sometimes binding to localhost might resolve wrong AddressFamily, force IPv4 diff --git a/source/ChromeDevTools/IChromeProcess.cs b/source/ChromeDevTools/IChromeProcess.cs index 5acfd30..b6d6242 100644 --- a/source/ChromeDevTools/IChromeProcess.cs +++ b/source/ChromeDevTools/IChromeProcess.cs @@ -5,7 +5,9 @@ namespace MasterDevs.ChromeDevTools { public interface IChromeProcess : IDisposable { - Task<ChromeSessionInfo[]> GetSessions(); + Task<ChromeSessionInfo[]> GetSessionInfo(); + + Task<ChromeSessionInfo> StartNewSession(); Uri RemoteDebuggingUri { get; } } diff --git a/source/ChromeDevTools/LocalChromeProcess.cs b/source/ChromeDevTools/LocalChromeProcess.cs index 8c2e629..62f0e68 100644 --- a/source/ChromeDevTools/LocalChromeProcess.cs +++ b/source/ChromeDevTools/LocalChromeProcess.cs @@ -20,6 +20,8 @@ namespace MasterDevs.ChromeDevTools public override void Dispose() { + base.Dispose(); + Process.Kill(); try { diff --git a/source/ChromeDevTools/RemoteChromeProcess.cs b/source/ChromeDevTools/RemoteChromeProcess.cs index 0076d9b..e10ff60 100644 --- a/source/ChromeDevTools/RemoteChromeProcess.cs +++ b/source/ChromeDevTools/RemoteChromeProcess.cs @@ -7,29 +7,41 @@ namespace MasterDevs.ChromeDevTools { public class RemoteChromeProcess : IChromeProcess { + private readonly HttpClient http; + + public RemoteChromeProcess(string remoteDebuggingUri) + : this(new Uri(remoteDebuggingUri)) + { + + } + public RemoteChromeProcess(Uri remoteDebuggingUri) { RemoteDebuggingUri = remoteDebuggingUri; + + http = new HttpClient + { + BaseAddress = RemoteDebuggingUri + }; } public Uri RemoteDebuggingUri { get; } public virtual void Dispose() { + http.Dispose(); } - public async Task<ChromeSessionInfo[]> GetSessions() + public async Task<ChromeSessionInfo[]> GetSessionInfo() { - using (var http = new HttpClient - { - BaseAddress = RemoteDebuggingUri - }) - { - string json = await http.GetStringAsync("/json"); - return JsonConvert.DeserializeObject<ChromeSessionInfo[]>(json); - } + string json = await http.GetStringAsync("/json"); + return JsonConvert.DeserializeObject<ChromeSessionInfo[]>(json); } - + public async Task<ChromeSessionInfo> StartNewSession() + { + string json = await http.GetStringAsync("/json"); + return JsonConvert.DeserializeObject<ChromeSessionInfo>(json); + } } } \ No newline at end of file -- GitLab