RFR: 8201538: Remove implementation support for applets from JavaFX
Kevin Rushforth
kcr at openjdk.java.net
Tue Aug 31 16:34:51 UTC 2021
This PR removes the obsolete applet implementation from JavaFX. It is an ongoing maintenance burden to carry around this legacy code. Also, cleaning this up could help in the implementation of GTK4, Wayland, and Metal, since we won't have to account for the way applet windows are created and managed.
## Notes to reviewers:
The first part of the removal was to eliminate the methods and classes on the Java side that are associated with creating and managing an applet window, and which are no longer called. After these were removed, I then removed the corresponding methods and classes on the native side that are no longer called.
### Shared Code
The following were removed from the shared code.
#### Removed Java classes
com.sun.javafx.tk.AppletWindow
com.sun.javafx.tk.quantum.GlassAppletWindow
#### Removed methods
The following methods were removed in the parent class and all subclasses.
com.sun.glass.ui.Application:
public abstract Window createWindow(long parent)
com.sun.glass.ui.Window:
public boolean getAppletMode()
public void setAppletMode(boolean appletMode)
public void dispatchNpapiEvent(Map eventInfo)
protected abstract long _createChildWindow(long parent)
protected Window(long parent)
protected abstract int _getEmbeddedX(long ptr)
protected abstract int _getEmbeddedY(long ptr)
com.sun.javafx.tk.Toolkit:
public abstract AppletWindow createAppletWindow(...)
public abstract void closeAppletWindow()
com.sun.javafx.tk.quantum.WindowStage:
static void setAppletWindow(GlassAppletWindow aw)
static GlassAppletWindow getAppletWindow()
### Linux (Gtk) Java code
The following classes or methods were removed:
com.sun.glass.ui.gtk.GtkChildWindow (class removed)
com.sun.glass.ui.gtk.GtkWindow:
protected GtkWindow(long parent)
### Linux (Gtk) native glass:
The following native classes were removed:
WindowContextChild
WindowContextPlug
### macOS Java code
The following classes or methods were removed:
com.sun.glass.events.mac.NpapiEvent (class removed)
com.sun.glass.ui.mac.MacApplication:
native protected String _getRemoteLayerServerName()
com.sun.glass.ui.View:
public int getNativeRemoteLayerId(String serverName)
com.sun.glass.ui.mac.MacView:
native protected int _getNativeRemoteLayerId(long ptr, String serverName)
native protected void _hostRemoteLayerId(long ptr, int nativeLayerId)
com.sun.glass.ui.mac.MacWindow:
protected MacWindow(long parent)
### macOS native code
The following native classes were removed:
GlassEmbeddedWindow*
GlassNSEvent
GlassView3D+Remote
RemoteLayerSupport
I also removed the `jIsChild` parameter from the window creation code which allowed for removing a lot of dead blocks of code. The main window creation method was:
- (id)_initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle
screen:(NSScreen *)screen jwindow:(jobject)jwindow jIsChild:(jboolean)jIsChild
This created a `GlassEmbeddedWindow` iff `jIsChild == JNI_TRUE`. Since `jIsChild` was only set to true by the (now removed) `_createChildWindow(long)` method, we can remove the parameter, the `GlassEmbeddedWindow*` classes, and all code blocks that are qualified by `if (jIsChild)`.
### Windows Java code
The following classes or methods were removed:
com.sun.glass.ui.win.WinChildWindow (class removed)
com.sun.glass.ui.win.WinWindow:
protected WinWindow(long parent)
### Windows native code
After removing all references to `IsChild()`, which was only ever true for `_createChildWindow()`, we can also remove the following:
GlassApplication::InstallMouseLLHook
GlassApplication::UninstallMouseLLHook
### iOS Java code
com.sun.glass.ui.ios.IosWindow:
protected IosWindow(long parent)
### iOS native code
With the removal of the `_createChildWindow` method, the following JNI method in `IosWindow` can be removed:
Java_com_sun_glass_ui_ios_IosWindow__1createChildWindow(JNIEnv *, jobject, jlong)
As a note, I don't have a setup to build this. It is a simple, safe change, but should be double-checked by someone from Gluon.
-------------
Commit messages:
- 8201538: Remove implementation support for applets from JavaFX
Changes: https://git.openjdk.java.net/jfx/pull/615/files
Webrev: https://webrevs.openjdk.java.net/?repo=jfx&pr=615&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8201538
Stats: 3424 lines in 64 files changed: 32 ins; 3308 del; 84 mod
Patch: https://git.openjdk.java.net/jfx/pull/615.diff
Fetch: git fetch https://git.openjdk.java.net/jfx pull/615/head:pull/615
PR: https://git.openjdk.java.net/jfx/pull/615
More information about the openjfx-dev
mailing list