Skip to content

Commit f3877be

Browse files
committed
V8Serialization - ConvertDateTimeToCefTime convert to UTC time
BindingTest.html - Add QUnit test Resolves #2662
1 parent fd9d52e commit f3877be

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

CefSharp.Core/Internals/Serialization/V8Serialization.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ namespace CefSharp
183183

184184
CefTime ConvertDateTimeToCefTime(DateTime dateTime)
185185
{
186-
auto timeSpan = dateTime - DateTime(1970, 1, 1);
186+
auto timeSpan = dateTime.ToUniversalTime() - DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind::Utc);
187187

188188
return CefTime(timeSpan.TotalSeconds);
189189
}

CefSharp.Example/JavascriptBinding/BoundObject.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,18 @@ public BoundObject()
5353
ExceptionTestObject = new ExceptionTestBoundObject();
5454
}
5555

56+
public void TestCallbackWithDateTime(IJavascriptCallback javascriptCallback)
57+
{
58+
Task.Run(async () =>
59+
{
60+
using (javascriptCallback)
61+
{
62+
var dateTime = new DateTime(2019, 01, 01, 12, 00, 00);
63+
await javascriptCallback.ExecuteAsync(dateTime, new[] { dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second });
64+
}
65+
});
66+
}
67+
5668
public void TestCallback(IJavascriptCallback javascriptCallback)
5769
{
5870
const int taskDelay = 1500;

CefSharp.Example/Resources/BindingTest.html

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
1+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
22
<html>
33
<head>
44
<title>Binding Test</title>
@@ -439,6 +439,22 @@
439439
});
440440
});
441441

442+
QUnit.test("Javascript Callback Test with DateTime", function( assert )
443+
{
444+
var asyncCallback = assert.async();
445+
446+
function callback(dateTimeFirst, dateTimeSecondAsArray)
447+
{
448+
var arr = dateTimeSecondAsArray;
449+
var dateTimeSecond = new Date(arr[0], arr[1] - 1, arr[2], arr[3], arr[4], arr[5]);
450+
assert.equal(dateTimeFirst - dateTimeSecond, 0);
451+
452+
asyncCallback();
453+
}
454+
455+
bound.testCallbackWithDateTime(callback);
456+
});
457+
442458
QUnit.test("Javascript Callback Test", function( assert )
443459
{
444460
var asyncCallback = assert.async();

0 commit comments

Comments
 (0)