diff --git a/source/ChromeDevTools/MasterDevs.ChromeDevTools.csproj b/source/ChromeDevTools/MasterDevs.ChromeDevTools.csproj index eb6cc32e09e1abe10b59e03eb7cdb50f1b4e44c4..ac95b2994a8b42714ce5fb656ac01056af988679 100644 --- a/source/ChromeDevTools/MasterDevs.ChromeDevTools.csproj +++ b/source/ChromeDevTools/MasterDevs.ChromeDevTools.csproj @@ -38,14 +38,12 @@ <AssemblyOriginatorKeyFile>MasterDevs.ChromeDevTools.snk</AssemblyOriginatorKeyFile> </PropertyGroup> <ItemGroup> - <Reference Include="Newtonsoft.Json"> - <HintPath>..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll</HintPath> - </Reference> <Reference Include="System" /> <Reference Include="System.Core" /> <Reference Include="System.Net.Http"> <HintPath>..\..\..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Net.Http.dll</HintPath> </Reference> + <Reference Include="System.Runtime.Serialization" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> diff --git a/source/ChromeDevTools/MasterDevs.ChromeDevTools.project.json b/source/ChromeDevTools/MasterDevs.ChromeDevTools.project.json index faf891318d90304e36248428504747b4378ff0e9..c3337250176a3f97b3e409d646de1762f2cb3cd5 100644 --- a/source/ChromeDevTools/MasterDevs.ChromeDevTools.project.json +++ b/source/ChromeDevTools/MasterDevs.ChromeDevTools.project.json @@ -1,8 +1,11 @@ -{ +{ "frameworks": { "net45": {} }, "runtimes": { "win": {} + }, + "dependencies": { + "Newtonsoft.Json": "9.0.1" } } \ No newline at end of file diff --git a/source/ChromeDevTools/project.json b/source/ChromeDevTools/project.json index 14e7284cdb1f065fa54360805235c360ab24cfa3..eb74ee882a2390d03b99feade5988704cb49d078 100644 --- a/source/ChromeDevTools/project.json +++ b/source/ChromeDevTools/project.json @@ -21,7 +21,8 @@ "System.Diagnostics.Process": "4.1.0", "System.Runtime.InteropServices": "4.1.0", "System.Net.Http": "4.1.0", - "System.Threading.Thread": "4.0.0" + "System.Threading.Thread": "4.0.0", + "System.Runtime.Serialization.Primitives": "4.1.1" } }, "net45": { @@ -29,7 +30,8 @@ "WebSocket4Net": "0.14.1" }, "frameworkAssemblies": { - "System.Net.Http": "4.0.0.0" + "System.Net.Http": "4.0.0.0", + "System.Runtime.Serialization": "4.0.0.0" } } } diff --git a/source/MasterDevs.ChromeDevTools.Tests/MasterDevs.ChromeDevTools.Tests.csproj b/source/MasterDevs.ChromeDevTools.Tests/MasterDevs.ChromeDevTools.Tests.csproj index 87d4cc0e5182f90ae15e2ca1050f8f4789618ff9..3710ca9854c97797aae425a5fcf522c66d767b97 100644 --- a/source/MasterDevs.ChromeDevTools.Tests/MasterDevs.ChromeDevTools.Tests.csproj +++ b/source/MasterDevs.ChromeDevTools.Tests/MasterDevs.ChromeDevTools.Tests.csproj @@ -35,6 +35,10 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> + <Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> + <HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> + <Private>True</Private> + </Reference> <Reference Include="System" /> </ItemGroup> <Choose> @@ -52,6 +56,7 @@ <ItemGroup> <Compile Include="CommandResponseFactoryTests.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="SerializationTests.cs" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\ChromeDevTools\MasterDevs.ChromeDevTools.csproj"> @@ -60,6 +65,7 @@ </ProjectReference> </ItemGroup> <ItemGroup> + <None Include="packages.config" /> <None Include="response-1.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> diff --git a/source/MasterDevs.ChromeDevTools.Tests/SerializationTests.cs b/source/MasterDevs.ChromeDevTools.Tests/SerializationTests.cs new file mode 100644 index 0000000000000000000000000000000000000000..f0bb3f49e6ac54e496a6e6633c028d487560b2f4 --- /dev/null +++ b/source/MasterDevs.ChromeDevTools.Tests/SerializationTests.cs @@ -0,0 +1,21 @@ +using MasterDevs.ChromeDevTools.Protocol.Chrome.DOM; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MasterDevs.ChromeDevTools.Tests +{ + [TestClass] + public class SerializationTests + { + [TestMethod] + public void ShadowRootTypeTest() + { + var value = JsonConvert.DeserializeObject<ShadowRootType>("\"user-agent\""); + } + } +} diff --git a/source/MasterDevs.ChromeDevTools.Tests/packages.config b/source/MasterDevs.ChromeDevTools.Tests/packages.config new file mode 100644 index 0000000000000000000000000000000000000000..7ee8c105235dec73a2726e7ccf874eeded1a5ea0 --- /dev/null +++ b/source/MasterDevs.ChromeDevTools.Tests/packages.config @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<packages> + <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net461" /> +</packages> \ No newline at end of file diff --git a/source/ProtocolGenerator/Program.cs b/source/ProtocolGenerator/Program.cs index e2806e21c5cdffb31b4d5ca25e3d5871d7553de3..dab543f475c19994b53761b7e517d344a4a6f548 100644 --- a/source/ProtocolGenerator/Program.cs +++ b/source/ProtocolGenerator/Program.cs @@ -474,7 +474,10 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator { var enumName = type.Name; StringBuilder sb = new StringBuilder(); - sb.AppendFormat("using MasterDevs.ChromeDevTools;"); + sb.AppendLine("using MasterDevs.ChromeDevTools;"); + sb.AppendLine("using Newtonsoft.Json;"); + sb.AppendLine("using Newtonsoft.Json.Converters;"); + sb.AppendLine("using System.Runtime.Serialization;"); sb.AppendLine(); sb.AppendLine(); sb.AppendFormat("namespace {0}.{1}.{2}", RootNamespace, ns, domainDirectoryInfo.Name); @@ -483,11 +486,18 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator sb.AppendFormat("\t/// {0}", type.Description); sb.AppendLine(); sb.AppendLine("\t/// </summary>"); + sb.AppendLine("\t[JsonConverter(typeof(StringEnumConverter))]"); sb.AppendFormat("\tpublic enum {0}", enumName); sb.AppendLine(); sb.AppendLine("\t{"); foreach (var enumValueName in type.Enum) { + if (enumValueName.Contains("-")) + { + sb.AppendFormat("\t\t\t[EnumMember(Value = \"{0}\")]", enumValueName); + sb.AppendLine(); + } + sb.AppendFormat("\t\t\t{0},", ToCamelCase(enumValueName.Replace("-", "_"))); sb.AppendLine(); }