Skip to content

Commit ae4fcac

Browse files
committed
WIP: Edge Browser Scheduled Job timeout
1 parent 60ef7e9 commit ae4fcac

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/Edge.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,14 +289,14 @@ static int callAndWait(String[] pstr, ToIntFunction<IUnknown> callable) {
289289

290290
class WebViewProvider {
291291

292-
private CompletableFuture<ICoreWebView2> webViewFuture = new CompletableFuture<>();
292+
private CompletableFuture<ICoreWebView2> webViewFuture = initializeWebViewFutureWithTimeOut();
293293
private CompletableFuture<ICoreWebView2_2> webView_2Future = new CompletableFuture<>();
294294
private CompletableFuture<ICoreWebView2_10> webView_10Future = new CompletableFuture<>();
295295
private CompletableFuture<ICoreWebView2_11> webView_11Future = new CompletableFuture<>();
296296
private CompletableFuture<ICoreWebView2_12> webView_12Future = new CompletableFuture<>();
297297
private CompletableFuture<ICoreWebView2_13> webView_13Future = new CompletableFuture<>();
298298

299-
private CompletableFuture<Void> lastWebViewTask = webViewFuture.thenRun(() -> {});
299+
private CompletableFuture<Void> lastWebViewTask = webViewFuture.thenRun(() -> {});;
300300

301301
ICoreWebView2 initializeWebView(ICoreWebView2Controller controller) {
302302
long[] ppv = new long[1];
@@ -311,6 +311,17 @@ ICoreWebView2 initializeWebView(ICoreWebView2Controller controller) {
311311
return webView;
312312
}
313313

314+
private CompletableFuture<ICoreWebView2> initializeWebViewFutureWithTimeOut() {
315+
CompletableFuture<ICoreWebView2> webViewFuture = new CompletableFuture<>();
316+
webViewFuture.orTimeout(1, TimeUnit.MILLISECONDS).exceptionally(exception -> {
317+
// Throw exception on the Display thread directly to prevent CompletableFuture
318+
// to wrap the exception and throw it silently
319+
browser.getDisplay().execute(() -> SWT.error(SWT.ERROR_UNSPECIFIED, exception, "Edge Browser initialization timed out"));
320+
return null;
321+
});
322+
return webViewFuture;
323+
}
324+
314325
private void abortInitialization() {
315326
webViewFuture.cancel(true);
316327
}

tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_browser_Browser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ private int reportOpenedDescriptors() {
302302
}
303303

304304
private Browser createBrowser(Shell s, int flags) {
305-
long maximumBrowserCreationMilliseconds = 90_000;
305+
long maximumBrowserCreationMilliseconds = 10_000;
306306
long createStartTime = System.currentTimeMillis();
307307
Browser b = new Browser(s, flags);
308308
// Wait for asynchronous initialization via getting URL

0 commit comments

Comments
 (0)