diff --git a/CefSharp.Test/OffScreen/OffScreenBrowserBasicFacts.cs b/CefSharp.Test/OffScreen/OffScreenBrowserBasicFacts.cs index 56ce699c04..6754eb00b4 100644 --- a/CefSharp.Test/OffScreen/OffScreenBrowserBasicFacts.cs +++ b/CefSharp.Test/OffScreen/OffScreenBrowserBasicFacts.cs @@ -227,6 +227,9 @@ public async Task CanEvaluateScriptAsPromiseAsyncJavascriptBindingApiGlobalObjec [InlineData("return 42;", true, "42")] [InlineData("return new Promise(function(resolve, reject) { resolve(42); });", true, "42")] [InlineData("return new Promise(function(resolve, reject) { reject('reject test'); });", false, "reject test")] + [InlineData("return await 42;", true, "42")] + [InlineData("return await (function() { throw('reject test'); })();", false, "reject test")] + [InlineData("var result = await fetch('./robots.txt'); return result.status;", true, "200")] public async Task CanEvaluateScriptAsPromiseAsync(string script, bool success, string expected) { using (var browser = new ChromiumWebBrowser("http://www.google.com")) @@ -255,6 +258,8 @@ public async Task CanEvaluateScriptAsPromiseAsync(string script, bool success, s [InlineData("return { a: 'CefSharp', b: 42, };", true, "CefSharp", "42")] [InlineData("return new Promise(function(resolve, reject) { resolve({ a: 'CefSharp', b: 42, }); });", true, "CefSharp", "42")] [InlineData("return new Promise(function(resolve, reject) { setTimeout(resolve.bind(null, { a: 'CefSharp', b: 42, }), 1000); });", true, "CefSharp", "42")] + [InlineData("return await { a: 'CefSharp', b: 42, };", true, "CefSharp", "42")] + [InlineData("return await new Promise(function(resolve, reject) { setTimeout(resolve.bind(null, { a: 'CefSharp', b: 42, }), 1000); }); ", true, "CefSharp", "42")] public async Task CanEvaluateScriptAsPromiseAsyncReturnObject(string script, bool success, string expectedA, string expectedB) { using (var browser = new ChromiumWebBrowser("http://www.google.com")) diff --git a/CefSharp/WebBrowserExtensions.cs b/CefSharp/WebBrowserExtensions.cs index c6f17f956d..74cc22b33f 100644 --- a/CefSharp/WebBrowserExtensions.cs +++ b/CefSharp/WebBrowserExtensions.cs @@ -1046,7 +1046,7 @@ private static string GetPromiseHandlerScript(string script, string javascriptBi internalJsFunctionName += ".SendEvalScriptResponse"; } } - var promiseHandlerScript = "let innerImmediatelyInvokedFuncExpression = (function() { " + script + " })(); Promise.resolve(innerImmediatelyInvokedFuncExpression).then((val) => " + internalJsFunctionName + "(cefSharpInternalCallbackId, true, val)).catch ((reason) => " + internalJsFunctionName + "(cefSharpInternalCallbackId, false, String(reason))); return 'CefSharpDefEvalScriptRes';"; + var promiseHandlerScript = "let innerImmediatelyInvokedFuncExpression = (async function() { " + script + " })(); Promise.resolve(innerImmediatelyInvokedFuncExpression).then((val) => " + internalJsFunctionName + "(cefSharpInternalCallbackId, true, val)).catch ((reason) => " + internalJsFunctionName + "(cefSharpInternalCallbackId, false, String(reason))); return 'CefSharpDefEvalScriptRes';"; return promiseHandlerScript; }