[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-openjfx-dev
Subject: RFR: 8201538: Remove implementation support for applets from JavaFX
From: Kevin Rushforth <kcr () openjdk ! java ! net>
Date: 2021-08-31 16:34:51
Message-ID: 5Fxtt0GR8oAqedsdK2MPeebV4mv9C9x_wUvxi9x7iQM=.4b35e2c4-2971-4880-be6f-7a751474befb () github ! com
[Download RAW message or body]
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
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic