--- /dev/null 2014-07-31 16:13:19.122792434 +0400 +++ new/test/java/awt/reliability/GUIXEmbedMemory.java 2014-07-31 17:27:49.678615260 +0400 @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2004, 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. + * + * 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 sun.awt.X11.XEmbeddedFrame; + +import java.awt.*; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +/* + * @summary GUI of XEmbedMemoryTestTask. It creates an SWT shell on which an + * AWT Frame is embedded. Components will be added in the AWT frame + * and checked for any memory leak when they are removed. + * @author Girish R (girish.ramachandran@sun.com), AWT-SQE + */ + +public class GUIXEmbedMemory extends Frame { + + XEmbeddedFrame frame; + String windowID; + Process process; + static String WINDOW_ID_FILE = "window_id"; + + public void destroyProcess() { + if (process != null) + process.destroy(); + } + + public GUIXEmbedMemory() throws Exception { + //Check if the OS is Solaris or Linux and the toolkit is XToolkit + String osName = System.getProperty("os.name"); + if (!osName.equals("Linux") && !osName.equals("SunOS")) { + return; + } + process = Runtime.getRuntime().exec("./gtk-embedder"); + + File file = new File(WINDOW_ID_FILE); + int waitCount = 0; + while (!file.exists() && waitCount < 20) { + try { Thread.sleep(100); } catch (Exception e) {} + waitCount++; + } + + windowID = new BufferedReader(new FileReader(file)).readLine(); + + long window = Long.decode(windowID).longValue(); + frame = new XEmbeddedFrame(window); + + frame.setLayout(new FlowLayout()); + frame.setSize(500, 270); + + frame.setBackground(Color.red); + } +}