Skip to content

Commit 58ba07e

Browse files
amartya4256HeikoKlare
authored andcommitted
[Win32] Summarize ICoreWebView2* instances in WebViewWrapper
This commit contributes to refactoring of all the ICoreWebView2* instances into a wrapper class WebViewWrapper for better encapsulation and fault proof initialization using a single future. Contributes to #669
1 parent 56767ec commit 58ba07e

File tree

1 file changed

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

1 file changed

+51
-51
lines changed

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

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -287,149 +287,149 @@ static int callAndWait(String[] pstr, ToIntFunction<IUnknown> callable) {
287287
return phr[0];
288288
}
289289

290-
class WebViewProvider {
290+
class WebViewWrapper {
291+
private ICoreWebView2 webView;
292+
private ICoreWebView2_2 webView_2;
293+
private ICoreWebView2_10 webView_10;
294+
private ICoreWebView2_11 webView_11;
295+
private ICoreWebView2_12 webView_12;
296+
private ICoreWebView2_13 webView_13;
297+
}
291298

292-
private CompletableFuture<ICoreWebView2> webViewFuture = new CompletableFuture<>();
293-
private CompletableFuture<ICoreWebView2_2> webView_2Future = new CompletableFuture<>();
294-
private CompletableFuture<ICoreWebView2_10> webView_10Future = new CompletableFuture<>();
295-
private CompletableFuture<ICoreWebView2_11> webView_11Future = new CompletableFuture<>();
296-
private CompletableFuture<ICoreWebView2_12> webView_12Future = new CompletableFuture<>();
297-
private CompletableFuture<ICoreWebView2_13> webView_13Future = new CompletableFuture<>();
299+
class WebViewProvider {
298300

299-
private CompletableFuture<Void> lastWebViewTask = webViewFuture.thenRun(() -> {});
301+
private CompletableFuture<WebViewWrapper> webViewWrapperFuture = new CompletableFuture<>();
302+
private CompletableFuture<Void> lastWebViewTask = webViewWrapperFuture.thenRun(() -> {});;
300303

301304
ICoreWebView2 initializeWebView(ICoreWebView2Controller controller) {
302305
long[] ppv = new long[1];
303306
controller.get_CoreWebView2(ppv);
304307
final ICoreWebView2 webView = new ICoreWebView2(ppv[0]);
305-
initializeWebView_2(webView);
306-
initializeWebView_10(webView);
307-
initializeWebView_11(webView);
308-
initializeWebView_12(webView);
309-
initializeWebView_13(webView);
310-
webViewFuture.complete(webView);
308+
final WebViewWrapper webViewWrapper = new WebViewWrapper();
309+
webViewWrapper.webView = webView;
310+
webViewWrapper.webView_2 = initializeWebView_2(webView);
311+
webViewWrapper.webView_10 = initializeWebView_10(webView);
312+
webViewWrapper.webView_11 = initializeWebView_11(webView);
313+
webViewWrapper.webView_12 = initializeWebView_12(webView);
314+
webViewWrapper.webView_13= initializeWebView_13(webView);
315+
webViewWrapperFuture.complete(webViewWrapper);
311316
return webView;
312317
}
313318

314319
private void abortInitialization() {
315-
webViewFuture.cancel(true);
320+
webViewWrapperFuture.cancel(true);
316321
}
317322

318-
private void initializeWebView_2(ICoreWebView2 webView) {
323+
private ICoreWebView2_2 initializeWebView_2(ICoreWebView2 webView) {
319324
long[] ppv = new long[1];
320325
int hr = webView.QueryInterface(COM.IID_ICoreWebView2_2, ppv);
321326
if (hr == COM.S_OK) {
322-
webView_2Future.complete(new ICoreWebView2_2(ppv[0]));
323-
} else {
324-
webView_2Future.cancel(true);
327+
return new ICoreWebView2_2(ppv[0]);
325328
}
329+
return null;
326330
}
327331

328-
private void initializeWebView_10(ICoreWebView2 webView) {
332+
private ICoreWebView2_10 initializeWebView_10(ICoreWebView2 webView) {
329333
long[] ppv = new long[1];
330334
int hr = webView.QueryInterface(COM.IID_ICoreWebView2_10, ppv);
331335
if (hr == COM.S_OK) {
332-
webView_10Future.complete(new ICoreWebView2_10(ppv[0]));
333-
} else {
334-
webView_10Future.cancel(true);
336+
return new ICoreWebView2_10(ppv[0]);
335337
}
338+
return null;
336339
}
337340

338-
private void initializeWebView_11(ICoreWebView2 webView) {
341+
private ICoreWebView2_11 initializeWebView_11(ICoreWebView2 webView) {
339342
long[] ppv = new long[1];
340343
int hr = webView.QueryInterface(COM.IID_ICoreWebView2_11, ppv);
341344
if (hr == COM.S_OK) {
342-
webView_11Future.complete(new ICoreWebView2_11(ppv[0]));
343-
} else {
344-
webView_11Future.cancel(true);
345+
return new ICoreWebView2_11(ppv[0]);
345346
}
347+
return null;
346348
}
347349

348-
private void initializeWebView_12(ICoreWebView2 webView) {
350+
private ICoreWebView2_12 initializeWebView_12(ICoreWebView2 webView) {
349351
long[] ppv = new long[1];
350352
int hr = webView.QueryInterface(COM.IID_ICoreWebView2_12, ppv);
351353
if (hr == COM.S_OK) {
352-
webView_12Future.complete(new ICoreWebView2_12(ppv[0]));
353-
} else {
354-
webView_12Future.cancel(true);
354+
return new ICoreWebView2_12(ppv[0]);
355355
}
356+
return null;
356357
}
357358

358-
private void initializeWebView_13(ICoreWebView2 webView) {
359+
private ICoreWebView2_13 initializeWebView_13(ICoreWebView2 webView) {
359360
long[] ppv = new long[1];
360361
int hr = webView.QueryInterface(COM.IID_ICoreWebView2_13, ppv);
361362
if (hr == COM.S_OK) {
362-
webView_13Future.complete(new ICoreWebView2_13(ppv[0]));
363-
} else {
364-
webView_13Future.cancel(true);
363+
return new ICoreWebView2_13(ppv[0]);
365364
}
365+
return null;
366366
}
367367

368368
ICoreWebView2 getWebView(boolean waitForPendingWebviewTasksToFinish) {
369369
if(waitForPendingWebviewTasksToFinish) {
370370
waitForFutureToFinish(lastWebViewTask);
371371
}
372-
return webViewFuture.join();
372+
return webViewWrapperFuture.join().webView;
373373
}
374374

375375
ICoreWebView2_2 getWebView_2(boolean waitForPendingWebviewTasksToFinish) {
376376
if(waitForPendingWebviewTasksToFinish) {
377377
waitForFutureToFinish(lastWebViewTask);
378378
}
379-
return webView_2Future.join();
379+
return webViewWrapperFuture.join().webView_2;
380380
}
381381

382382
boolean isWebView_2Available() {
383-
waitForFutureToFinish(webView_2Future);
384-
return !webView_2Future.isCancelled();
383+
waitForFutureToFinish(webViewWrapperFuture);
384+
return webViewWrapperFuture.join().webView_2 != null;
385385
}
386386

387387
ICoreWebView2_10 getWebView_10(boolean waitForPendingWebviewTasksToFinish) {
388388
if(waitForPendingWebviewTasksToFinish) {
389389
waitForFutureToFinish(lastWebViewTask);
390390
}
391-
return webView_10Future.join();
391+
return webViewWrapperFuture.join().webView_10;
392392
}
393393

394394
boolean isWebView_10Available() {
395-
waitForFutureToFinish(webView_10Future);
396-
return !webView_10Future.isCancelled();
395+
waitForFutureToFinish(webViewWrapperFuture);
396+
return webViewWrapperFuture.join().webView_10 != null;
397397
}
398398

399399
ICoreWebView2_11 getWebView_11(boolean waitForPendingWebviewTasksToFinish) {
400400
if(waitForPendingWebviewTasksToFinish) {
401401
waitForFutureToFinish(lastWebViewTask);
402402
}
403-
return webView_11Future.join();
403+
return webViewWrapperFuture.join().webView_11;
404404
}
405405

406406
boolean isWebView_11Available() {
407-
waitForFutureToFinish(webView_11Future);
408-
return !webView_11Future.isCancelled();
407+
waitForFutureToFinish(webViewWrapperFuture);
408+
return webViewWrapperFuture.join().webView_11 != null;
409409
}
410410

411411
ICoreWebView2_12 getWebView_12(boolean waitForPendingWebviewTasksToFinish) {
412412
if(waitForPendingWebviewTasksToFinish) {
413413
waitForFutureToFinish(lastWebViewTask);
414414
}
415-
return webView_12Future.join();
415+
return webViewWrapperFuture.join().webView_12;
416416
}
417417

418418
boolean isWebView_12Available() {
419-
waitForFutureToFinish(webView_12Future);
420-
return !webView_12Future.isCancelled();
419+
waitForFutureToFinish(webViewWrapperFuture);
420+
return webViewWrapperFuture.join().webView_12 != null;
421421
}
422422

423423
ICoreWebView2_13 getWebView_13(boolean waitForPendingWebviewTasksToFinish) {
424424
if(waitForPendingWebviewTasksToFinish) {
425425
waitForFutureToFinish(lastWebViewTask);
426426
}
427-
return webView_13Future.join();
427+
return webViewWrapperFuture.join().webView_13;
428428
}
429429

430430
boolean isWebView_13Available() {
431-
waitForFutureToFinish(webView_13Future);
432-
return !webView_13Future.isCancelled();
431+
waitForFutureToFinish(webViewWrapperFuture);
432+
return webViewWrapperFuture.join().webView_13 != null;
433433
}
434434

435435
/*

0 commit comments

Comments
 (0)