Skip to content

Commit 8f5e8fd

Browse files
committed
[Win32] Correct WebView initialization retry logic in Edge
WebView initialization may fail in some cases, for which the Microsoft documentation proposes to retry initialization. The Edge implementation already covers that case, but accidentally cancels the initialization of the Edge instance even though a retry of initializing the contained WebView is triggered. This change properly separates actual initialization abortions and retries and corrects the retry functionality.
1 parent 1b2ea28 commit 8f5e8fd

File tree

1 file changed

+8
-5
lines changed
  • bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser

1 file changed

+8
-5
lines changed

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -588,20 +588,23 @@ private void createInstance(int previousAttempts) {
588588

589589
private IUnknown createControllerInitializationCallback(int previousAttempts) {
590590
Runnable initializationRollback = () -> {
591-
webViewProvider.abortInitialization();
592591
if (environment2 != null) {
593592
environment2.Release();
594593
environment2 = null;
595594
}
596595
containingEnvironment.instances().remove(this);
597596
};
597+
Runnable initializationAbortion = () -> {
598+
webViewProvider.abortInitialization();
599+
initializationRollback.run();
600+
};
598601
return newCallback((result, pv) -> {
599602
if (browser.isDisposed()) {
600-
initializationRollback.run();
603+
initializationAbortion.run();
601604
return COM.S_OK;
602605
}
603606
if (result == OS.HRESULT_FROM_WIN32(OS.ERROR_INVALID_STATE)) {
604-
initializationRollback.run();
607+
initializationAbortion.run();
605608
SWT.error(SWT.ERROR_INVALID_ARGUMENT, null,
606609
" Edge instance with same data folder but different environment options already exists");
607610
}
@@ -611,11 +614,11 @@ private IUnknown createControllerInitializationCallback(int previousAttempts) {
611614
setupBrowser((int) result, pv);
612615
break;
613616
case COM.E_WRONG_THREAD:
614-
initializationRollback.run();
617+
initializationAbortion.run();
615618
error(SWT.ERROR_THREAD_INVALID_ACCESS, (int) result);
616619
break;
617620
case COM.E_ABORT:
618-
initializationRollback.run();
621+
initializationAbortion.run();
619622
break;
620623
default:
621624
initializationRollback.run();

0 commit comments

Comments
 (0)