Skip to content

Commit b8a3641

Browse files
authored
Add async to EvaluateScriptAsPromiseAsync and tests (#3314)
Co-authored-by: Peter Godwin <[email protected]>
1 parent 6daf660 commit b8a3641

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

CefSharp.Test/OffScreen/OffScreenBrowserBasicFacts.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,9 @@ public async Task CanEvaluateScriptAsPromiseAsyncJavascriptBindingApiGlobalObjec
227227
[InlineData("return 42;", true, "42")]
228228
[InlineData("return new Promise(function(resolve, reject) { resolve(42); });", true, "42")]
229229
[InlineData("return new Promise(function(resolve, reject) { reject('reject test'); });", false, "reject test")]
230+
[InlineData("return await 42;", true, "42")]
231+
[InlineData("return await (function() { throw('reject test'); })();", false, "reject test")]
232+
[InlineData("var result = await fetch('./robots.txt'); return result.status;", true, "200")]
230233
public async Task CanEvaluateScriptAsPromiseAsync(string script, bool success, string expected)
231234
{
232235
using (var browser = new ChromiumWebBrowser("http://www.google.com"))
@@ -255,6 +258,8 @@ public async Task CanEvaluateScriptAsPromiseAsync(string script, bool success, s
255258
[InlineData("return { a: 'CefSharp', b: 42, };", true, "CefSharp", "42")]
256259
[InlineData("return new Promise(function(resolve, reject) { resolve({ a: 'CefSharp', b: 42, }); });", true, "CefSharp", "42")]
257260
[InlineData("return new Promise(function(resolve, reject) { setTimeout(resolve.bind(null, { a: 'CefSharp', b: 42, }), 1000); });", true, "CefSharp", "42")]
261+
[InlineData("return await { a: 'CefSharp', b: 42, };", true, "CefSharp", "42")]
262+
[InlineData("return await new Promise(function(resolve, reject) { setTimeout(resolve.bind(null, { a: 'CefSharp', b: 42, }), 1000); }); ", true, "CefSharp", "42")]
258263
public async Task CanEvaluateScriptAsPromiseAsyncReturnObject(string script, bool success, string expectedA, string expectedB)
259264
{
260265
using (var browser = new ChromiumWebBrowser("http://www.google.com"))

CefSharp/WebBrowserExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1046,7 +1046,7 @@ private static string GetPromiseHandlerScript(string script, string javascriptBi
10461046
internalJsFunctionName += ".SendEvalScriptResponse";
10471047
}
10481048
}
1049-
var promiseHandlerScript = "let innerImmediatelyInvokedFuncExpression = (function() { " + script + " })(); Promise.resolve(innerImmediatelyInvokedFuncExpression).then((val) => " + internalJsFunctionName + "(cefSharpInternalCallbackId, true, val)).catch ((reason) => " + internalJsFunctionName + "(cefSharpInternalCallbackId, false, String(reason))); return 'CefSharpDefEvalScriptRes';";
1049+
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';";
10501050

10511051
return promiseHandlerScript;
10521052
}

0 commit comments

Comments
 (0)