Skip to content

Commit 3a16f12

Browse files
authored
Use alternative JxBrowser class loading for 2021.1 (#5453)
* Try alternative class loading * Fix full file paths * Correct substitutions
1 parent ef80d78 commit 3a16f12

File tree

3 files changed

+54
-1
lines changed

3 files changed

+54
-1
lines changed

src/io/flutter/jxbrowser/JxBrowserManager.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import com.intellij.util.download.DownloadableFileService;
2121
import com.intellij.util.download.FileDownloader;
2222
import com.teamdev.jxbrowser.browser.UnsupportedRenderingModeException;
23-
import com.teamdev.jxbrowser.callback.Callback;
2423
import com.teamdev.jxbrowser.engine.RenderingMode;
2524
import io.flutter.FlutterInitializer;
2625
import io.flutter.settings.FlutterSettings;
@@ -31,6 +30,8 @@
3130
import java.io.File;
3231
import java.io.FileNotFoundException;
3332
import java.io.IOException;
33+
import java.nio.file.Path;
34+
import java.nio.file.Paths;
3435
import java.util.ArrayList;
3536
import java.util.Collections;
3637
import java.util.List;
@@ -280,6 +281,32 @@ private void loadClasses(String[] fileNames) {
280281
installation.complete(JxBrowserStatus.INSTALLED);
281282
}
282283

284+
private void loadClasses2021(String[] fileNames) {
285+
List<Path> paths = new ArrayList<>();
286+
287+
try {
288+
for (String fileName: fileNames) {
289+
paths.add(Paths.get(getFilePath(fileName)));
290+
}
291+
FileUtils.getInstance().loadPaths(this.getClass().getClassLoader(), paths);
292+
} catch (Exception ex) {
293+
LOG.info("Failed to load JxBrowser file", ex);
294+
setStatusFailed("classLoadFailed");
295+
return;
296+
}
297+
298+
try {
299+
final UnsupportedRenderingModeException test = new UnsupportedRenderingModeException(RenderingMode.HARDWARE_ACCELERATED);
300+
} catch (NoClassDefFoundError e) {
301+
LOG.info("Failed to find JxBrowser class");
302+
setStatusFailed("NoClassDefFoundError");
303+
return;
304+
}
305+
FlutterInitializer.getAnalytics().sendEvent(ANALYTICS_CATEGORY, "installed");
306+
status.set(JxBrowserStatus.INSTALLED);
307+
installation.complete(JxBrowserStatus.INSTALLED);
308+
}
309+
283310
private String getFilePath(String fileName) {
284311
return DOWNLOAD_PATH + File.separatorChar + fileName;
285312
}

src/io/flutter/utils/FileUtils.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
import java.io.File;
1111
import java.net.URL;
12+
import java.nio.file.Path;
13+
import java.util.List;
1214

1315
public class FileUtils {
1416
private static FileUtils fileUtils;
@@ -62,4 +64,16 @@ public void loadClass(ClassLoader classLoader, String path) throws Exception {
6264
final URL url = file.toURI().toURL();
6365
urlClassLoader.addURL(url);
6466
}
67+
68+
/**
69+
* Loads a list of file paths with a class loader.
70+
*
71+
* This is only available for versions 211.4961.30 and later.
72+
* @param classLoader classloader that can be used as a UrlClassLoader to load the files.
73+
* @param paths list of file paths to load.
74+
*/
75+
public void loadPaths(ClassLoader classLoader, List<Path> paths) {
76+
final UrlClassLoader urlClassLoader = (UrlClassLoader) classLoader;
77+
//urlClassLoader.addFiles(paths);
78+
}
6579
}

tool/plugin/lib/edit.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,18 @@ List<EditCommand> editCommands = [
122122
replacement: 'new JsonParser().parse(contents)',
123123
version: 'AF.3.1',
124124
),
125+
Subst(
126+
path: 'src/io/flutter/jxbrowser/JxBrowserManager.java',
127+
initial: 'loadClasses(fileNames)',
128+
replacement: 'loadClasses2021(fileNames)',
129+
versions: ['2021.1'],
130+
),
131+
Subst(
132+
path: 'src/io/flutter/utils/FileUtils.java',
133+
initial: '//urlClassLoader.addFiles(paths)',
134+
replacement: 'urlClassLoader.addFiles(paths)',
135+
versions: ['2021.1'],
136+
),
125137
];
126138

127139
// Used to test checkAndClearAppliedEditCommands()

0 commit comments

Comments
 (0)