Skip to content

Commit 350b1ff

Browse files
authored
Specify failure reason for JX Browser errors (#7925)
1 parent af54479 commit 350b1ff

File tree

1 file changed

+39
-1
lines changed

1 file changed

+39
-1
lines changed

flutter-idea/src/io/flutter/jxbrowser/EmbeddedJxBrowser.java

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,13 +158,51 @@ public Logger logger() {
158158
}
159159
final Engine engine = engineRef.get();
160160
if (engine == null) {
161-
showMessageWithUrlLink("JX Browser engine failed to start", contentManager);
161+
showMessageWithUrlLink(jxBrowserErrorMessage(), contentManager);
162162
return null;
163163
} else {
164164
return new EmbeddedJxBrowserTab(engine);
165165
}
166166
}
167167

168+
private @NotNull String jxBrowserErrorMessage() {
169+
final String defaultError = "JX Browser engine failed to start";
170+
if (jxBrowserManager == null) {
171+
return defaultError;
172+
}
173+
switch (jxBrowserManager.getStatus()) {
174+
case NOT_INSTALLED:
175+
return "JX Browser is not installed";
176+
case INSTALLATION_IN_PROGRESS:
177+
return "JX Browser installation in progress";
178+
case INSTALLATION_SKIPPED:
179+
return "JX Browser installation skipped";
180+
case INSTALLATION_FAILED:
181+
final InstallationFailedReason failedReason = jxBrowserManager.getLatestFailureReason();
182+
final @Nullable String errorFromFailedMessage = jxBrowserErrorFromFailedReason(failedReason);
183+
return errorFromFailedMessage != null ? errorFromFailedMessage : defaultError;
184+
default:
185+
return defaultError;
186+
}
187+
}
188+
189+
private @Nullable String jxBrowserErrorFromFailedReason(@Nullable InstallationFailedReason failedReason) {
190+
if (failedReason == null) return null;
191+
final FailureType failureType = failedReason.failureType;
192+
if (failureType == null) return null;
193+
return switch (failureType) {
194+
case SYSTEM_INCOMPATIBLE -> "System is incompatible with JX Browser";
195+
case FILE_DOWNLOAD_FAILED -> "JX Browser file download failed";
196+
case MISSING_KEY -> "JX Browser license key is missing";
197+
case DIRECTORY_CREATION_FAILED -> "JX Browser directory creation failed";
198+
case MISSING_PLATFORM_FILES -> "JX Browser platform files are missing";
199+
case CLASS_LOAD_FAILED -> "JX Browser class load failed";
200+
case CLASS_NOT_FOUND -> "JX Browser class not found";
201+
default -> null;
202+
};
203+
204+
}
205+
168206
private void manageJxBrowserDownload(ContentManager contentManager) {
169207
final JxBrowserStatus jxBrowserStatus = jxBrowserManager.getStatus();
170208

0 commit comments

Comments
 (0)