[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