Skip to content

Commit 774abb1

Browse files
campersauamaitland
authored andcommitted
Rename tests and add tests for calling Execute multiple times
1 parent ac677b9 commit 774abb1

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

CefSharp.Core.Runtime/Internals/JavascriptCallbackProxy.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ namespace CefSharp
2727
auto browser = GetBrowser();
2828
if (browser == nullptr)
2929
{
30-
return Task::FromException<JavascriptResponse^>(gcnew InvalidOperationException("Browser instance is null. Check CanExecute before calling this method."));
30+
throw gcnew InvalidOperationException("Browser instance is null. Check CanExecute before calling this method.");
3131
}
3232

3333
auto browserWrapper = static_cast<CefBrowserWrapper^>(browser);

CefSharp.Test/Javascript/EvaluateScriptAsyncTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public async Task V8Context()
6464
}
6565

6666
[Fact]
67-
public async Task CancelEvaluateOnCrash()
67+
public async Task ShouldCancelOnCrash()
6868
{
6969
AssertInitialLoadComplete();
7070

CefSharp.Test/Javascript/JavascriptCallbackTests.cs

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public JavascriptCallbackTests(ITestOutputHelper output, CefSharpFixture collect
2727
[Fact]
2828
public async Task V8Context()
2929
{
30+
IJavascriptCallback callbackExecuteCancelAfterDisposeCallback;
3031
Task callbackExecuteCancelAfterDisposeTask;
3132
using (var browser = new CefSharp.OffScreen.ChromiumWebBrowser(automaticallyCreateBrowser: false))
3233
{
@@ -54,24 +55,29 @@ public async Task V8Context()
5455

5556
var callbackExecuteCancelAfterV8ContextResponse = await browser.EvaluateScriptAsync("(function() { return new Promise(resolve => setTimeout(resolve, 1000)); })");
5657
Assert.True(callbackExecuteCancelAfterV8ContextResponse.Success);
57-
var evaluateCancelAfterV8ContextCallback = (IJavascriptCallback)callbackExecuteCancelAfterV8ContextResponse.Result;
58-
var evaluateCancelAfterV8ContextTask = evaluateCancelAfterV8ContextCallback.ExecuteAsync();
58+
var callbackExecuteCancelAfterV8ContextCallback = (IJavascriptCallback)callbackExecuteCancelAfterV8ContextResponse.Result;
59+
var callbackExecuteCancelAfterV8ContextTask = callbackExecuteCancelAfterV8ContextCallback.ExecuteAsync();
5960

6061
// change V8 context
6162
await browser.LoadUrlAsync(CefExample.HelloWorldUrl);
6263

63-
await Assert.ThrowsAsync<TaskCanceledException>(() => evaluateCancelAfterV8ContextTask);
64+
await Assert.ThrowsAsync<TaskCanceledException>(() => callbackExecuteCancelAfterV8ContextTask);
65+
var callbackExecuteCancelAfterV8ContextResult = await callbackExecuteCancelAfterV8ContextCallback.ExecuteAsync();
66+
Assert.False(callbackExecuteCancelAfterV8ContextResult.Success);
67+
Assert.StartsWith("Unable to find JavascriptCallback with Id " + callbackExecuteCancelAfterV8ContextCallback.Id, callbackExecuteCancelAfterV8ContextResult.Message);
6468

6569
var callbackExecuteCancelAfterDisposeResponse = await browser.EvaluateScriptAsync("(function() { return new Promise(resolve => setTimeout(resolve, 1000)); })");
6670
Assert.True(callbackExecuteCancelAfterDisposeResponse.Success);
67-
var callbackExecuteCancelAfterDisposeCallback = (IJavascriptCallback)callbackExecuteCancelAfterDisposeResponse.Result;
71+
callbackExecuteCancelAfterDisposeCallback = (IJavascriptCallback)callbackExecuteCancelAfterDisposeResponse.Result;
6872
callbackExecuteCancelAfterDisposeTask = callbackExecuteCancelAfterDisposeCallback.ExecuteAsync();
6973
}
74+
Assert.False(callbackExecuteCancelAfterDisposeCallback.CanExecute);
7075
await Assert.ThrowsAsync<TaskCanceledException>(() => callbackExecuteCancelAfterDisposeTask);
76+
await Assert.ThrowsAsync<InvalidOperationException>(() => callbackExecuteCancelAfterDisposeCallback.ExecuteAsync());
7177
}
7278

7379
[Fact]
74-
public async Task CancelCallbackOnCrash()
80+
public async Task ShouldCancelOnCrash()
7581
{
7682
AssertInitialLoadComplete();
7783

@@ -296,5 +302,23 @@ public async Task ShouldWorkWithExpandoObject()
296302

297303
output.WriteLine("Expected {0} : Actual {1}", expectedDateTime, actualDateTime);
298304
}
305+
306+
[Fact]
307+
public async Task ShouldWorkWhenExecutedMultipleTimes()
308+
{
309+
AssertInitialLoadComplete();
310+
311+
var javascriptResponse = await Browser.EvaluateScriptAsync("(function() { return 42; })");
312+
Assert.True(javascriptResponse.Success);
313+
314+
var callback = (IJavascriptCallback)javascriptResponse.Result;
315+
316+
for (var i = 0; i < 3; i++)
317+
{
318+
var callbackResponse = await callback.ExecuteAsync();
319+
Assert.True(callbackResponse.Success);
320+
Assert.Equal(42, callbackResponse.Result);
321+
}
322+
}
299323
}
300324
}

0 commit comments

Comments
 (0)