diff --git a/8296832-Improve-Swing-platform-support.patch b/8296832-Improve-Swing-platform-support.patch new file mode 100644 index 0000000000000000000000000000000000000000..a99762fbe3a562dc290382cd05e2a353eb74176e --- /dev/null +++ b/8296832-Improve-Swing-platform-support.patch @@ -0,0 +1,159 @@ +From 6089a4fcc583ab156c22eae8196ce5073bf90032 Mon Sep 17 00:00:00 2001 +From: Yuri Nesterenko +Date: Fri, 3 Mar 2023 11:32:12 +0300 +Subject: [PATCH] 8296832: Improve Swing platform support + +Reviewed-by: mbalao, andrew +Backport-of: a81c810a76d91b79917417ed22e5e5aa530690ca +--- + .../javax/swing/plaf/basic/BasicHTML.java | 27 ++++++++++++++++--- + .../javax/swing/text/html/HTMLEditorKit.java | 7 ++++- + .../javax/swing/text/html/ObjectView.java | 10 +++++++ + .../classes/sun/swing/SwingAccessor.java | 15 +++++++++++ + 4 files changed, 55 insertions(+), 4 deletions(-) + +diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicHTML.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicHTML.java +index 250c6d4c47..b13a9a1e70 100644 +--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicHTML.java ++++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicHTML.java +@@ -33,6 +33,7 @@ import javax.swing.*; + import javax.swing.text.*; + import javax.swing.text.html.*; + ++import sun.swing.SwingAccessor; + import sun.swing.SwingUtilities2; + + /** +@@ -204,7 +205,7 @@ public class BasicHTML { + View value = null; + View oldValue = (View)c.getClientProperty(BasicHTML.propertyKey); + Boolean htmlDisabled = (Boolean) c.getClientProperty(htmlDisable); +- if (htmlDisabled != Boolean.TRUE && BasicHTML.isHTMLString(text)) { ++ if (!(Boolean.TRUE.equals(htmlDisabled)) && BasicHTML.isHTMLString(text)) { + value = BasicHTML.createHTMLView(c, text); + } + if (value != oldValue && oldValue != null) { +@@ -359,15 +360,35 @@ public class BasicHTML { + */ + static class BasicHTMLViewFactory extends HTMLEditorKit.HTMLFactory { + public View create(Element elem) { +- View view = super.create(elem); + ++ View view = null; ++ try { ++ setAllowHTMLObject(); ++ view = super.create(elem); ++ } finally { ++ clearAllowHTMLObject(); ++ } + if (view instanceof ImageView) { + ((ImageView)view).setLoadsSynchronously(true); + } + return view; + } +- } + ++ private static Boolean useOV = null; ++ ++ private static void setAllowHTMLObject() { ++ if (useOV == null) { ++ useOV = java.security.AccessController.doPrivileged( ++ new sun.security.action.GetBooleanAction( ++ "swing.html.object")); ++ }; ++ SwingAccessor.setAllowHTMLObject(useOV); ++ } ++ ++ private static void clearAllowHTMLObject() { ++ SwingAccessor.setAllowHTMLObject(null); ++ } ++ } + + /** + * The subclass of HTMLDocument that is used as the model. getForeground +diff --git a/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java b/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java +index 425ba5f0b5..c49a1edad6 100644 +--- a/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java ++++ b/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java +@@ -40,6 +40,7 @@ import javax.accessibility.*; + import java.lang.ref.*; + import java.security.AccessController; + import java.security.PrivilegedAction; ++import sun.swing.SwingAccessor; + + /** + * The Swing JEditorPane text component supports different kinds +@@ -1182,7 +1183,11 @@ public class HTMLEditorKit extends StyledEditorKit implements Accessible { + (kind == HTML.Tag.TEXTAREA)) { + return new FormView(elem); + } else if (kind == HTML.Tag.OBJECT) { +- return new ObjectView(elem); ++ if (SwingAccessor.getAllowHTMLObject()) { ++ return new ObjectView(elem); ++ } else { ++ return new ObjectView(elem, false); ++ } + } else if (kind == HTML.Tag.FRAMESET) { + if (elem.getAttributes().isDefined(HTML.Attribute.ROWS)) { + return new FrameSetView(elem, View.Y_AXIS); +diff --git a/jdk/src/share/classes/javax/swing/text/html/ObjectView.java b/jdk/src/share/classes/javax/swing/text/html/ObjectView.java +index 5bcbc10c67..9671f6c481 100644 +--- a/jdk/src/share/classes/javax/swing/text/html/ObjectView.java ++++ b/jdk/src/share/classes/javax/swing/text/html/ObjectView.java +@@ -72,6 +72,8 @@ import sun.reflect.misc.ReflectUtil; + */ + public class ObjectView extends ComponentView { + ++ private boolean createComp = true; // default ++ + /** + * Creates a new ObjectView object. + * +@@ -81,12 +83,20 @@ public class ObjectView extends ComponentView { + super(elem); + } + ++ ObjectView(Element elem, boolean createComp) { ++ super(elem); ++ this.createComp = createComp; ++ } ++ + /** + * Create the component. The classid is used + * as a specification of the classname, which + * we try to load. + */ + protected Component createComponent() { ++ if (!createComp) { ++ return getUnloadableRepresentation(); ++ } + AttributeSet attr = getElement().getAttributes(); + String classname = (String) attr.getAttribute(HTML.Attribute.CLASSID); + try { +diff --git a/jdk/src/share/classes/sun/swing/SwingAccessor.java b/jdk/src/share/classes/sun/swing/SwingAccessor.java +index 797802abd8..8cec052eb3 100644 +--- a/jdk/src/share/classes/sun/swing/SwingAccessor.java ++++ b/jdk/src/share/classes/sun/swing/SwingAccessor.java +@@ -156,4 +156,19 @@ public final class SwingAccessor { + } + return repaintManagerAccessor; + } ++ ++ private static ThreadLocal tlObj = new ThreadLocal(); ++ ++ public static Boolean getAllowHTMLObject() { ++ Boolean b = tlObj.get(); ++ if (b == null) { ++ return Boolean.TRUE; ++ } else { ++ return b; ++ } ++ } ++ ++ public static void setAllowHTMLObject(Boolean val) { ++ tlObj.set(val); ++ } + } +-- +2.39.2 (Apple Git-143) + diff --git a/openjdk-1.8.0.spec b/openjdk-1.8.0.spec index 6e9d326f6adb3c43d3239fe5a256ed73f0bc6618..0da8409947cb964896bfce45498e5032ea0218aa 100644 --- a/openjdk-1.8.0.spec +++ b/openjdk-1.8.0.spec @@ -916,7 +916,7 @@ Provides: java-%{javaver}-%{origin}-accessibility%{?1} = %{epoch}:%{version}-%{r Name: java-%{javaver}-%{origin} Version: %{javaver}.%{updatever}.%{buildver} -Release: 1 +Release: 2 # java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons # and this change was brought into RHEL-4. java-1.5.0-ibm packages # also included the epoch in their virtual provides. This created a @@ -1182,11 +1182,12 @@ Patch301: fix-SUSE-x86_32-build-failure.patch Patch302: fix-the-issue-that-cert-of-geotrustglobalca-expired.patch # 8u372 -Patch303: 8074354-Make-CreateMinidumpOnCrash-a-new-name-and-av.patch -Patch304: jcmd-mnt-add-start-time-and-end-time.patch -Patch305: Fix-localtime_r-not-defined-on-windows.patch -Patch306: 8057743-process-Synchronize-exiting-of-threads-and-p.patch +Patch303: 8074354-Make-CreateMinidumpOnCrash-a-new-name-and-av.patch +Patch304: jcmd-mnt-add-start-time-and-end-time.patch +Patch305: Fix-localtime_r-not-defined-on-windows.patch +Patch306: 8057743-process-Synchronize-exiting-of-threads-and-p.patch Patch307: 8305541-C2-Div-Mod-nodes-without-zero-check-could-be.patch +Patch308: 8296832-Improve-Swing-platform-support.patch ############################################# # @@ -1710,6 +1711,7 @@ pushd %{top_level_dir_name} %patch305 -p1 %patch306 -p1 %patch307 -p1 +%patch308 -p1 popd # System library fixes @@ -1936,7 +1938,7 @@ done # Make sure gdb can do a backtrace based on line numbers on libjvm.so # javaCalls.cpp:58 should map to: -# http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/ff3b27e6bcc2/src/share/vm/runtime/javaCalls.cpp#l58 +# http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/ff3b27e6bcc2/src/share/vm/runtime/javaCalls.cpp#l58 # Using line number 1 might cause build problems. gdb -q "$JAVA_HOME/bin/java" < - 1:1.8.0.372-b07.2 +- add 8296832-Improve-Swing-platform-support.patch + * Fri May 11 2023 crash888 - 1:1.8.0.372-b07.1 - modified Fix-the-crash-that-occurs-when-the-process-exits-due.patch