Skip to content

Commit 8f95b8d

Browse files
committed
Fix exception handling during CEF initialization
1 parent db669dd commit 8f95b8d

1 file changed

Lines changed: 89 additions & 85 deletions

File tree

  • java/ceffx-demo/src/main/java/com/techsenger/ceffx/demo

‎java/ceffx-demo/src/main/java/com/techsenger/ceffx/demo/Demo.java‎

Lines changed: 89 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -288,8 +288,8 @@ private void deployNatives(Path nativesPath, Runnable onComplete) {
288288
} else {
289289
Platform.runLater(() -> onComplete.run());
290290
}
291-
} catch (Exception ex) {
292-
logger.error("Error getting native status", ex);
291+
} catch (Throwable t) {
292+
logger.error("Error getting native status", t);
293293
}
294294
}
295295

@@ -310,102 +310,106 @@ private double computeOverallProgress(Set<NativeDeployer.Operation> pendingOpera
310310
}
311311

312312
private void initCef(Path path) {
313-
CefApp.startup(new String[]{"--framework-dir-path", path.toAbsolutePath().toString()});
314-
CefApp.addAppHandler(new CefAppHandlerAdapter(null) {
315-
@Override
316-
public void onBeforeCommandLineProcessing(String processType, CefCommandLine commandLine) {
317-
// commandLine.appendSwitchWithValue("force-dark-mode", "1");
318-
commandLine.appendSwitchWithValue("enable-features", "WebUIDarkMode,ForceDarkMode");
319-
}
320-
});
321-
var cefApp = CefApp.getInstance(createCefSettings());
322-
323-
CefApp.runLater(() -> {
324-
// one client for all tabs
325-
client = CefApp.getInstance().createClient();
326-
327-
client.addLifeSpanHandler(new CefLifeSpanHandlerAdapter() {
313+
try {
314+
CefApp.startup(new String[]{"--framework-dir-path", path.toAbsolutePath().toString()});
315+
CefApp.addAppHandler(new CefAppHandlerAdapter(null) {
328316
@Override
329-
public void onBeforeClose(CefBrowser browser) {
330-
if (browserCount.decrementAndGet() == 0 && exiting) {
331-
CefApp.runLater(() -> CefApp.getInstance().dispose());
332-
}
317+
public void onBeforeCommandLineProcessing(String processType, CefCommandLine commandLine) {
318+
// commandLine.appendSwitchWithValue("force-dark-mode", "1");
319+
commandLine.appendSwitchWithValue("enable-features", "WebUIDarkMode,ForceDarkMode");
333320
}
334321
});
335-
client.addDisplayHandler(new CefDisplayHandlerAdapter() {
336-
@Override
337-
public void onTitleChange(CefBrowser browser, String title) {
338-
super.onTitleChange(browser, title);
339-
var tabPort = getTabPort(browser);
340-
if (tabPort != null) {
341-
Platform.runLater(() -> tabPort.onTitleChanged(title));
322+
var cefApp = CefApp.getInstance(createCefSettings());
323+
324+
CefApp.runLater(() -> {
325+
// one client for all tabs
326+
client = CefApp.getInstance().createClient();
327+
328+
client.addLifeSpanHandler(new CefLifeSpanHandlerAdapter() {
329+
@Override
330+
public void onBeforeClose(CefBrowser browser) {
331+
if (browserCount.decrementAndGet() == 0 && exiting) {
332+
CefApp.runLater(() -> CefApp.getInstance().dispose());
333+
}
334+
}
335+
});
336+
client.addDisplayHandler(new CefDisplayHandlerAdapter() {
337+
@Override
338+
public void onTitleChange(CefBrowser browser, String title) {
339+
super.onTitleChange(browser, title);
340+
var tabPort = getTabPort(browser);
341+
if (tabPort != null) {
342+
Platform.runLater(() -> tabPort.onTitleChanged(title));
343+
}
342344
}
343-
}
344345

345-
@Override
346-
public void onFaviconURLChange(CefBrowser browser, String[] iconUrls) {
347-
super.onFaviconURLChange(browser, iconUrls);
348-
var tabPort = getTabPort(browser);
349-
if (tabPort != null) {
350-
Platform.runLater(() -> tabPort.onFaviconUrlChanged(iconUrls));
346+
@Override
347+
public void onFaviconURLChange(CefBrowser browser, String[] iconUrls) {
348+
super.onFaviconURLChange(browser, iconUrls);
349+
var tabPort = getTabPort(browser);
350+
if (tabPort != null) {
351+
Platform.runLater(() -> tabPort.onFaviconUrlChanged(iconUrls));
352+
}
351353
}
352-
}
353354

354-
@Override
355-
public void onAddressChange(CefBrowser browser, CefFrame frame, String url) {
356-
var tabPort = getTabPort(browser);
357-
if (tabPort != null) {
358-
Platform.runLater(() -> tabPort.onAddressChanged(url, ChangeSource.BROWSER));
355+
@Override
356+
public void onAddressChange(CefBrowser browser, CefFrame frame, String url) {
357+
var tabPort = getTabPort(browser);
358+
if (tabPort != null) {
359+
Platform.runLater(() -> tabPort.onAddressChanged(url, ChangeSource.BROWSER));
360+
}
359361
}
360-
}
361362

362-
@Override
363-
public boolean onCursorChange(CefBrowser browser, int cursorType) {
364-
var tabPort = getTabPort(browser);
365-
if (tabPort != null) {
366-
Platform.runLater(() -> tabPort.onCursorChanged(CefCursorUtils.getCursor(cursorType)));
363+
@Override
364+
public boolean onCursorChange(CefBrowser browser, int cursorType) {
365+
var tabPort = getTabPort(browser);
366+
if (tabPort != null) {
367+
Platform.runLater(() -> tabPort.onCursorChanged(CefCursorUtils.getCursor(cursorType)));
368+
}
369+
return true;
367370
}
368-
return true;
369-
}
370-
});
371-
client.addLoadHandler(new CefLoadHandlerAdapter() {
372-
@Override
373-
public void onLoadStart(CefBrowser browser, CefFrame frame,
374-
CefRequest.TransitionType transitionType) {
375-
if (frame.isMain()) {
376-
CefApp.runLater(() -> {
377-
var devToolsClient = browser.getDevToolsClient();
378-
if (devToolsClient != null) {
379-
devToolsClient.executeDevToolsMethod("Emulation.setAutoDarkModeOverride",
380-
"{ \"enabled\": true }"
381-
);
382-
}
383-
});
371+
});
372+
client.addLoadHandler(new CefLoadHandlerAdapter() {
373+
@Override
374+
public void onLoadStart(CefBrowser browser, CefFrame frame,
375+
CefRequest.TransitionType transitionType) {
376+
if (frame.isMain()) {
377+
CefApp.runLater(() -> {
378+
var devToolsClient = browser.getDevToolsClient();
379+
if (devToolsClient != null) {
380+
devToolsClient.executeDevToolsMethod("Emulation.setAutoDarkModeOverride",
381+
"{ \"enabled\": true }"
382+
);
383+
}
384+
});
385+
}
384386
}
385-
}
386-
});
387-
client.addFocusHandler(new CefFocusHandlerAdapter() {
388-
@Override
389-
public void onTakeFocus(CefBrowser browser, boolean next) {
390-
super.onTakeFocus(browser, next);
391-
var tabPort = getTabPort(browser);
392-
if (tabPort != null) {
393-
Platform.runLater(() -> tabPort.onTakeFocusFromBrowser());
387+
});
388+
client.addFocusHandler(new CefFocusHandlerAdapter() {
389+
@Override
390+
public void onTakeFocus(CefBrowser browser, boolean next) {
391+
super.onTakeFocus(browser, next);
392+
var tabPort = getTabPort(browser);
393+
if (tabPort != null) {
394+
Platform.runLater(() -> tabPort.onTakeFocusFromBrowser());
395+
}
394396
}
395-
}
396-
});
397-
client.addPrintHandler(new CefPrintHandlerAdapter() {
398-
@Override
399-
public void onPrintSettings(CefBrowser browser, CefPrintSettings settings, boolean getDefaults) {
400-
// settings.setDeviceName(...);
401-
settings.setPrinterPrintableArea(
402-
new Dimension2D(300, 300),
403-
new BoundingBox(0, 0, 300, 300),
404-
false
405-
);
406-
}
397+
});
398+
client.addPrintHandler(new CefPrintHandlerAdapter() {
399+
@Override
400+
public void onPrintSettings(CefBrowser browser, CefPrintSettings settings, boolean getDefaults) {
401+
// settings.setDeviceName(...);
402+
settings.setPrinterPrintableArea(
403+
new Dimension2D(300, 300),
404+
new BoundingBox(0, 0, 300, 300),
405+
false
406+
);
407+
}
408+
});
407409
});
408-
});
410+
} catch (Throwable t) {
411+
logger.error("Error initializing CEF", t);
412+
}
409413
}
410414

411415
private void onNewTab(String url) {

0 commit comments

Comments
 (0)