From 1b2863350e19204044a17e78a837b20f35cd3f6e Mon Sep 17 00:00:00 2001 From: brewdente <brewdente@gmail.com> Date: Mon, 27 Apr 2015 13:06:26 -0400 Subject: [PATCH] Only lower case the first letter of the property. If there is an error, no request id, and there is only 1 request, then we know what to do. Renaming the file for the EVentHandler. --- ChromeDevTools/ChromeDevTools.csproj | 2 +- ChromeDevTools/ChromeSession.cs | 12 ++++++++++ ...mandResponseHandler.cs => EventHandler.cs} | 0 .../Serialization/MessageContractResolver.cs | 22 +++++++++++-------- 4 files changed, 26 insertions(+), 10 deletions(-) rename ChromeDevTools/{CommandResponseHandler.cs => EventHandler.cs} (100%) diff --git a/ChromeDevTools/ChromeDevTools.csproj b/ChromeDevTools/ChromeDevTools.csproj index 3e152b3..a107509 100644 --- a/ChromeDevTools/ChromeDevTools.csproj +++ b/ChromeDevTools/ChromeDevTools.csproj @@ -64,7 +64,7 @@ <Compile Include="CommandResponse.cs" /> <Compile Include="CommandResponseAttribute.cs" /> <Compile Include="CommandResponseFactory.cs" /> - <Compile Include="CommandResponseHandler.cs" /> + <Compile Include="EventHandler.cs" /> <Compile Include="ErrorResponse.cs" /> <Compile Include="Event.cs" /> <Compile Include="EventAttribute.cs" /> diff --git a/ChromeDevTools/ChromeSession.cs b/ChromeDevTools/ChromeSession.cs index e2996f7..9609afc 100644 --- a/ChromeDevTools/ChromeSession.cs +++ b/ChromeDevTools/ChromeSession.cs @@ -131,6 +131,18 @@ namespace ChromeDevTools _responses.AddOrUpdate(response.Id, id => response, (key, value) => response); requestMre.Set(); } + else + { + // in the case of an error, we don't always get the request Id back :( + // if there is only one pending requests, we know what to do ... otherwise + if (1 == _requestWaitHandles.Count) + { + var requestId = _requestWaitHandles.Keys.First(); + _requestWaitHandles.TryGetValue(requestId, out requestMre); + _responses.AddOrUpdate(requestId, id => response, (key, value) => response); + requestMre.Set(); + } + } } private Task<ICommandResponse> SendCommand(Command command) diff --git a/ChromeDevTools/CommandResponseHandler.cs b/ChromeDevTools/EventHandler.cs similarity index 100% rename from ChromeDevTools/CommandResponseHandler.cs rename to ChromeDevTools/EventHandler.cs diff --git a/ChromeDevTools/Serialization/MessageContractResolver.cs b/ChromeDevTools/Serialization/MessageContractResolver.cs index 2bfd0fd..0bbe952 100644 --- a/ChromeDevTools/Serialization/MessageContractResolver.cs +++ b/ChromeDevTools/Serialization/MessageContractResolver.cs @@ -1,17 +1,21 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Newtonsoft.Json.Serialization; +using Newtonsoft.Json.Serialization; +using System; namespace ChromeDevTools.Serialization { - class MessageContractResolver : DefaultContractResolver + internal class MessageContractResolver : DefaultContractResolver { protected override string ResolvePropertyName(string propertyName) { - return propertyName.ToLower(); + if (String.IsNullOrEmpty(propertyName)) + { + return propertyName; + } + if (1 == propertyName.Length) + { + return Char.ToLowerInvariant(propertyName[0]).ToString(); + } + return Char.ToLowerInvariant(propertyName[0]) + propertyName.Substring(1); } } -} +} \ No newline at end of file -- GitLab