diff --git a/ChromeDevTools/ChromeDevTools.csproj b/ChromeDevTools/ChromeDevTools.csproj index 3e152b3469717cebc39250168372786623004a6e..a107509d5bd5fb8b021f1dfca31d4ac713308cdd 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 e2996f7299758a0a5222ac489db163131b82de47..9609afce306765de8bd75e193e8d65932d814e7a 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 2bfd0fd675369a32fc8f1eab8998779693f2d5c2..0bbe9525aba7a0250ed25964f374aa2f1838545f 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