Skip to content

Commit b54d60f

Browse files
author
Luca Sonntag
committed
Add more test cases
1 parent f971f4c commit b54d60f

1 file changed

Lines changed: 70 additions & 5 deletions

File tree

CefSharp.Test/JavascriptBinding/JavascriptBindingTests.cs

Lines changed: 70 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,14 +130,17 @@ public async Task ShouldDisableJsBindingApi()
130130
}
131131
}
132132

133-
[Fact]
134-
public async Task ShouldDisableJsBindingApiForOrigin()
133+
[Theory]
134+
[InlineData("notallowed")]
135+
[InlineData("notallowed", "alsonotallowed")]
136+
[InlineData("notallowed", "alsonotallowed", "stillnotallowed")]
137+
public async Task ShouldDisableJsBindingApiForOrigin(params string[] origins)
135138
{
136139
using (var browser = new ChromiumWebBrowser(CefExample.BindingApiCustomObjectNameTestUrl, automaticallyCreateBrowser: false))
137140
{
138141
var settings = browser.JavascriptObjectRepository.Settings;
139142
settings.JavascriptBindingApiEnabled = true;
140-
settings.JavascriptBindingApiAllowOrigins = new string[] { "notallowed" };
143+
settings.JavascriptBindingApiAllowOrigins = origins;
141144

142145
//To modify the settings we need to defer browser creation slightly
143146
browser.CreateBrowser();
@@ -157,9 +160,67 @@ public async Task ShouldDisableJsBindingApiForOrigin()
157160
}
158161
}
159162

163+
[Fact]
164+
public async Task ShouldEnableJsBindingApiWhenOriginsListIsEmpty()
165+
{
166+
using (var browser = new ChromiumWebBrowser(CefExample.BindingApiCustomObjectNameTestUrl, automaticallyCreateBrowser: false))
167+
{
168+
var settings = browser.JavascriptObjectRepository.Settings;
169+
settings.JavascriptBindingApiEnabled = true;
170+
settings.JavascriptBindingApiAllowOrigins = new string[0];
171+
172+
//To modify the settings we need to defer browser creation slightly
173+
browser.CreateBrowser();
174+
175+
var loadResponse = await browser.WaitForInitialLoadAsync();
176+
177+
Assert.True(loadResponse.Success);
178+
179+
var response1 = await browser.EvaluateScriptAsync("typeof window.cefSharp === 'undefined'");
180+
var response2 = await browser.EvaluateScriptAsync("typeof window.CefSharp === 'undefined'");
181+
182+
Assert.True(response1.Success);
183+
Assert.False((bool)response1.Result);
184+
185+
Assert.True(response2.Success);
186+
Assert.False((bool)response2.Result);
187+
}
188+
}
189+
190+
[Theory]
191+
[InlineData(CefExample.BaseUrl)]
192+
[InlineData(CefExample.BaseUrl + "/")]
193+
public async Task ShouldEnableJsBindingApiForOriginWithOrWithoutTrailingSlash(string configuredOrigin)
194+
{
195+
using (var browser = new ChromiumWebBrowser(CefExample.BindingApiCustomObjectNameTestUrl, automaticallyCreateBrowser: false))
196+
{
197+
var settings = browser.JavascriptObjectRepository.Settings;
198+
settings.JavascriptBindingApiEnabled = true;
199+
settings.JavascriptBindingApiAllowOrigins = new string[] { configuredOrigin };
200+
201+
//To modify the settings we need to defer browser creation slightly
202+
browser.CreateBrowser();
203+
204+
var loadResponse = await browser.WaitForInitialLoadAsync();
205+
206+
Assert.True(loadResponse.Success);
207+
208+
var response1 = await browser.EvaluateScriptAsync("typeof window.cefSharp === 'undefined'");
209+
var response2 = await browser.EvaluateScriptAsync("typeof window.CefSharp === 'undefined'");
210+
211+
Assert.True(response1.Success);
212+
Assert.False((bool)response1.Result);
213+
214+
Assert.True(response2.Success);
215+
Assert.False((bool)response2.Result);
216+
}
217+
}
160218
[Theory]
161219
[InlineData(CefExample.BaseUrl + "/")]
162220
[InlineData("someorigin", CefExample.BaseUrl + "/")]
221+
[InlineData(CefExample.BaseUrl + "/", "someorigin")]
222+
[InlineData("firstorigin", "secondorigin", CefExample.BaseUrl + "/")]
223+
[InlineData("firstorigin", CefExample.BaseUrl + "/", "secondorigin")]
163224
public async Task ShouldEnableJsBindingApiForOrigin(params string[] origins)
164225
{
165226
using (var browser = new ChromiumWebBrowser(CefExample.BindingApiCustomObjectNameTestUrl, automaticallyCreateBrowser: false))
@@ -171,7 +232,9 @@ public async Task ShouldEnableJsBindingApiForOrigin(params string[] origins)
171232
//To modify the settings we need to defer browser creation slightly
172233
browser.CreateBrowser();
173234

174-
await browser.WaitForInitialLoadAsync();
235+
var loadResponse = await browser.WaitForInitialLoadAsync();
236+
237+
Assert.True(loadResponse.Success);
175238

176239
var response1 = await browser.EvaluateScriptAsync("typeof window.cefSharp === 'undefined'");
177240
var response2 = await browser.EvaluateScriptAsync("typeof window.CefSharp === 'undefined'");
@@ -195,7 +258,9 @@ public async Task ShouldEnableJsBindingApi()
195258
//To modify the settings we need to defer browser creation slightly
196259
browser.CreateBrowser();
197260

198-
await browser.WaitForInitialLoadAsync();
261+
var loadResponse = await browser.WaitForInitialLoadAsync();
262+
263+
Assert.True(loadResponse.Success);
199264

200265
var response1 = await browser.EvaluateScriptAsync("typeof window.cefSharp === 'undefined'");
201266
var response2 = await browser.EvaluateScriptAsync("typeof window.CefSharp === 'undefined'");

0 commit comments

Comments
 (0)