@ -3,8 +3,10 @@ package com.fr.design.jxbrowser;
import com.fr.design.DesignerEnvManager ;
import com.fr.design.ui.ModernUIConstants ;
import com.fr.log.FineLoggerFactory ;
import com.fr.stable.CommonUtils ;
import com.fr.value.ClearableLazyValue ;
import com.fr.web.struct.AssembleComponent ;
import com.teamdev.jxbrowser.engine.ChromiumBinariesExtractionException ;
import com.teamdev.jxbrowser.engine.Engine ;
import com.teamdev.jxbrowser.engine.EngineOptions ;
import com.teamdev.jxbrowser.engine.RenderingMode ;
@ -12,8 +14,11 @@ import com.teamdev.jxbrowser.engine.event.EngineCrashed;
import com.teamdev.jxbrowser.net.Network ;
import com.teamdev.jxbrowser.net.Scheme ;
import com.teamdev.jxbrowser.net.callback.VerifyCertificateCallback ;
import com.teamdev.jxbrowser.os.Environment ;
import org.jetbrains.annotations.NotNull ;
import java.nio.file.Path ;
import java.nio.file.Paths ;
import java.util.Collections ;
import java.util.Map ;
@ -41,7 +46,18 @@ public class JxEngine {
. addSwitch ( "--disable-google-traffic" )
. addScheme ( Scheme . of ( ModernUIConstants . EMB_TAG ) ,
new NxInterceptRequestCallback ( this : : getComponent , this : : getParameterMap ) ) ;
Engine engine = Engine . newInstance ( builder . build ( ) ) ;
Engine engine ;
try {
engine = Engine . newInstance ( builder . build ( ) ) ;
} catch ( ChromiumBinariesExtractionException e ) {
Path chromiumDir = Paths . get ( System . getProperty ( "jxbrowser.chromium.dir" , Environment . defaultChromiumDir ( ) . toString ( ) ) ) ;
if ( CommonUtils . deleteFile ( chromiumDir . toFile ( ) ) ) {
FineLoggerFactory . getLogger ( ) . warn ( "[jxbrowser]Retry start engine success after delete chromium dir manually: {}" , chromiumDir ) ;
engine = Engine . newInstance ( builder . build ( ) ) ;
} else {
throw e ;
}
}
engine . on ( EngineCrashed . class , ( event ) - > {
FineLoggerFactory . getLogger ( ) . error ( "jxBrowser engine crashed with exitCode: {}" , event . exitCode ( ) ) ;
event . engine ( ) . close ( ) ;