6686273: Some AWT reg. tests should be moved to open repository (for CRs 6444769, 6480547, and 6560348)
Some AWT reg. tests are moved to open repository (for CRs 6444769, 6480547, and 6560348) Reviewed-by: ant
This commit is contained in:
parent
d21a0af975
commit
74ae1c6b65
jdk/test/java/awt
Insets/WindowWithWarningTest
TextField/ScrollSelectionTest
xembed/server
@ -0,0 +1,20 @@
|
||||
<html>
|
||||
<!--
|
||||
@test
|
||||
@bug 6391770
|
||||
@summary Content of the Window should be laid out in the area left after WarningWindow was added.
|
||||
@author Yuri Nesterenko
|
||||
@run applet WindowWithWarningTest.html
|
||||
-->
|
||||
|
||||
<head>
|
||||
<title>WindowWithWarningTest</title>
|
||||
</head>
|
||||
<pre>
|
||||
This test will run automatically.
|
||||
</pre>
|
||||
<body>
|
||||
<applet code="WindowWithWarningTest.class" width=350 height=300></applet>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -0,0 +1,315 @@
|
||||
/*
|
||||
* Copyright 2006-2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
test
|
||||
@bug 6391770
|
||||
@summary Content of the Window should be laid out in the area left after WarningWindow was added.
|
||||
@author yuri nesterenko: area=
|
||||
@run applet WindowWithWarningTest.html
|
||||
*/
|
||||
|
||||
// Note there is no @ in front of test above. This is so that the
|
||||
// harness will not mistake this file as a test file. It should
|
||||
// only see the html file as a test file. (the harness runs all
|
||||
// valid test files, so it would run this test twice if this file
|
||||
// were valid as well as the html file.)
|
||||
// Also, note the area= after Your Name in the author tag. Here, you
|
||||
// should put which functional area the test falls in. See the
|
||||
// AWT-core home page -> test areas and/or -> AWT team for a list of
|
||||
// areas.
|
||||
// Note also the 'AutomaticAppletTest.html' in the run tag. This should
|
||||
// be changed to the name of the test.
|
||||
|
||||
|
||||
/**
|
||||
* WindowWithWarningTest.java
|
||||
*
|
||||
* summary:
|
||||
*/
|
||||
|
||||
import java.applet.Applet;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import javax.swing.*;
|
||||
|
||||
//Automated tests should run as applet tests if possible because they
|
||||
// get their environments cleaned up, including AWT threads, any
|
||||
// test created threads, and any system resources used by the test
|
||||
// such as file descriptors. (This is normally not a problem as
|
||||
// main tests usually run in a separate VM, however on some platforms
|
||||
// such as the Mac, separate VMs are not possible and non-applet
|
||||
// tests will cause problems). Also, you don't have to worry about
|
||||
// synchronisation stuff in Applet tests they way you do in main
|
||||
// tests...
|
||||
|
||||
|
||||
public class WindowWithWarningTest extends Applet
|
||||
{
|
||||
//Declare things used in the test, like buttons and labels here
|
||||
boolean buttonClicked = false;
|
||||
public static final int MAX_COUNT = 100;
|
||||
|
||||
public void init()
|
||||
{
|
||||
//Create instructions for the user here, as well as set up
|
||||
// the environment -- set the layout manager, add buttons,
|
||||
// etc.
|
||||
|
||||
this.setLayout (new BorderLayout ());
|
||||
|
||||
String[] instructions =
|
||||
{
|
||||
"This is an AUTOMATIC test",
|
||||
"simply wait until it is done"
|
||||
};
|
||||
//Sysout.createDialog( );
|
||||
//Sysout.printInstructions( instructions );
|
||||
|
||||
}//End init()
|
||||
public void start ()
|
||||
{
|
||||
//Get things going. Request focus, set size, et cetera
|
||||
System.setSecurityManager( new SecurityManager() {
|
||||
// deny AWTPermission("showWindowWithoutWarningBanner")
|
||||
public boolean checkTopLevelWindow(Object window) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
JFrame frame = new JFrame("Window Test");
|
||||
frame.setBounds(50, 50, 200, 200);
|
||||
frame.show();
|
||||
|
||||
JWindow window = new JWindow( frame );
|
||||
JButton jbutton1 = new JButton( "First" );
|
||||
jbutton1.addMouseListener( new MouseAdapter() {
|
||||
public void mousePressed( MouseEvent me ) {
|
||||
buttonClicked = true;
|
||||
}
|
||||
});
|
||||
JButton jbutton2 = new JButton( "Second" );
|
||||
window.setLocation( 300, 300 );
|
||||
|
||||
window.add("North", jbutton1);
|
||||
window.add("South", jbutton2);
|
||||
|
||||
window.pack();
|
||||
window.show();
|
||||
//wait for frame to show:
|
||||
getLocation( frame );
|
||||
window.toFront();
|
||||
|
||||
Dimension size0 = window.getSize();
|
||||
Dimension size1 = null;
|
||||
try {
|
||||
Robot robot = new Robot();
|
||||
|
||||
robot.delay(500);
|
||||
window.pack();
|
||||
robot.delay(500);
|
||||
window.pack();
|
||||
// size1 must be the same as size0
|
||||
size1 = window.getSize();
|
||||
robot.delay(500);
|
||||
Point pt = jbutton1.getLocationOnScreen();
|
||||
robot.mouseMove((int) jbutton1.getLocationOnScreen().x + jbutton1.getWidth() / 2,
|
||||
(int) jbutton1.getLocationOnScreen().y + jbutton1.getHeight() / 2);
|
||||
robot.delay(500);
|
||||
robot.mousePress(MouseEvent.BUTTON1_MASK);
|
||||
robot.delay(100);
|
||||
robot.mouseRelease(MouseEvent.BUTTON1_MASK);
|
||||
robot.delay(2000);
|
||||
}catch(Exception e) {
|
||||
throw new RuntimeException( "Exception "+e );
|
||||
}
|
||||
if( !size0.equals(size1) ) {
|
||||
throw new RuntimeException( "Wrong Window size after multiple pack()s");
|
||||
}
|
||||
if( !buttonClicked ) {
|
||||
throw new RuntimeException( "Button was not clicked");
|
||||
}
|
||||
window.dispose();
|
||||
frame.dispose();
|
||||
|
||||
System.out.println("Test Passed.");
|
||||
}// start()
|
||||
public static Point getLocation( Component co ) throws RuntimeException {
|
||||
Point pt = null;
|
||||
boolean bFound = false;
|
||||
int count = 0;
|
||||
while( !bFound ) {
|
||||
try {
|
||||
pt = co.getLocationOnScreen();
|
||||
bFound = true;
|
||||
}catch( Exception ex ) {
|
||||
bFound = false;
|
||||
count++;
|
||||
}
|
||||
if( !bFound && count > MAX_COUNT ) {
|
||||
throw new RuntimeException("don't see a component to get location");
|
||||
}
|
||||
}
|
||||
return pt;
|
||||
}
|
||||
|
||||
|
||||
}// class AutomaticAppletTest
|
||||
|
||||
|
||||
/****************************************************
|
||||
Standard Test Machinery
|
||||
DO NOT modify anything below -- it's a standard
|
||||
chunk of code whose purpose is to make user
|
||||
interaction uniform, and thereby make it simpler
|
||||
to read and understand someone else's test.
|
||||
****************************************************/
|
||||
|
||||
/**
|
||||
This is part of the standard test machinery.
|
||||
It creates a dialog (with the instructions), and is the interface
|
||||
for sending text messages to the user.
|
||||
To print the instructions, send an array of strings to Sysout.createDialog
|
||||
WithInstructions method. Put one line of instructions per array entry.
|
||||
To display a message for the tester to see, simply call Sysout.println
|
||||
with the string to be displayed.
|
||||
This mimics System.out.println but works within the test harness as well
|
||||
as standalone.
|
||||
*/
|
||||
|
||||
class Sysout
|
||||
{
|
||||
private static TestDialog dialog;
|
||||
|
||||
public static void createDialogWithInstructions( String[] instructions )
|
||||
{
|
||||
dialog = new TestDialog( new Frame(), "Instructions" );
|
||||
dialog.printInstructions( instructions );
|
||||
dialog.setVisible(true);
|
||||
println( "Any messages for the tester will display here." );
|
||||
}
|
||||
|
||||
public static void createDialog( )
|
||||
{
|
||||
dialog = new TestDialog( new Frame(), "Instructions" );
|
||||
String[] defInstr = { "Instructions will appear here. ", "" } ;
|
||||
dialog.printInstructions( defInstr );
|
||||
dialog.setVisible(true);
|
||||
println( "Any messages for the tester will display here." );
|
||||
}
|
||||
|
||||
|
||||
public static void printInstructions( String[] instructions )
|
||||
{
|
||||
dialog.printInstructions( instructions );
|
||||
}
|
||||
|
||||
|
||||
public static void println( String messageIn )
|
||||
{
|
||||
dialog.displayMessage( messageIn );
|
||||
}
|
||||
|
||||
}// Sysout class
|
||||
|
||||
/**
|
||||
This is part of the standard test machinery. It provides a place for the
|
||||
test instructions to be displayed, and a place for interactive messages
|
||||
to the user to be displayed.
|
||||
To have the test instructions displayed, see Sysout.
|
||||
To have a message to the user be displayed, see Sysout.
|
||||
Do not call anything in this dialog directly.
|
||||
*/
|
||||
class TestDialog extends Dialog
|
||||
{
|
||||
|
||||
TextArea instructionsText;
|
||||
TextArea messageText;
|
||||
int maxStringLength = 80;
|
||||
|
||||
//DO NOT call this directly, go through Sysout
|
||||
public TestDialog( Frame frame, String name )
|
||||
{
|
||||
super( frame, name );
|
||||
int scrollBoth = TextArea.SCROLLBARS_BOTH;
|
||||
instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
|
||||
add( "North", instructionsText );
|
||||
|
||||
messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
|
||||
add("Center", messageText);
|
||||
|
||||
pack();
|
||||
|
||||
show();
|
||||
}// TestDialog()
|
||||
|
||||
//DO NOT call this directly, go through Sysout
|
||||
public void printInstructions( String[] instructions )
|
||||
{
|
||||
//Clear out any current instructions
|
||||
instructionsText.setText( "" );
|
||||
|
||||
//Go down array of instruction strings
|
||||
|
||||
String printStr, remainingStr;
|
||||
for( int i=0; i < instructions.length; i++ )
|
||||
{
|
||||
//chop up each into pieces maxSringLength long
|
||||
remainingStr = instructions[ i ];
|
||||
while( remainingStr.length() > 0 )
|
||||
{
|
||||
//if longer than max then chop off first max chars to print
|
||||
if( remainingStr.length() >= maxStringLength )
|
||||
{
|
||||
//Try to chop on a word boundary
|
||||
int posOfSpace = remainingStr.
|
||||
lastIndexOf( ' ', maxStringLength - 1 );
|
||||
|
||||
if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
|
||||
|
||||
printStr = remainingStr.substring( 0, posOfSpace + 1 );
|
||||
remainingStr = remainingStr.substring( posOfSpace + 1 );
|
||||
}
|
||||
//else just print
|
||||
else
|
||||
{
|
||||
printStr = remainingStr;
|
||||
remainingStr = "";
|
||||
}
|
||||
|
||||
instructionsText.append( printStr + "\n" );
|
||||
|
||||
}// while
|
||||
|
||||
}// for
|
||||
|
||||
}//printInstructions()
|
||||
|
||||
//DO NOT call this directly, go through Sysout
|
||||
public void displayMessage( String messageIn )
|
||||
{
|
||||
messageText.append( messageIn + "\n" );
|
||||
System.out.println(messageIn);
|
||||
}
|
||||
|
||||
}// TestDialog class
|
@ -0,0 +1,20 @@
|
||||
<html>
|
||||
<!--
|
||||
@test
|
||||
@bug 4118621
|
||||
@summary tests that selected text isn't scrolled if there is enough room.
|
||||
@author prs: area=TextField
|
||||
@run applet/manual=yesno ScrollSelectionTest.html
|
||||
-->
|
||||
<head>
|
||||
<title> ScrollSelectionTest </title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>ScrollSelectionTest<br>4118621: </h1>
|
||||
|
||||
<p> See the dialog box (usually in upper left corner) for instructions</p>
|
||||
|
||||
<APPLET CODE="ScrollSelectionTest.class" WIDTH=300 HEIGHT=300></APPLET>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,213 @@
|
||||
/*
|
||||
* Copyright 1999-2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
test
|
||||
@bug 4118621
|
||||
@summary tests that selected text isn't scrolled when there is enough room.
|
||||
@author prs: area=TextField
|
||||
@run applet/manual=yesno ScrollSelectionTest.html
|
||||
*/
|
||||
|
||||
/**
|
||||
* ScrollSelectionTest.java
|
||||
*
|
||||
* summary: tests that selected text isn't scrolled when there is enough room.
|
||||
*/
|
||||
|
||||
import java.applet.Applet;
|
||||
import java.awt.Dialog;
|
||||
import java.awt.Frame;
|
||||
import java.awt.TextField;
|
||||
import java.awt.TextArea;
|
||||
|
||||
public class ScrollSelectionTest extends Applet
|
||||
{
|
||||
|
||||
Frame frame = new Frame("ScrollSelectionTest frame");
|
||||
TextField tf = new TextField(40);
|
||||
|
||||
public void init()
|
||||
{
|
||||
tf.setText("abcdefghijklmnopqrstuvwxyz");
|
||||
frame.add(tf);
|
||||
tf.select(0, 20);
|
||||
|
||||
String[] instructions =
|
||||
{
|
||||
"INSTRUCTIONS:",
|
||||
"This is a test for a win32 specific problem",
|
||||
"If you see all the letters from 'a' to 'z' and",
|
||||
"letters from 'a' to 't' are selected then test passes"
|
||||
};
|
||||
Sysout.createDialogWithInstructions( instructions );
|
||||
|
||||
}// init()
|
||||
|
||||
public void start ()
|
||||
{
|
||||
setSize (300,300);
|
||||
setVisible(true);
|
||||
|
||||
frame.setVisible(true);
|
||||
frame.setBounds (400, 0, 300, 300);
|
||||
|
||||
}// start()
|
||||
|
||||
}// class ScrollSelectionTest
|
||||
|
||||
/****************************************************
|
||||
Standard Test Machinery
|
||||
DO NOT modify anything below -- it's a standard
|
||||
chunk of code whose purpose is to make user
|
||||
interaction uniform, and thereby make it simpler
|
||||
to read and understand someone else's test.
|
||||
****************************************************/
|
||||
|
||||
/**
|
||||
This is part of the standard test machinery.
|
||||
It creates a dialog (with the instructions), and is the interface
|
||||
for sending text messages to the user.
|
||||
To print the instructions, send an array of strings to Sysout.createDialog
|
||||
WithInstructions method. Put one line of instructions per array entry.
|
||||
To display a message for the tester to see, simply call Sysout.println
|
||||
with the string to be displayed.
|
||||
This mimics System.out.println but works within the test harness as well
|
||||
as standalone.
|
||||
*/
|
||||
|
||||
class Sysout
|
||||
{
|
||||
private static TestDialog dialog;
|
||||
|
||||
public static void createDialogWithInstructions( String[] instructions )
|
||||
{
|
||||
dialog = new TestDialog( new Frame(), "Instructions" );
|
||||
dialog.printInstructions( instructions );
|
||||
dialog.show();
|
||||
println( "Any messages for the tester will display here." );
|
||||
}
|
||||
|
||||
public static void createDialog( )
|
||||
{
|
||||
dialog = new TestDialog( new Frame(), "Instructions" );
|
||||
String[] defInstr = { "Instructions will appear here. ", "" } ;
|
||||
dialog.printInstructions( defInstr );
|
||||
dialog.show();
|
||||
println( "Any messages for the tester will display here." );
|
||||
}
|
||||
|
||||
|
||||
public static void printInstructions( String[] instructions )
|
||||
{
|
||||
dialog.printInstructions( instructions );
|
||||
}
|
||||
|
||||
|
||||
public static void println( String messageIn )
|
||||
{
|
||||
dialog.displayMessage( messageIn );
|
||||
}
|
||||
|
||||
}// Sysout class
|
||||
|
||||
/**
|
||||
This is part of the standard test machinery. It provides a place for the
|
||||
test instructions to be displayed, and a place for interactive messages
|
||||
to the user to be displayed.
|
||||
To have the test instructions displayed, see Sysout.
|
||||
To have a message to the user be displayed, see Sysout.
|
||||
Do not call anything in this dialog directly.
|
||||
*/
|
||||
class TestDialog extends Dialog
|
||||
{
|
||||
|
||||
TextArea instructionsText;
|
||||
TextArea messageText;
|
||||
int maxStringLength = 80;
|
||||
|
||||
//DO NOT call this directly, go through Sysout
|
||||
public TestDialog( Frame frame, String name )
|
||||
{
|
||||
super( frame, name );
|
||||
int scrollBoth = TextArea.SCROLLBARS_BOTH;
|
||||
instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
|
||||
add( "North", instructionsText );
|
||||
|
||||
messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
|
||||
add("South", messageText);
|
||||
|
||||
pack();
|
||||
|
||||
show();
|
||||
}// TestDialog()
|
||||
|
||||
//DO NOT call this directly, go through Sysout
|
||||
public void printInstructions( String[] instructions )
|
||||
{
|
||||
//Clear out any current instructions
|
||||
instructionsText.setText( "" );
|
||||
|
||||
//Go down array of instruction strings
|
||||
|
||||
String printStr, remainingStr;
|
||||
for( int i=0; i < instructions.length; i++ )
|
||||
{
|
||||
//chop up each into pieces maxSringLength long
|
||||
remainingStr = instructions[ i ];
|
||||
while( remainingStr.length() > 0 )
|
||||
{
|
||||
//if longer than max then chop off first max chars to print
|
||||
if( remainingStr.length() >= maxStringLength )
|
||||
{
|
||||
//Try to chop on a word boundary
|
||||
int posOfSpace = remainingStr.
|
||||
lastIndexOf( ' ', maxStringLength - 1 );
|
||||
|
||||
if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
|
||||
|
||||
printStr = remainingStr.substring( 0, posOfSpace + 1 );
|
||||
remainingStr = remainingStr.substring( posOfSpace + 1 );
|
||||
}
|
||||
//else just print
|
||||
else
|
||||
{
|
||||
printStr = remainingStr;
|
||||
remainingStr = "";
|
||||
}
|
||||
|
||||
instructionsText.append( printStr + "\n" );
|
||||
|
||||
}// while
|
||||
|
||||
}// for
|
||||
|
||||
}//printInstructions()
|
||||
|
||||
//DO NOT call this directly, go through Sysout
|
||||
public void displayMessage( String messageIn )
|
||||
{
|
||||
messageText.append( messageIn + "\n" );
|
||||
}
|
||||
|
||||
}// TestDialog class
|
126
jdk/test/java/awt/xembed/server/JavaClient.java
Normal file
126
jdk/test/java/awt/xembed/server/JavaClient.java
Normal file
@ -0,0 +1,126 @@
|
||||
/*
|
||||
* Copyright 2004-2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
import java.awt.*;
|
||||
import sun.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.lang.reflect.*;
|
||||
import java.awt.dnd.*;
|
||||
import java.awt.datatransfer.*;
|
||||
|
||||
public class JavaClient {
|
||||
ClientContainer cont;
|
||||
public static void main(String[] args) {
|
||||
if (System.getProperty("os.name").toLowerCase().startsWith("win")) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Enable testing extensions in XEmbed server
|
||||
System.setProperty("sun.awt.xembed.testing", "true");
|
||||
|
||||
boolean xtoolkit = "sun.awt.X11.XToolkit".equals(Toolkit.getDefaultToolkit().getClass().getName());
|
||||
final EmbeddedFrame ef = createEmbeddedFrame(xtoolkit, Long.parseLong(args[0]));
|
||||
ef.setBackground(new Color(100, 100, 200));
|
||||
ef.setLayout(new BorderLayout());
|
||||
ef.add(new ClientContainer(ef), BorderLayout.CENTER);
|
||||
ef.pack();
|
||||
ef.registerListeners();
|
||||
ef.setVisible(true);
|
||||
}
|
||||
private static EmbeddedFrame createEmbeddedFrame(boolean xtoolkit, long window) {
|
||||
try {
|
||||
Class cl = (xtoolkit?Class.forName("sun.awt.X11.XEmbeddedFrame"):Class.forName("sun.awt.motif.MEmbeddedFrame"));
|
||||
Constructor cons = cl.getConstructor(new Class[]{Long.TYPE, Boolean.TYPE});
|
||||
return (EmbeddedFrame)cons.newInstance(new Object[] {window, true});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException("Can't create embedded frame");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ClientContainer extends Container {
|
||||
Window parent;
|
||||
int width, height;
|
||||
public ClientContainer(Window w) {
|
||||
parent = w;
|
||||
width = 500;
|
||||
height = 50;
|
||||
final TextField tf = new TextField(30);
|
||||
|
||||
DragSource ds = new DragSource();
|
||||
final DragSourceListener dsl = new DragSourceAdapter() {
|
||||
public void dragDropEnd(DragSourceDropEvent dsde) {
|
||||
}
|
||||
};
|
||||
final DragGestureListener dgl = new DragGestureListener() {
|
||||
public void dragGestureRecognized(DragGestureEvent dge) {
|
||||
dge.startDrag(null, new StringSelection(tf.getText()), dsl);
|
||||
}
|
||||
};
|
||||
ds.createDefaultDragGestureRecognizer(tf, DnDConstants.ACTION_COPY, dgl);
|
||||
|
||||
final DropTargetListener dtl = new DropTargetAdapter() {
|
||||
public void drop(DropTargetDropEvent dtde) {
|
||||
dtde.acceptDrop(DnDConstants.ACTION_COPY);
|
||||
try {
|
||||
tf.setText(tf.getText() + (String)dtde.getTransferable().getTransferData(DataFlavor.stringFlavor));
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
};
|
||||
final DropTarget dt = new DropTarget(tf, dtl);
|
||||
|
||||
setLayout(new FlowLayout());
|
||||
add(tf);
|
||||
Button close = new Button("Close");
|
||||
close.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
parent.dispose();
|
||||
}
|
||||
});
|
||||
Button inc = new Button("Increase size");
|
||||
inc.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
changeSize(10);
|
||||
}
|
||||
});
|
||||
Button dec = new Button("Decrease size");
|
||||
dec.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
changeSize(-10);
|
||||
}
|
||||
});
|
||||
add(close);
|
||||
add(inc);
|
||||
add(dec);
|
||||
}
|
||||
void changeSize(int step) {
|
||||
width += step;
|
||||
height += step;
|
||||
parent.pack();
|
||||
}
|
||||
public Dimension getPreferredSize() {
|
||||
return new Dimension(width, height);
|
||||
}
|
||||
}
|
176
jdk/test/java/awt/xembed/server/RunTestXEmbed.java
Normal file
176
jdk/test/java/awt/xembed/server/RunTestXEmbed.java
Normal file
@ -0,0 +1,176 @@
|
||||
/*
|
||||
* Copyright 2004-2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 4931668
|
||||
* @summary Tests XEmbed server/client functionality
|
||||
* @author Denis Mikhalkin: area=awt.xembed
|
||||
* @compile JavaClient.java TesterClient.java TestXEmbedServer.java
|
||||
* @run main/timeout=6000 RunTestXEmbed
|
||||
*/
|
||||
|
||||
import java.awt.Rectangle;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.logging.*;
|
||||
import java.util.*;
|
||||
import java.io.*;
|
||||
|
||||
public class RunTestXEmbed extends TestXEmbedServer {
|
||||
private static final Logger log = Logger.getLogger("test.xembed");
|
||||
private Method test;
|
||||
private boolean passed = false;
|
||||
public RunTestXEmbed(Method test) {
|
||||
super(false);
|
||||
this.test = test;
|
||||
}
|
||||
|
||||
public Process startClient(Rectangle bounds[], long window) {
|
||||
try {
|
||||
String java_home = System.getProperty("java.home");
|
||||
StringBuilder buf = new StringBuilder();
|
||||
for (int i = 0; i < bounds.length; i++) {
|
||||
buf.append(" " + bounds[i].x);
|
||||
buf.append(" " + bounds[i].y);
|
||||
buf.append(" " + bounds[i].width);
|
||||
buf.append(" " + bounds[i].height);
|
||||
}
|
||||
Map envs = System.getenv();
|
||||
String enva[] = new String[envs.size()];
|
||||
int ind = 0;
|
||||
Iterator iter = envs.entrySet().iterator();
|
||||
while (iter.hasNext()) {
|
||||
Map.Entry entry = (Map.Entry)iter.next();
|
||||
if (!"AWT_TOOLKIT".equals(entry.getKey())) {
|
||||
enva[ind++] = entry.getKey() + "=" + entry.getValue();
|
||||
} else {
|
||||
enva[ind++] = "AWT_TOOLKIT=sun.awt.X11.XToolkit";
|
||||
}
|
||||
}
|
||||
Process proc = Runtime.getRuntime().exec(java_home +
|
||||
"/bin/java -Dawt.toolkit=sun.awt.X11.XToolkit TesterClient "
|
||||
+ test.getName() + " " + window + buf,
|
||||
enva);
|
||||
System.err.println("Test for " + test.getName() + " has started.");
|
||||
log.fine("Test for " + test.getName() + " has started.");
|
||||
new InputReader(proc.getInputStream());
|
||||
new InputReader(proc.getErrorStream());
|
||||
try {
|
||||
passed = (proc.waitFor() == 0);
|
||||
} catch (InterruptedException ie) {
|
||||
}
|
||||
log.fine("Test for " + test.getName() + " has finished.");
|
||||
File logFile = new File("java3.txt");
|
||||
if (logFile.exists()) {
|
||||
logFile.renameTo(new File(test.getName() + ".txt"));
|
||||
}
|
||||
return proc;
|
||||
} catch (IOException ex1) {
|
||||
ex1.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Throwable {
|
||||
if (System.getProperty("os.name").toLowerCase().startsWith("win")) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Enabled XEmbed
|
||||
System.setProperty("sun.awt.xembedserver", "true");
|
||||
|
||||
if (args.length == 1) {
|
||||
Class cl = Class.forName("sun.awt.X11.XEmbedServerTester");
|
||||
Method meth = cl.getMethod(args[0], new Class[0]);
|
||||
System.err.println("Performing single test " + args[0]);
|
||||
boolean res = performTest(meth);
|
||||
if (!res) {
|
||||
System.err.println("Test " + args[0] + " has failed");
|
||||
} else {
|
||||
System.err.println("Test " + args[0] + " has passed");
|
||||
}
|
||||
} else {
|
||||
Class cl = Class.forName("sun.awt.X11.XEmbedServerTester");
|
||||
Method[] meths = cl.getMethods();
|
||||
LinkedList failed = new LinkedList();
|
||||
for (int i = 0; i < meths.length; i++) {
|
||||
Method meth = meths[i];
|
||||
if (meth.getReturnType() == Void.TYPE && meth.getName().startsWith("test") && meth.getParameterTypes().length == 0) {
|
||||
System.err.println("Performing " + meth.getName());
|
||||
boolean res = performTest(meth);
|
||||
if (!res) {
|
||||
failed.add(meth);
|
||||
}
|
||||
}
|
||||
}
|
||||
log.info("Testing finished.");
|
||||
if (failed.size() != 0) {
|
||||
System.err.println("Some tests have failed:");
|
||||
Iterator iter = failed.iterator();
|
||||
while(iter.hasNext()) {
|
||||
Method meth = (Method)iter.next();
|
||||
System.err.println(meth.getName());
|
||||
}
|
||||
throw new RuntimeException("TestFAILED: some of the testcases are failed");
|
||||
} else {
|
||||
System.err.println("All PASSED");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean performTest(Method meth) {
|
||||
RunTestXEmbed test = new RunTestXEmbed(meth);
|
||||
test.addClient();
|
||||
test.dispose();
|
||||
return test.isPassed();
|
||||
}
|
||||
|
||||
public boolean isPassed() {
|
||||
return passed;
|
||||
}
|
||||
}
|
||||
|
||||
class InputReader extends Thread {
|
||||
private InputStream stream;
|
||||
public InputReader(InputStream stream) {
|
||||
this.stream = stream;
|
||||
start();
|
||||
}
|
||||
public void run() {
|
||||
while (!interrupted()) {
|
||||
try {
|
||||
int inp = stream.read();
|
||||
if (inp != -1) {
|
||||
System.out.write(inp);
|
||||
} else {
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
} catch (Exception iie) {
|
||||
}
|
||||
}
|
||||
} catch (IOException ie) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
228
jdk/test/java/awt/xembed/server/TestXEmbedServer.java
Normal file
228
jdk/test/java/awt/xembed/server/TestXEmbedServer.java
Normal file
@ -0,0 +1,228 @@
|
||||
/*
|
||||
* Copyright 2004-2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import javax.swing.*;
|
||||
import java.io.*;
|
||||
import java.util.logging.*;
|
||||
import sun.awt.WindowIDProvider;
|
||||
import java.awt.dnd.*;
|
||||
import java.awt.datatransfer.*;
|
||||
|
||||
public abstract class TestXEmbedServer {
|
||||
private static final Logger log = Logger.getLogger("test.xembed");
|
||||
Frame f;
|
||||
Canvas client;
|
||||
Button toFocus;
|
||||
Button b_modal;
|
||||
JButton b_close;
|
||||
JDialog modal_d;
|
||||
JFrame dummy;
|
||||
Container clientCont;
|
||||
boolean passed;
|
||||
|
||||
public boolean isPassed() {
|
||||
return passed;
|
||||
}
|
||||
|
||||
public TestXEmbedServer(boolean manual) {
|
||||
|
||||
// Enable testing extensions in XEmbed server
|
||||
System.setProperty("sun.awt.xembed.testing", "true");
|
||||
|
||||
f = new Frame("Main frame");
|
||||
f.addWindowListener(new WindowAdapter() {
|
||||
public void windowClosing(WindowEvent e) {
|
||||
synchronized(TestXEmbedServer.this) {
|
||||
TestXEmbedServer.this.notifyAll();
|
||||
}
|
||||
dummy.dispose();
|
||||
f.dispose();
|
||||
}
|
||||
});
|
||||
|
||||
f.setLayout(new BorderLayout());
|
||||
|
||||
Container bcont = new Container();
|
||||
|
||||
toFocus = new Button("Click to focus server");
|
||||
final TextField tf = new TextField(20);
|
||||
tf.setName("0");
|
||||
DragSource ds = new DragSource();
|
||||
final DragSourceListener dsl = new DragSourceAdapter() {
|
||||
public void dragDropEnd(DragSourceDropEvent dsde) {
|
||||
}
|
||||
};
|
||||
final DragGestureListener dgl = new DragGestureListener() {
|
||||
public void dragGestureRecognized(DragGestureEvent dge) {
|
||||
dge.startDrag(null, new StringSelection(tf.getText()), dsl);
|
||||
}
|
||||
};
|
||||
ds.createDefaultDragGestureRecognizer(tf, DnDConstants.ACTION_COPY, dgl);
|
||||
|
||||
final DropTargetListener dtl = new DropTargetAdapter() {
|
||||
public void drop(DropTargetDropEvent dtde) {
|
||||
dtde.acceptDrop(DnDConstants.ACTION_COPY);
|
||||
try {
|
||||
tf.setText(tf.getText() + (String)dtde.getTransferable().getTransferData(DataFlavor.stringFlavor));
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
};
|
||||
final DropTarget dt = new DropTarget(tf, dtl);
|
||||
|
||||
Button b_add = new Button("Add client");
|
||||
b_add.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
addClient();
|
||||
}
|
||||
});
|
||||
Button b_remove = new Button("Remove client");
|
||||
b_remove.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (clientCont.getComponentCount() != 0) {
|
||||
clientCont.remove(clientCont.getComponentCount()-1);
|
||||
}
|
||||
}
|
||||
});
|
||||
b_close = new JButton("Close modal dialog");
|
||||
b_close.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
modal_d.dispose();
|
||||
}
|
||||
});
|
||||
b_modal = new Button("Show modal dialog");
|
||||
b_modal.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
modal_d = new JDialog(f, "Modal dialog", true);
|
||||
modal_d.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
|
||||
modal_d.setBounds(0, 100, 200, 50);
|
||||
modal_d.getContentPane().add(b_close);
|
||||
modal_d.validate();
|
||||
modal_d.show();
|
||||
}
|
||||
});
|
||||
|
||||
bcont.add(tf);
|
||||
bcont.add(toFocus);
|
||||
bcont.add(b_add);
|
||||
bcont.add(b_remove);
|
||||
bcont.add(b_modal);
|
||||
if (manual) {
|
||||
Button pass = new Button("Pass");
|
||||
pass.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
passed = true;
|
||||
synchronized(TestXEmbedServer.this) {
|
||||
TestXEmbedServer.this.notifyAll();
|
||||
}
|
||||
}
|
||||
});
|
||||
bcont.add(pass);
|
||||
Button fail = new Button("Fail");
|
||||
fail.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
passed = false;
|
||||
synchronized(TestXEmbedServer.this) {
|
||||
TestXEmbedServer.this.notifyAll();
|
||||
}
|
||||
}
|
||||
});
|
||||
bcont.add(fail);
|
||||
}
|
||||
b_modal.setName("2");
|
||||
bcont.setLayout(new FlowLayout());
|
||||
f.add(bcont, BorderLayout.NORTH);
|
||||
|
||||
clientCont = Box.createVerticalBox();
|
||||
f.add(clientCont, BorderLayout.CENTER);
|
||||
|
||||
dummy = new JFrame("Dummy");
|
||||
dummy.getContentPane().add(new JButton("Button"));
|
||||
dummy.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
|
||||
dummy.setBounds(0, 0, 100, 100);
|
||||
dummy.setVisible(true);
|
||||
|
||||
f.setBounds(300, 0, 800, 300);
|
||||
f.setVisible(true);
|
||||
}
|
||||
|
||||
public abstract Process startClient(Rectangle bounds[], long window);
|
||||
|
||||
public void addClient() {
|
||||
client = new Canvas() {
|
||||
public void paint(Graphics g) {
|
||||
super.paint(g);
|
||||
}
|
||||
};
|
||||
client.setBackground(new Color(30, 220, 40));
|
||||
clientCont.add(client);
|
||||
clientCont.validate();
|
||||
WindowIDProvider pid = (WindowIDProvider)client.getPeer();
|
||||
log.fine("Added XEmbed server(Canvas) with X window ID " + pid.getWindow());
|
||||
Rectangle toFocusBounds = toFocus.getBounds();
|
||||
toFocusBounds.setLocation(toFocus.getLocationOnScreen());
|
||||
f.validate();
|
||||
|
||||
// KDE doesn't accept clicks on title as activation - click below title
|
||||
Rectangle fbounds = f.getBounds();
|
||||
fbounds.y += f.getInsets().top;
|
||||
fbounds.height -= f.getInsets().top;
|
||||
|
||||
Process proc = startClient(new Rectangle[] {fbounds, dummy.getBounds(), toFocusBounds,
|
||||
new Rectangle(b_modal.getLocationOnScreen(), b_modal.getSize()),
|
||||
new Rectangle(10, 130, 20, 20)}, pid.getWindow());
|
||||
new ClientWatcher(client, proc, clientCont).start();
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
f.dispose();
|
||||
f = null;
|
||||
dummy.dispose();
|
||||
dummy = null;
|
||||
if (modal_d != null) {
|
||||
modal_d.dispose();
|
||||
modal_d = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ClientWatcher extends Thread {
|
||||
private Process clientProcess;
|
||||
private Canvas client;
|
||||
private Container parent;
|
||||
public ClientWatcher(Canvas client, Process proc, Container parent) {
|
||||
this.client = client;
|
||||
this.clientProcess = proc;
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
try {
|
||||
clientProcess.waitFor();
|
||||
} catch (InterruptedException ie) {
|
||||
}
|
||||
parent.remove(client);
|
||||
}
|
||||
}
|
86
jdk/test/java/awt/xembed/server/TestXEmbedServerJava.java
Normal file
86
jdk/test/java/awt/xembed/server/TestXEmbedServerJava.java
Normal file
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Copyright 2004-2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 4931668
|
||||
* @summary Tests XEmbed server/client functionality
|
||||
* @author denis mikhalkin: area=awt.xembed
|
||||
* @compile JavaClient.java TesterClient.java TestXEmbedServer.java
|
||||
* @run main/manual TestXEmbedServerJava
|
||||
*/
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import javax.swing.*;
|
||||
import java.io.*;
|
||||
|
||||
public class TestXEmbedServerJava extends TestXEmbedServer {
|
||||
public static void main(String[] args) {
|
||||
if (System.getProperty("os.name").toLowerCase().startsWith("win")) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Enabled XEmbed
|
||||
System.setProperty("sun.awt.xembedserver", "true");
|
||||
|
||||
String instruction =
|
||||
"This is a manual test for XEmbed server functionality. \n" +
|
||||
"You may start XEmbed client by pressing 'Add client' button.\n" +
|
||||
"Check that focus transfer with mouse works, that focus traversal with Tab/Shift-Tab works.\n" +
|
||||
"Check that XEmbed server client's growing and shrinking.\n" +
|
||||
"Check that Drag&Drop works in all combinations.\n" +
|
||||
"Check the keyboard input works in both text fields.\n";
|
||||
Frame f = new Frame("Instructions");
|
||||
f.setLayout(new BorderLayout());
|
||||
f.add(new TextArea(instruction), BorderLayout.CENTER);
|
||||
f.pack();
|
||||
f.setLocation(0, 400);
|
||||
f.setVisible(true);
|
||||
|
||||
TestXEmbedServerJava lock = new TestXEmbedServerJava();
|
||||
try {
|
||||
synchronized(lock) {
|
||||
lock.wait();
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
if (!lock.isPassed()) {
|
||||
throw new RuntimeException("Test failed");
|
||||
}
|
||||
}
|
||||
|
||||
public TestXEmbedServerJava() {
|
||||
super(true);
|
||||
}
|
||||
|
||||
public Process startClient(Rectangle[] bounds, long window) {
|
||||
try {
|
||||
String java_home = System.getProperty("java.home");
|
||||
return Runtime.getRuntime().exec(java_home + "/bin/java JavaClient " + window);
|
||||
} catch (IOException ex1) {
|
||||
ex1.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
59
jdk/test/java/awt/xembed/server/TesterClient.java
Normal file
59
jdk/test/java/awt/xembed/server/TesterClient.java
Normal file
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright 2004-2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
import java.lang.reflect.*;
|
||||
import java.awt.Rectangle;
|
||||
import java.util.logging.*;
|
||||
|
||||
public class TesterClient {
|
||||
private static final Logger log = Logger.getLogger("test.xembed.TesterClient");
|
||||
private static Method test;
|
||||
private static boolean passed = false;
|
||||
public static void main(String[] args) throws Throwable {
|
||||
// First parameter is the name of the test, second is the window, the rest are rectangles
|
||||
Class cl = Class.forName("sun.awt.X11.XEmbedServerTester");
|
||||
test = cl.getMethod(args[0], new Class[0]);
|
||||
long window = Long.parseLong(args[1]);
|
||||
Rectangle r[] = new Rectangle[(args.length-2)/4];
|
||||
for (int i = 0; i < r.length; i++) {
|
||||
r[i] = new Rectangle(Integer.parseInt(args[2+i*4]), Integer.parseInt(args[2+i*4+1]),
|
||||
Integer.parseInt(args[2+i*4+2]), Integer.parseInt(args[2+i*4+3]));
|
||||
}
|
||||
startClient(r, window);
|
||||
}
|
||||
|
||||
public static void startClient(Rectangle bounds[], long window) throws Throwable {
|
||||
Method m_getTester = Class.forName("sun.awt.X11.XEmbedServerTester").
|
||||
getMethod("getTester", new Class[] {bounds.getClass(), Long.TYPE});
|
||||
final Object tester = m_getTester.invoke(null, new Object[] {bounds, window});
|
||||
try {
|
||||
log.info("Starting test " + test.getName());
|
||||
test.invoke(tester, (Object[])null);
|
||||
log.info("Test " + test.getName() + " PASSED.");
|
||||
passed = true;
|
||||
} catch (Exception e) {
|
||||
log.log(Level.WARNING, "Test " + test.getName() + " FAILED.", e);
|
||||
}
|
||||
System.exit(passed?0:1);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user