Skip to content

Commit efa0c39

Browse files
authored
Core - DevToolsClient reuse json serializer options / settings (#4851)
1 parent a52d996 commit efa0c39

File tree

1 file changed

+22
-19
lines changed

1 file changed

+22
-19
lines changed

CefSharp.Core/DevTools/DevToolsClient.cs

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public bool RemoveEventHandler<T>(string eventName, EventHandler<T> eventHandler
9797
{
9898
var p = ((EventProxy<T>)eventProxy);
9999

100-
if(p.RemoveHandler(eventHandler))
100+
if (p.RemoveHandler(eventHandler))
101101
{
102102
return !eventHandlers.TryRemove(eventName, out _);
103103
}
@@ -218,7 +218,7 @@ public void Dispose()
218218
var events = eventHandlers.Values;
219219
eventHandlers.Clear();
220220

221-
foreach(var evt in events)
221+
foreach (var evt in events)
222222
{
223223
evt.Dispose();
224224
}
@@ -257,21 +257,21 @@ void IDevToolsMessageObserver.OnDevToolsEvent(IBrowser browser, string method, S
257257
eventProxy.Raise(this, method, parameters, SyncContext);
258258
}
259259
}
260-
catch(Exception ex)
260+
catch (Exception ex)
261261
{
262262
var errorEvent = DevToolsEventError;
263263

264264
var json = "";
265265

266-
if(parameters.Length > 0)
266+
if (parameters.Length > 0)
267267
{
268268
parameters.Position = 0;
269269

270270
try
271271
{
272272
json = StreamToString(parameters, leaveOpen: false);
273273
}
274-
catch(Exception)
274+
catch (Exception)
275275
{
276276
//TODO: do we somehow pass this exception to the user?
277277
}
@@ -338,7 +338,7 @@ void IDevToolsMessageObserver.OnDevToolsMethodResult(IBrowser browser, int messa
338338
/// <param name="eventName">event Name</param>
339339
/// <param name="stream">JSON stream</param>
340340
/// <returns>object of type <typeparamref name="T"/></returns>
341-
private static T DeserializeJsonEvent<T>(string eventName, Stream stream) where T : EventArgs
341+
private static T DeserializeJsonEvent<T>(string eventName, Stream stream) where T : EventArgs
342342
{
343343
if (typeof(T) == typeof(EventArgs))
344344
{
@@ -369,6 +369,20 @@ private static T DeserializeJson<T>(Stream stream)
369369
return (T)DeserializeJson(typeof(T), stream);
370370
}
371371

372+
#if NETCOREAPP
373+
private static readonly System.Text.Json.JsonSerializerOptions DefaultJsonSerializerOptions = new System.Text.Json.JsonSerializerOptions
374+
{
375+
PropertyNameCaseInsensitive = true,
376+
IgnoreNullValues = true,
377+
Converters = { new CefSharp.Internals.Json.JsonEnumConverterFactory() },
378+
};
379+
#else
380+
private static readonly System.Runtime.Serialization.Json.DataContractJsonSerializerSettings DefaultJsonSerializerSettings = new System.Runtime.Serialization.Json.DataContractJsonSerializerSettings
381+
{
382+
UseSimpleDictionaryFormat = true,
383+
};
384+
#endif
385+
372386
/// <summary>
373387
/// Deserialize the JSON stream into a .Net object.
374388
/// For .Net Core/.Net 5.0 uses System.Text.Json
@@ -380,24 +394,13 @@ private static T DeserializeJson<T>(Stream stream)
380394
private static object DeserializeJson(Type type, Stream stream)
381395
{
382396
#if NETCOREAPP
383-
var options = new System.Text.Json.JsonSerializerOptions
384-
{
385-
PropertyNameCaseInsensitive = true,
386-
IgnoreNullValues = true,
387-
};
388-
389-
options.Converters.Add(new CefSharp.Internals.Json.JsonEnumConverterFactory());
390-
391397
// TODO: use synchronus Deserialize<T>(Stream) when System.Text.Json gets updated
392398
var memoryStream = new MemoryStream((int)stream.Length);
393399
stream.CopyTo(memoryStream);
394400

395-
return System.Text.Json.JsonSerializer.Deserialize(memoryStream.ToArray(), type, options);
401+
return System.Text.Json.JsonSerializer.Deserialize(memoryStream.ToArray(), type, DefaultJsonSerializerOptions);
396402
#else
397-
var settings = new System.Runtime.Serialization.Json.DataContractJsonSerializerSettings();
398-
settings.UseSimpleDictionaryFormat = true;
399-
400-
var dcs = new System.Runtime.Serialization.Json.DataContractJsonSerializer(type, settings);
403+
var dcs = new System.Runtime.Serialization.Json.DataContractJsonSerializer(type, DefaultJsonSerializerSettings);
401404
return dcs.ReadObject(stream);
402405
#endif
403406
}

0 commit comments

Comments
 (0)