[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-openjfx-dev
Subject: Integrated: 8201538: Remove implementation support for applets from JavaFX
From: Kevin Rushforth <kcr () openjdk ! java ! net>
Date: 2021-12-10 15:19:17
Message-ID: 3Eary5hHqNZQkuWwbp6_vH-QrERELRSBXepZgwM7MGI=.f5b4435b-01cd-4cd6-b1bf-086d4715194a () github ! com
[Download RAW message or body]
On Tue, 31 Aug 2021 16:28:53 GMT, Kevin Rushforth <kcr@openjdk.org> wrote:
> 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.
This pull request has now been integrated.
Changeset: 4f9b047b
Author: Kevin Rushforth <kcr@openjdk.org>
URL: https://git.openjdk.java.net/jfx/commit/4f9b047b8301ee3580588dd34ab809f5c6c4c193
Stats: 3424 lines in 64 files changed: 32 ins; 3308 del; 84 mod
8201538: Remove implementation support for applets from JavaFX
Reviewed-by: mstrauss, aghaisas, jvos
-------------
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