jvanek pushed to java-1.8.0-openjdk (master). "Sync with f21"
notifications at fedoraproject.org
notifications at fedoraproject.org
Fri Mar 27 12:04:32 UTC 2015
>From 9710a8e4f5f22fc9ae63ecf55afe0ccf32414944 Mon Sep 17 00:00:00 2001
From: Jiri Vanek <jvanek at redhat.com>
Date: Fri, 27 Mar 2015 13:04:20 +0100
Subject: Sync with f21
diff --git a/1182011_JavaPrintApiDoesNotPrintUmlautCharsWithPostscriptOutputCorrectly.patch b/1182011_JavaPrintApiDoesNotPrintUmlautCharsWithPostscriptOutputCorrectly.patch
new file mode 100644
index 0000000..ab6c3b6
--- /dev/null
+++ b/1182011_JavaPrintApiDoesNotPrintUmlautCharsWithPostscriptOutputCorrectly.patch
@@ -0,0 +1,148 @@
+
+# HG changeset patch
+# User neugens
+# Date 1421686672 -3600
+# Node ID 868404fc8be0163f50c242f473ecfbe4eccfe519
+# Parent 36c8318010acb190176744eb0a67a321ae23e711
+8067364: Printing to Postscript doesn't support dieresis
+Summary: Fix regression caused by fix for 8023990
+Reviewed-by: bae, prr
+Contributed-by: neugens at redhat.com, philip.race at oracle.com
+
+diff -r 36c8318010ac -r 868404fc8be0 src/solaris/classes/sun/font/FcFontConfiguration.java
+--- jdk8/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java Tue Dec 16 19:46:22 2014 +0000
++++ jdk8/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java Mon Jan 19 17:57:52 2015 +0100
+@@ -180,7 +180,7 @@
+ String[] componentFaceNames = cfi[idx].getComponentFaceNames();
+ FontDescriptor[] ret = new FontDescriptor[componentFaceNames.length];
+ for (int i = 0; i < componentFaceNames.length; i++) {
+- ret[i] = new FontDescriptor(componentFaceNames[i], StandardCharsets.UTF_8.newEncoder(), new int[0]);
++ ret[i] = new FontDescriptor(componentFaceNames[i], StandardCharsets.ISO_8859_1.newEncoder(), new int[0]);
+ }
+
+ return ret;
+diff -r 36c8318010ac -r 868404fc8be0 test/javax/print/PrintSEUmlauts/PrintSEUmlauts.java
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ jdk8/jdk/test/javax/print/PrintSEUmlauts/PrintSEUmlauts.java Mon Jan 19 17:57:52 2015 +0100
+@@ -0,0 +1,120 @@
++/*
++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation. Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++import java.awt.Graphics;
++import java.awt.GraphicsEnvironment;
++import java.awt.print.PageFormat;
++import java.awt.print.Printable;
++import java.io.File;
++import java.io.FileInputStream;
++import java.io.FileOutputStream;
++import java.io.IOException;
++import java.nio.charset.StandardCharsets;
++import javax.print.DocFlavor;
++import javax.print.DocPrintJob;
++import javax.print.SimpleDoc;
++import javax.print.StreamPrintService;
++import javax.print.StreamPrintServiceFactory;
++import javax.print.attribute.HashDocAttributeSet;
++import javax.print.attribute.HashPrintRequestAttributeSet;
++import javax.print.event.PrintJobAdapter;
++import javax.print.event.PrintJobEvent;
++
++/*
++ * @test
++ * @bug 8067364
++ * @summary Printing to Postscript doesn't support dieresis
++ * @build PrintSEUmlauts
++ * @run main/othervm PrintSEUmlauts
++ */
++public class PrintSEUmlauts implements Printable {
++
++ public static void main(String[] args) throws Exception {
++
++ GraphicsEnvironment.getLocalGraphicsEnvironment();
++
++ DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
++ String mime = DocFlavor.BYTE_ARRAY.POSTSCRIPT.getMimeType();
++
++ StreamPrintServiceFactory[] factories =
++ StreamPrintServiceFactory.
++ lookupStreamPrintServiceFactories(flavor, mime);
++ if (factories.length == 0) {
++ System.out.println("No print service found.");
++ return;
++ }
++
++ FileOutputStream output = new FileOutputStream("out.ps");
++ StreamPrintService service = factories[0].getPrintService(output);
++
++ SimpleDoc doc =
++ new SimpleDoc(new PrintSEUmlauts(),
++ DocFlavor.SERVICE_FORMATTED.PRINTABLE,
++ new HashDocAttributeSet());
++ DocPrintJob job = service.createPrintJob();
++ job.addPrintJobListener(new PrintJobAdapter() {
++ @Override
++ public void printJobCompleted(PrintJobEvent pje) {
++ testPrintAndExit();
++ }
++ });
++
++ job.print(doc, new HashPrintRequestAttributeSet());
++ }
++
++ private static final boolean DEBUG = false;
++ private static void testPrintAndExit() {
++ String expected = "<e4> 7.44 100.0 100.0 S";
++ String content = "";
++
++ File file = new File("out.ps");
++ if (!DEBUG) {
++ file.deleteOnExit();
++ }
++
++ try (FileInputStream stream = new FileInputStream(file)) {
++ byte[] data = new byte[(int) file.length()];
++ stream.read(data);
++ content = new String(data, StandardCharsets.ISO_8859_1);
++ } catch (IOException ex) {
++ ex.printStackTrace();
++ }
++
++ if (!content.contains(expected)) {
++ System.err.println("FAIL");
++ if (DEBUG) {
++ System.err.println("printing content");
++ System.err.println(content);
++ }
++ throw new RuntimeException("Expected <e4> to represent 'ä' but not found!");
++ }
++ System.err.println("SUCCESS");
++ }
++
++ public int print(Graphics g, PageFormat pf, int pg) {
++ if (pg > 0) return NO_SUCH_PAGE;
++ g.drawString("ä", 100, 100);
++ return PAGE_EXISTS;
++ }
++}
+
diff --git a/1182694_javaApplicationMenuMisbehave.patch b/1182694_javaApplicationMenuMisbehave.patch
new file mode 100644
index 0000000..55da997
--- /dev/null
+++ b/1182694_javaApplicationMenuMisbehave.patch
@@ -0,0 +1,232 @@
+changeset: 10519:e1ca700aaa1f
+tag: tip
+user: neugens
+date: Fri Feb 27 15:50:03 2015 +0100
+summary: 8071705: Java application menu misbehaves when running multiple screen stacked vertically
+
+diff --git jdk8/jdk/src/share/classes/javax/swing/JMenu.java jdk8/jdk/src/share/classes/javax/swing/JMenu.java
+--- jdk8/jdk/src/share/classes/javax/swing/JMenu.java
++++ jdk8/jdk/src/share/classes/javax/swing/JMenu.java
+@@ -475,7 +475,8 @@
+ }
+ // Then the y:
+ y = s.height + yOffset; // Prefer dropping down
+- if (position.y + y + pmSize.height >= screenBounds.height &&
++ if (position.y + y + pmSize.height >= screenBounds.height
++ + screenBounds.y &&
+ // popup doesn't fit - place it wherever there's more room
+ screenBounds.height - s.height < 2*(position.y
+ - screenBounds.y)) {
+diff --git jdk8/jdk/test/javax/swing/JMenu/8071705/bug8071705.java jdk8/jdk/test/javax/swing/JMenu/8071705/bug8071705.java
+new file mode 100644
+--- /dev/null
++++ jdk8/jdk/test/javax/swing/JMenu/8071705/bug8071705.java
+@@ -0,0 +1,207 @@
++/*
++ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test
++ * @bug 8071705
++ * @summary Java application menu misbehaves when running multiple screen stacked vertically
++ * @build bug8071705
++ * @run main/othervm bug8071705
++ */
++
++import java.awt.Dimension;
++import java.awt.GraphicsConfiguration;
++import java.awt.GraphicsDevice;
++import java.awt.GraphicsEnvironment;
++import java.awt.Point;
++import java.awt.Rectangle;
++import java.awt.Toolkit;
++import java.awt.event.ComponentAdapter;
++import java.awt.event.ComponentEvent;
++import java.awt.event.KeyEvent;
++import java.util.concurrent.CountDownLatch;
++
++import javax.swing.JFrame;
++import javax.swing.JMenu;
++import javax.swing.JMenuBar;
++import javax.swing.JMenuItem;
++import javax.swing.JPopupMenu;
++import javax.swing.SwingUtilities;
++import javax.swing.UIManager;
++
++public class bug8071705 {
++
++ public static void main(String[] args) throws Exception {
++
++ final CountDownLatch latch = new CountDownLatch(1);
++ final boolean [] result = new boolean[1];
++
++ SwingUtilities.invokeLater(new Runnable() {
++ @Override
++ public void run() {
++ JFrame frame = createGUI();
++ GraphicsDevice[] devices = checkScreens();
++
++ // check if we have more than one and if they are stacked
++ // vertically
++ GraphicsDevice device = checkConfigs(devices);
++ if (device == null) {
++ // just pass the test
++ frame.dispose();
++ result[0] = true;
++ latch.countDown();
++ } else {
++ FrameListener listener =
++ new FrameListener(device, latch, result);
++ frame.addComponentListener(listener);
++ frame.setVisible(true);
++ }
++ }
++ });
++
++ latch.await();
++
++ if (result[0] == false) {
++ throw new RuntimeException("popup menu rendered in wrong position");
++ }
++
++ System.out.println("OK");
++ }
++
++ private static GraphicsDevice[] checkScreens() {
++ GraphicsEnvironment ge =
++ GraphicsEnvironment.getLocalGraphicsEnvironment();
++ return ge.getScreenDevices();
++ }
++
++ private static JFrame createGUI() {
++ JMenuBar menuBar = new JMenuBar();
++ JMenu menu = new JMenu("Some menu");
++ menuBar.add(menu);
++
++ for (int i = 0; i < 10; i++) {
++ menu.add(new JMenuItem("Some menu #" + i));
++ }
++
++ JFrame frame = new JFrame();
++ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
++ frame.setMinimumSize(new Dimension(200, 200));
++ frame.setJMenuBar(menuBar);
++ return frame;
++ }
++
++ private static GraphicsDevice checkConfigs(GraphicsDevice[] devices) {
++
++ GraphicsDevice correctDevice = null;
++ if (devices.length < 2) {
++ return correctDevice;
++ }
++
++ Toolkit toolkit = Toolkit.getDefaultToolkit();
++ Rectangle screenBounds = new Rectangle(toolkit.getScreenSize());
++ int halfScreen = screenBounds.height/2;
++
++ for(int i = 0; i < devices.length; i++) {
++ if(devices[i].getType() == GraphicsDevice.TYPE_RASTER_SCREEN) {
++ GraphicsConfiguration conf =
++ devices[i].getDefaultConfiguration();
++ Rectangle bounds = conf.getBounds();
++ if (bounds.y >= halfScreen) {
++ // found
++ correctDevice = devices[i];
++ break;
++ }
++ }
++ }
++ return correctDevice;
++ }
++
++ private static class FrameListener extends ComponentAdapter {
++
++ private GraphicsDevice device;
++ private CountDownLatch latch;
++ private boolean [] result;
++ public FrameListener(GraphicsDevice device,
++ CountDownLatch latch,
++ boolean [] result)
++ {
++ this.device = device;
++ this.latch = latch;
++ this.result = result;
++ }
++
++ @Override
++ public void componentShown(ComponentEvent e) {
++ JFrame frame = (JFrame) e.getComponent();
++
++ runActualTest(device, latch, frame, result);
++
++ frame.setVisible(false);
++ frame.dispose();
++ latch.countDown();
++ }
++ }
++
++ private static Rectangle setLocation(JFrame frame, GraphicsDevice device) {
++ GraphicsConfiguration conf = device.getDefaultConfiguration();
++ Rectangle bounds = conf.getBounds();
++
++ // put just below half screen
++ int x = bounds.x + bounds.width/2;
++ int y = bounds.y + bounds.height/2;
++ frame.setLocation(x, y);
++
++ return bounds;
++ }
++
++ private static void runActualTest(GraphicsDevice device,
++ CountDownLatch latch,
++ JFrame frame,
++ boolean [] result)
++ {
++ Rectangle screenBounds = setLocation(frame, device);
++ JMenu menu = frame.getJMenuBar().getMenu(0);
++ menu.doClick();
++
++ Point location = menu.getLocationOnScreen();
++ JPopupMenu pm = menu.getPopupMenu();
++ Dimension pmSize = pm.getSize();
++
++ int yOffset = UIManager.getInt("Menu.submenuPopupOffsetY");
++ int height = location.y + yOffset + pmSize.height + menu.getHeight();
++ int available = screenBounds.y + screenBounds.height - height;
++ if (available > 0) {
++ Point origin = pm.getLocationOnScreen();
++ if (origin.y < location.y) {
++ // growing upward, wrong!
++ result[0] = false;
++ } else {
++ // growing downward, ok!
++ result[0] = true;
++ }
++ } else {
++ // there is no space, growing upward would be ok, so we pass
++ result[0] = true;
++ }
++ }
++}
+
diff --git a/java-1.8.0-openjdk.spec b/java-1.8.0-openjdk.spec
index da3b4f9..107fc8c 100644
--- a/java-1.8.0-openjdk.spec
+++ b/java-1.8.0-openjdk.spec
@@ -635,7 +635,7 @@ Obsoletes: java-1.7.0-openjdk-accessibility%1
Name: java-%{javaver}-%{origin}
Version: %{javaver}.%{updatever}
-Release: 23.%{buildver}%{?dist}
+Release: 24.%{buildver}%{?dist}
# 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
@@ -725,6 +725,11 @@ Patch400: ppc_stack_overflow_fix.patch
Patch401: fix_ZERO_ARCHDEF_ppc.patch
Patch402: atomic_linux_zero.inline.hpp.patch
+#both upstreamed, will fly away in u60
+Patch501: 1182011_JavaPrintApiDoesNotPrintUmlautCharsWithPostscriptOutputCorrectly.patch
+Patch502: 1182694_javaApplicationMenuMisbehave.patch
+
+
Patch9999: enableArm64.patch
BuildRequires: autoconf
@@ -1017,6 +1022,9 @@ tar xzf %{SOURCE8}
%patch300
+%patch501
+%patch502
+
%if %{include_debug_build}
cp -r tapset tapset%{debug_suffix}
%endif
@@ -1697,6 +1705,11 @@ end
%changelog
+* Fri Mar 27 2015 Jiri Vanek <jvanek at redhat.com> - 1:1.8.0.40-24.b25
+- added patch501 1182011_JavaPrintApiDoesNotPrintUmlautCharsWithPostscriptOutputCorrectly.patch
+- added patch502 1182694_javaApplicationMenuMisbehave.patch
+- both upstreamed, will be gone with u60
+
* Wed Mar 25 2015 Omair Majid <omajid at redhat.com> - 1:1.8.0.40-23.b25
- Disable various EC algorithms in configuration
--
cgit v0.10.2
http://pkgs.fedoraproject.org/cgit/java-1.8.0-openjdk.git/commit/?h=master&id=9710a8e4f5f22fc9ae63ecf55afe0ccf32414944
More information about the scm-commits
mailing list