[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