aboutsummaryrefslogtreecommitdiffstats
path: root/tests/reproducers
diff options
context:
space:
mode:
authorJiri Vanek <[email protected]>2012-10-26 12:15:18 +0200
committerJiri Vanek <[email protected]>2012-10-26 12:15:18 +0200
commit76600a9e226f83e1fe100ee41edaa65ff1ed41ab (patch)
tree2b3d5572f5bff91382f09a2395731ce9ef62e163 /tests/reproducers
parentc04ca02fec844a29e2d3983f7cce24ba07935964 (diff)
Added clipboard reproducers (PR708)
Diffstat (limited to 'tests/reproducers')
-rw-r--r--tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedCopy1.jnlp58
-rw-r--r--tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedCopy2.jnlp58
-rw-r--r--tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedPaste1.jnlp57
-rw-r--r--tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedPaste2.jnlp57
-rw-r--r--tests/reproducers/signed/ClipboardContentSigned/srcs/ClipboardContentSigned.java183
-rw-r--r--tests/reproducers/signed/ClipboardContentSigned/testcases/ClipboardContentSignedTests.java126
-rw-r--r--tests/reproducers/simple/ClipboardContent/resources/ClipboardContentCopy1.jnlp58
-rw-r--r--tests/reproducers/simple/ClipboardContent/resources/ClipboardContentCopy2.jnlp58
-rw-r--r--tests/reproducers/simple/ClipboardContent/resources/ClipboardContentPaste1.jnlp57
-rw-r--r--tests/reproducers/simple/ClipboardContent/resources/ClipboardContentPaste2.jnlp57
-rw-r--r--tests/reproducers/simple/ClipboardContent/srcs/ClipboardContent.java183
-rw-r--r--tests/reproducers/simple/ClipboardContent/testcases/ClipboardContentTests.java136
12 files changed, 1088 insertions, 0 deletions
diff --git a/tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedCopy1.jnlp b/tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedCopy1.jnlp
new file mode 100644
index 0000000..b03a193
--- /dev/null
+++ b/tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedCopy1.jnlp
@@ -0,0 +1,58 @@
+<!--
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+
+ -->
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp spec="1.0" href="ClipboardContentSignedCopy1.jnlp" codebase=".">
+ <information>
+ <title>ClipboardContentSignedCopy1</title>
+ <vendor>IcedTea</vendor>
+ <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/>
+ <description>ClipboardContentSignedCopy1</description>
+ <offline/>
+ </information>
+ <resources>
+ <j2se version="1.4+"/>
+ <jar href="ClipboardContentSigned.jar"/>
+ </resources>
+ <application-desc main-class="ClipboardContentSigned">
+ <argument>copy1</argument>
+ <argument>10</argument>
+ </application-desc>
+ <security>
+ <all-permissions/>
+ </security>
+</jnlp>
diff --git a/tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedCopy2.jnlp b/tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedCopy2.jnlp
new file mode 100644
index 0000000..6265d75
--- /dev/null
+++ b/tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedCopy2.jnlp
@@ -0,0 +1,58 @@
+<!--
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+
+ -->
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp spec="1.0" href="ClipboardContentSignedCopy2.jnlp" codebase=".">
+ <information>
+ <title>ClipboardContentSignedCopy2</title>
+ <vendor>IcedTea</vendor>
+ <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/>
+ <description>ClipboardContentSignedCopy2</description>
+ <offline/>
+ </information>
+ <resources>
+ <j2se version="1.4+"/>
+ <jar href="ClipboardContentSigned.jar"/>
+ </resources>
+ <application-desc main-class="ClipboardContentSigned">
+ <argument>copy2</argument>
+ <argument>10</argument>
+ </application-desc>
+ <security>
+ <all-permissions/>
+ </security>
+</jnlp>
diff --git a/tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedPaste1.jnlp b/tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedPaste1.jnlp
new file mode 100644
index 0000000..12e0b24
--- /dev/null
+++ b/tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedPaste1.jnlp
@@ -0,0 +1,57 @@
+<!--
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+
+ -->
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp spec="1.0" href="ClipboardContentSignedPaste1.jnlp" codebase=".">
+ <information>
+ <title>ClipboardContentSignedPaste1</title>
+ <vendor>IcedTea</vendor>
+ <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/>
+ <description>ClipboardContentSignedPaste1</description>
+ <offline/>
+ </information>
+ <resources>
+ <j2se version="1.4+"/>
+ <jar href="ClipboardContentSigned.jar"/>
+ </resources>
+ <application-desc main-class="ClipboardContentSigned">
+ <argument>paste1</argument>
+ </application-desc>
+ <security>
+ <all-permissions/>
+ </security>
+</jnlp>
diff --git a/tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedPaste2.jnlp b/tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedPaste2.jnlp
new file mode 100644
index 0000000..ad17a04
--- /dev/null
+++ b/tests/reproducers/signed/ClipboardContentSigned/resources/ClipboardContentSignedPaste2.jnlp
@@ -0,0 +1,57 @@
+<!--
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+
+ -->
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp spec="1.0" href="ClipboardContentSignedPaste2.jnlp" codebase=".">
+ <information>
+ <title>ClipboardContentSignedPaste2</title>
+ <vendor>IcedTea</vendor>
+ <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/>
+ <description>ClipboardContentSignedPaste2</description>
+ <offline/>
+ </information>
+ <resources>
+ <j2se version="1.4+"/>
+ <jar href="ClipboardContentSigned.jar"/>
+ </resources>
+ <application-desc main-class="ClipboardContentSigned">
+ <argument>paste2</argument>
+ </application-desc>
+ <security>
+ <all-permissions/>
+ </security>
+</jnlp>
diff --git a/tests/reproducers/signed/ClipboardContentSigned/srcs/ClipboardContentSigned.java b/tests/reproducers/signed/ClipboardContentSigned/srcs/ClipboardContentSigned.java
new file mode 100644
index 0000000..0b86bbe
--- /dev/null
+++ b/tests/reproducers/signed/ClipboardContentSigned/srcs/ClipboardContentSigned.java
@@ -0,0 +1,183 @@
+/* ClipboardContentSigned.java
+Copyright (C) 2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.concurrent.TimeUnit;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+import javax.swing.text.JTextComponent;
+
+public class ClipboardContentSigned extends JPanel {
+
+ private static final String contentC = "COPY#$REPRODUCER";
+ private static final String contentP = "PASTE#$REPRODUCER";
+
+ private static class LocalFrame extends JFrame {
+
+ JTextField t;
+
+ public LocalFrame(String str) {
+ super();
+ t = new JTextField(str);
+ this.add(t);
+ this.setSize(100, 100);
+ this.pack();
+ t.selectAll();
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ }
+
+ public void run() throws InterruptedException {
+ SwingUtilities.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+ setVisible(true);
+
+ }
+ });
+ while (!this.isVisible()) {
+ Thread.sleep(100);
+ }
+ }
+
+ public JTextField getT() {
+ return t;
+ }
+ }
+
+ public void putToClipboard1(String str) {
+ Toolkit toolkit = Toolkit.getDefaultToolkit();
+ Clipboard clipboard = toolkit.getSystemClipboard();
+ StringSelection strSel = new StringSelection(str);
+ clipboard.setContents(strSel, null);
+ printFlavors();
+ }
+
+ public void putToClipboard2(final String str) throws InterruptedException, NoSuchMethodException, IllegalAccessException, UnsupportedFlavorException, IllegalArgumentException, InvocationTargetException, IOException {
+ final LocalFrame lf = new LocalFrame(str);
+ lf.run();
+ ((JTextComponent) (lf.getT())).copy();
+ printFlavors();
+ lf.dispose();
+ }
+
+ public String pasteFromClipboard2() throws InterruptedException, NoSuchMethodException, IllegalAccessException, UnsupportedFlavorException, IllegalArgumentException, InvocationTargetException, IOException {
+ final LocalFrame lf = new LocalFrame("xxx");
+ lf.run();
+ ((JTextComponent) (lf.getT())).paste();
+ printFlavors();
+ String s = lf.getT().getText();
+ lf.dispose();
+ return s;
+ }
+
+ private void printFlavors() {
+//just for debugging
+// Toolkit toolkit = Toolkit.getDefaultToolkit();
+// Clipboard clipboard = toolkit.getSystemClipboard();
+// Transferable clipData = clipboard.getContents(clipboard);
+// DataFlavor[] cd = clipData.getTransferDataFlavors();
+// for (DataFlavor dataFlavor : cd) {
+// System.out.println(dataFlavor.getMimeType());
+// }
+ }
+
+ public String pasteFromClipboard1() throws UnsupportedFlavorException, IOException {
+ Toolkit toolkit = Toolkit.getDefaultToolkit();
+ Clipboard clipboard = toolkit.getSystemClipboard();
+ Transferable clipData = clipboard.getContents(clipboard);
+ printFlavors();
+ String s = (String) (clipData.getTransferData(
+ DataFlavor.stringFlavor));
+ return s;
+ }
+
+ public static void main(String[] args) throws Exception {
+ ClipboardContentSigned cl = new ClipboardContentSigned();
+ if (args.length == 0) {
+ throw new IllegalArgumentException("at least copy1|2 or paste1|2 must be as argument (+mandatory number giving use timeout in seconds before termination)");
+ } else if (args.length == 1) {
+ cl.proceed(args[0]);
+ } else {
+ cl.proceed(args[0], args[1]);
+ }
+
+ }
+
+ public void proceed(String arg) throws Exception {
+ proceed(arg, 0);
+ }
+
+ public void proceed(String arg, String keepAliveFor) throws Exception {
+ proceed(arg, Long.valueOf(keepAliveFor));
+ }
+
+ public void proceed(String arg, long timeOut) throws Exception {
+ if (arg.equals("copy1")) {
+ System.out.println(this.getClass().getName() + " copying1 to clipboard " + contentC);
+ putToClipboard1(contentC);
+ System.out.println(this.getClass().getName() + " copied1 to clipboard " + pasteFromClipboard1());
+ } else if (arg.equals("paste1")) {
+ System.out.println(this.getClass().getName() + " pasting1 from clipboard ");
+ String nwContent = pasteFromClipboard1();
+ System.out.println(this.getClass().getName() + " pasted1 from clipboard " + nwContent);
+ } else if (arg.equals("copy2")) {
+ System.out.println(this.getClass().getName() + " copying2 to clipboard " + contentC);
+ putToClipboard2(contentC);
+ System.out.println(this.getClass().getName() + " copied2 to clipboard " + pasteFromClipboard2());
+ } else if (arg.equals("paste2")) {
+ System.out.println(this.getClass().getName() + " pasting2 from clipboard ");
+ String nwContent = pasteFromClipboard2();
+ System.out.println(this.getClass().getName() + " pasted2 from clipboard " + nwContent);
+ } else {
+ throw new IllegalArgumentException("supported copy1|2 paste1|2");
+ }
+ long start = System.nanoTime();
+ while (TimeUnit.NANOSECONDS.toSeconds(System.nanoTime() - start) < timeOut) {
+ Thread.sleep(500);
+ }
+ }
+}
diff --git a/tests/reproducers/signed/ClipboardContentSigned/testcases/ClipboardContentSignedTests.java b/tests/reproducers/signed/ClipboardContentSigned/testcases/ClipboardContentSignedTests.java
new file mode 100644
index 0000000..13099c7
--- /dev/null
+++ b/tests/reproducers/signed/ClipboardContentSigned/testcases/ClipboardContentSignedTests.java
@@ -0,0 +1,126 @@
+/* ClipboardContentSignedTests.java
+ Copyright (C) 2012 Red Hat, Inc.
+
+ This file is part of IcedTea.
+
+ IcedTea is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, version 2.
+
+ IcedTea 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 for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with IcedTea; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ Linking this library statically or dynamically with other modules is
+ making a combined work based on this library. Thus, the terms and
+ conditions of the GNU General Public License cover the whole
+ combination.
+
+ As a special exception, the copyright holders of this library give you
+ permission to link this library with independent modules to produce an
+ executable, regardless of the license terms of these independent
+ modules, and to copy and distribute the resulting executable under
+ terms of your choice, provided that you also meet, for each linked
+ independent module, the terms and conditions of the license of that
+ module. An independent module is a module which is not derived from
+ or based on this library. If you modify this library, you may extend
+ this exception to your version of the library, but you are not
+ obligated to do so. If you do not wish to do so, delete this
+ exception statement from your version.
+ */
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import net.sourceforge.jnlp.ContentReaderListener;
+import net.sourceforge.jnlp.ProcessResult;
+import net.sourceforge.jnlp.ServerAccess;
+import net.sourceforge.jnlp.annotations.Bug;
+import net.sourceforge.jnlp.annotations.NeedsDisplay;
+import net.sourceforge.jnlp.tools.AsyncJavaws;
+import static net.sourceforge.jnlp.tools.ClipboardHelpers.pasteFromClipboard;
+import static net.sourceforge.jnlp.tools.ClipboardHelpers.putToClipboard;
+import net.sourceforge.jnlp.tools.WaitingForStringProcess;
+import org.junit.Assert;
+import org.junit.Test;
+
+@Bug(id = "PR708")
+public class ClipboardContentSignedTests {
+
+ private static final String XCEPTION = "xception";
+ private static final String contentC = "COPY#$REPRODUCER";
+ private static final String contentP = "PASTE#$REPRODUCER";
+ private static final String emptyContent = "empty content";
+ private static ServerAccess server = new ServerAccess();
+ private static final List<String> javawsTrustArg = Collections.unmodifiableList(Arrays.asList(new String[]{"-Xtrustall"}));
+
+ @Test
+ public void assertClipboardIsWorking() throws Exception {
+ putToClipboard(emptyContent);
+ Assert.assertEquals("Clipboard must contain new value, did not", emptyContent, pasteFromClipboard());
+ putToClipboard(contentC);
+ Assert.assertEquals("Clipboard must contain new value, did not", contentC, pasteFromClipboard());
+ }
+
+ @Test
+ @Bug(id = "PR708")
+ public void ClipboardContentSignedTestCopy1() throws Exception {
+ putToClipboard(emptyContent);
+ Assert.assertEquals("Clipboard must contain new value, did not", emptyContent, pasteFromClipboard());
+ WaitingForStringProcess wfsp = new WaitingForStringProcess(server, "/ClipboardContentSignedCopy1.jnlp", javawsTrustArg, true, "copied");
+ wfsp.run();
+ String ss = pasteFromClipboard();
+ Assert.assertEquals("Clipboard must contain new value, did not", contentC, ss);
+ //Assert.assertFalse("ClipboardContentSignedCopy stderr should not contain " + XCEPTION + " but did ", wfsp.getErr().contains(XCEPTION));
+ }
+
+ @Test
+ @Bug(id = "PR708")
+ @NeedsDisplay
+ public void ClipboardContentSignedTestCopy2() throws Exception {
+ putToClipboard(emptyContent);
+ Assert.assertEquals("Clipboard must contain new value, did not", emptyContent, pasteFromClipboard());
+ WaitingForStringProcess wfsp = new WaitingForStringProcess(server, "/ClipboardContentSignedCopy2.jnlp", javawsTrustArg, false, "copied");
+ wfsp.run();
+ String ss = pasteFromClipboard();
+ Assert.assertEquals("Clipboard must contain new value, did not", contentC, ss);
+ //Assert.assertFalse("ClipboardContentSignedCopy stderr should not contain " + XCEPTION + " but did ", wfsp.getErr().contains(XCEPTION));
+
+ }
+
+ @Test
+ @Bug(id = "PR708")
+ public void ClipboardContentSignedTestPaste1() throws Exception {
+ //necessery errasing
+ putToClipboard(emptyContent);
+ Assert.assertEquals("Clipboard must contain new value, did not", emptyContent, pasteFromClipboard());
+ //now put the tested data
+ putToClipboard(contentP);
+ Assert.assertEquals("Clipboard must contain new value, did not", contentP, pasteFromClipboard());
+ ProcessResult pr = server.executeJavawsHeadless(javawsTrustArg, "/ClipboardContentSignedPaste1.jnlp");
+ Assert.assertTrue("ClipboardContentSignedTestPaste stdout should contain " + contentP + " but didn't", pr.stdout.contains(contentP));
+ //Assert.assertFalse("ClipboardContentSignedTestPaste stderr should not contain " + XCEPTION + " but did ", pr.stderr.contains(XCEPTION));
+ }
+
+ @Test
+ @Bug(id = "PR708")
+ @NeedsDisplay
+ public void ClipboardContentSignedTestPaste2() throws Exception {
+ //necessery errasing
+ putToClipboard(emptyContent);
+ Assert.assertEquals("Clipboard must contain new value, did not", emptyContent, pasteFromClipboard());
+ //now put the tested data
+ putToClipboard(contentP);
+ Assert.assertEquals("Clipboard must contain new value, did not", contentP, pasteFromClipboard());
+ Assert.assertEquals("Clipboard must contain new value, did not", contentP, pasteFromClipboard());
+ ProcessResult pr = server.executeJavaws(javawsTrustArg, "/ClipboardContentSignedPaste2.jnlp");
+ Assert.assertTrue("ClipboardContentSignedTestPaste stdout should contain " + contentP + " but didn't", pr.stdout.contains(contentP));
+ //Assert.assertFalse("ClipboardContentSignedTestPaste stderr should not contain " + XCEPTION + " but did ", pr.stderr.contains(XCEPTION));
+ }
+}
diff --git a/tests/reproducers/simple/ClipboardContent/resources/ClipboardContentCopy1.jnlp b/tests/reproducers/simple/ClipboardContent/resources/ClipboardContentCopy1.jnlp
new file mode 100644
index 0000000..dcd740a
--- /dev/null
+++ b/tests/reproducers/simple/ClipboardContent/resources/ClipboardContentCopy1.jnlp
@@ -0,0 +1,58 @@
+<!--
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+
+ -->
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp spec="1.0" href="ClipboardContentCopy1.jnlp" codebase=".">
+ <information>
+ <title>ClipboardContentCopy1</title>
+ <vendor>IcedTea</vendor>
+ <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/>
+ <description>ClipboardContentCopy1</description>
+ <offline/>
+ </information>
+ <resources>
+ <j2se version="1.4+"/>
+ <jar href="ClipboardContent.jar"/>
+ </resources>
+ <application-desc main-class="ClipboardContent">
+ <argument>copy1</argument>
+ <argument>10</argument>
+ </application-desc>
+ <security>
+ <all-permissions/>
+ </security>
+</jnlp>
diff --git a/tests/reproducers/simple/ClipboardContent/resources/ClipboardContentCopy2.jnlp b/tests/reproducers/simple/ClipboardContent/resources/ClipboardContentCopy2.jnlp
new file mode 100644
index 0000000..af7cdcd
--- /dev/null
+++ b/tests/reproducers/simple/ClipboardContent/resources/ClipboardContentCopy2.jnlp
@@ -0,0 +1,58 @@
+<!--
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+
+ -->
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp spec="1.0" href="ClipboardContentCopy2.jnlp" codebase=".">
+ <information>
+ <title>ClipboardContentCopy2</title>
+ <vendor>IcedTea</vendor>
+ <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/>
+ <description>ClipboardContentCopy2</description>
+ <offline/>
+ </information>
+ <resources>
+ <j2se version="1.4+"/>
+ <jar href="ClipboardContent.jar"/>
+ </resources>
+ <application-desc main-class="ClipboardContent">
+ <argument>copy2</argument>
+ <argument>10</argument>
+ </application-desc>
+ <security>
+ <all-permissions/>
+ </security>
+</jnlp>
diff --git a/tests/reproducers/simple/ClipboardContent/resources/ClipboardContentPaste1.jnlp b/tests/reproducers/simple/ClipboardContent/resources/ClipboardContentPaste1.jnlp
new file mode 100644
index 0000000..65d5d25
--- /dev/null
+++ b/tests/reproducers/simple/ClipboardContent/resources/ClipboardContentPaste1.jnlp
@@ -0,0 +1,57 @@
+<!--
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+
+ -->
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp spec="1.0" href="ClipboardContentPaste1.jnlp" codebase=".">
+ <information>
+ <title>ClipboardContentPaste1</title>
+ <vendor>IcedTea</vendor>
+ <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/>
+ <description>ClipboardContentPaste1</description>
+ <offline/>
+ </information>
+ <resources>
+ <j2se version="1.4+"/>
+ <jar href="ClipboardContent.jar"/>
+ </resources>
+ <application-desc main-class="ClipboardContent">
+ <argument>paste1</argument>
+ </application-desc>
+ <security>
+ <all-permissions/>
+ </security>
+</jnlp>
diff --git a/tests/reproducers/simple/ClipboardContent/resources/ClipboardContentPaste2.jnlp b/tests/reproducers/simple/ClipboardContent/resources/ClipboardContentPaste2.jnlp
new file mode 100644
index 0000000..593714c
--- /dev/null
+++ b/tests/reproducers/simple/ClipboardContent/resources/ClipboardContentPaste2.jnlp
@@ -0,0 +1,57 @@
+<!--
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+
+ -->
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp spec="1.0" href="ClipboardContentPaste2.jnlp" codebase=".">
+ <information>
+ <title>ClipboardContentPaste2</title>
+ <vendor>IcedTea</vendor>
+ <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/>
+ <description>ClipboardContentPaste2</description>
+ <offline/>
+ </information>
+ <resources>
+ <j2se version="1.4+"/>
+ <jar href="ClipboardContent.jar"/>
+ </resources>
+ <application-desc main-class="ClipboardContent">
+ <argument>paste2</argument>
+ </application-desc>
+ <security>
+ <all-permissions/>
+ </security>
+</jnlp>
diff --git a/tests/reproducers/simple/ClipboardContent/srcs/ClipboardContent.java b/tests/reproducers/simple/ClipboardContent/srcs/ClipboardContent.java
new file mode 100644
index 0000000..acc2697
--- /dev/null
+++ b/tests/reproducers/simple/ClipboardContent/srcs/ClipboardContent.java
@@ -0,0 +1,183 @@
+/* ClipboardContent.java
+Copyright (C) 2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.concurrent.TimeUnit;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+import javax.swing.text.JTextComponent;
+
+public class ClipboardContent extends JPanel {
+
+ private static final String contentC = "COPY#$REPRODUCER";
+ private static final String contentP = "PASTE#$REPRODUCER";
+
+ private static class LocalFrame extends JFrame {
+
+ JTextField t;
+
+ public LocalFrame(String str) {
+ super();
+ t = new JTextField(str);
+ this.add(t);
+ this.setSize(100, 100);
+ this.pack();
+ t.selectAll();
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ }
+
+ public void run() throws InterruptedException {
+ SwingUtilities.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+ setVisible(true);
+
+ }
+ });
+ while (!this.isVisible()) {
+ Thread.sleep(100);
+ }
+ }
+
+ public JTextField getT() {
+ return t;
+ }
+ }
+
+ public void putToClipboard1(String str) {
+ Toolkit toolkit = Toolkit.getDefaultToolkit();
+ Clipboard clipboard = toolkit.getSystemClipboard();
+ StringSelection strSel = new StringSelection(str);
+ clipboard.setContents(strSel, null);
+ printFlavors();
+ }
+
+ public void putToClipboard2(final String str) throws InterruptedException, NoSuchMethodException, IllegalAccessException, UnsupportedFlavorException, IllegalArgumentException, InvocationTargetException, IOException {
+ final LocalFrame lf = new LocalFrame(str);
+ lf.run();
+ ((JTextComponent) (lf.getT())).copy();
+ printFlavors();
+ lf.dispose();
+ }
+
+ public String pasteFromClipboard2() throws InterruptedException, NoSuchMethodException, IllegalAccessException, UnsupportedFlavorException, IllegalArgumentException, InvocationTargetException, IOException {
+ final LocalFrame lf = new LocalFrame("xxx");
+ lf.run();
+ ((JTextComponent) (lf.getT())).paste();
+ printFlavors();
+ String s = lf.getT().getText();
+ lf.dispose();
+ return s;
+ }
+
+ private void printFlavors() {
+//just for debugging
+// Toolkit toolkit = Toolkit.getDefaultToolkit();
+// Clipboard clipboard = toolkit.getSystemClipboard();
+// Transferable clipData = clipboard.getContents(clipboard);
+// DataFlavor[] cd = clipData.getTransferDataFlavors();
+// for (DataFlavor dataFlavor : cd) {
+// System.out.println(dataFlavor.getMimeType());
+// }
+ }
+
+ public String pasteFromClipboard1() throws UnsupportedFlavorException, IOException {
+ Toolkit toolkit = Toolkit.getDefaultToolkit();
+ Clipboard clipboard = toolkit.getSystemClipboard();
+ Transferable clipData = clipboard.getContents(clipboard);
+ printFlavors();
+ String s = (String) (clipData.getTransferData(
+ DataFlavor.stringFlavor));
+ return s;
+ }
+
+ public static void main(String[] args) throws Exception {
+ ClipboardContent cl = new ClipboardContent();
+ if (args.length == 0) {
+ throw new IllegalArgumentException("at least copy1|2 or paste1|2 must be as argument (+mandatory number giving use timeout in seconds before termination)");
+ } else if (args.length == 1) {
+ cl.proceed(args[0]);
+ } else {
+ cl.proceed(args[0], args[1]);
+ }
+
+ }
+
+ public void proceed(String arg) throws Exception {
+ proceed(arg, 0);
+ }
+
+ public void proceed(String arg, String keepAliveFor) throws Exception {
+ proceed(arg, Long.valueOf(keepAliveFor));
+ }
+
+ public void proceed(String arg, long timeOut) throws Exception {
+ if (arg.equals("copy1")) {
+ System.out.println(this.getClass().getName() + " copying1 to clipboard " + contentC);
+ putToClipboard1(contentC);
+ System.out.println(this.getClass().getName() + " copied1 to clipboard " + pasteFromClipboard1());
+ } else if (arg.equals("paste1")) {
+ System.out.println(this.getClass().getName() + " pasting1 from clipboard ");
+ String nwContent = pasteFromClipboard1();
+ System.out.println(this.getClass().getName() + " pasted1 from clipboard " + nwContent);
+ } else if (arg.equals("copy2")) {
+ System.out.println(this.getClass().getName() + " copying2 to clipboard " + contentC);
+ putToClipboard2(contentC);
+ System.out.println(this.getClass().getName() + " copied2 to clipboard " + pasteFromClipboard2());
+ } else if (arg.equals("paste2")) {
+ System.out.println(this.getClass().getName() + " pasting2 from clipboard ");
+ String nwContent = pasteFromClipboard2();
+ System.out.println(this.getClass().getName() + " pasted2 from clipboard " + nwContent);
+ } else {
+ throw new IllegalArgumentException("supported copy1|2 paste1|2");
+ }
+ long start = System.nanoTime();
+ while (TimeUnit.NANOSECONDS.toSeconds(System.nanoTime() - start) < timeOut) {
+ Thread.sleep(500);
+ }
+ }
+}
diff --git a/tests/reproducers/simple/ClipboardContent/testcases/ClipboardContentTests.java b/tests/reproducers/simple/ClipboardContent/testcases/ClipboardContentTests.java
new file mode 100644
index 0000000..5571ab8
--- /dev/null
+++ b/tests/reproducers/simple/ClipboardContent/testcases/ClipboardContentTests.java
@@ -0,0 +1,136 @@
+/* ClipboardContentTests.java
+Copyright (C) 2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+import net.sourceforge.jnlp.tools.WaitingForStringProcess;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import net.sourceforge.jnlp.ContentReaderListener;
+import net.sourceforge.jnlp.ProcessResult;
+import net.sourceforge.jnlp.ServerAccess;
+import net.sourceforge.jnlp.annotations.Bug;
+import net.sourceforge.jnlp.annotations.NeedsDisplay;
+import net.sourceforge.jnlp.tools.AsyncJavaws;
+import static net.sourceforge.jnlp.tools.ClipboardHelpers.pasteFromClipboard;
+import static net.sourceforge.jnlp.tools.ClipboardHelpers.putToClipboard;
+import org.junit.Assert;
+import org.junit.Test;
+
+
+
+@Bug(id="PR708")
+public class ClipboardContentTests {
+
+ private static final String XCEPTION = "xception";
+ private static final String contentC = "COPY#$REPRODUCER";
+ private static final String contentP = "PASTE#$REPRODUCER";
+ private static final String emptyContent = "empty content";
+ private static ServerAccess server = new ServerAccess();
+ private static final List<String> javawsTrustArg = Collections.unmodifiableList(Arrays.asList(new String[]{"-Xtrustall"}));
+
+
+ @Test
+ public void assertClipboardIsWorking() throws Exception {
+ putToClipboard(emptyContent);
+ Assert.assertEquals(emptyContent, pasteFromClipboard());
+ putToClipboard(contentC);
+ Assert.assertEquals(contentC, pasteFromClipboard());
+ }
+
+ @Test
+ @Bug(id = "PR708")
+ public void ClipboardContentTestCopy1() throws Exception {
+ putToClipboard(emptyContent);
+ Assert.assertEquals("Clipboard must contain new value, did not", emptyContent, pasteFromClipboard());
+ WaitingForStringProcess wfsp = new WaitingForStringProcess(server, "/ClipboardContentCopy1.jnlp", javawsTrustArg, true, "copied");
+ wfsp.run();
+ String ss = pasteFromClipboard();
+ Assert.assertEquals("Clipboard content must not be changed - was", emptyContent, ss);
+ Assert.assertNotNull("Result had to be delivered, was not", wfsp.getAj().getResult());
+ Assert.assertTrue("ClipboardContentSignedCopy stderr should contain " + XCEPTION + " but did not ", wfsp.getAj().getResult().stderr.contains(XCEPTION));
+ }
+
+ //@Test needs awt robot to close dialog
+ @Bug(id = "PR708")
+ @NeedsDisplay
+ public void ClipboardContentTestCopy2() throws Exception {
+ putToClipboard(emptyContent);
+ Assert.assertEquals("Clipboard must contain new value, did not", emptyContent, pasteFromClipboard());
+ WaitingForStringProcess wfsp = new WaitingForStringProcess(server, "/ClipboardContentCopy2.jnlp", javawsTrustArg, false, "copied");
+ wfsp.run();
+ String ss = pasteFromClipboard();
+ Assert.assertEquals("Clipboard content must not be changed, was", emptyContent, ss);
+ Assert.assertNotNull("Result had to be delivered, was not", wfsp.getAj().getResult());
+ Assert.assertTrue("ClipboardContentSignedCopy stderr should contain " + XCEPTION + " but did not", wfsp.getAj().getResult().stderr.contains(XCEPTION));
+
+ }
+
+ @Test
+ @Bug(id = "PR708")
+ public void ClipboardContentTestPaste1() throws Exception {
+ //necessery errasing
+ putToClipboard(emptyContent);
+ Assert.assertEquals("Clipboard must contain new value, did not", emptyContent, pasteFromClipboard());
+ //now put the tested data
+ putToClipboard(contentP);
+ Assert.assertEquals("Clipboard must contain new value, did not", contentP, pasteFromClipboard());
+ ProcessResult pr = server.executeJavawsHeadless(javawsTrustArg, "/ClipboardContentPaste1.jnlp");
+ Assert.assertFalse("ClipboardContentTestPaste stdout should not contain " + contentP + " but didn't", pr.stdout.contains(contentP));
+ Assert.assertTrue("ClipboardContentTestPaste stderr should contain " + XCEPTION + " but didn't ", pr.stderr.contains(XCEPTION));
+
+ }
+
+ //@Test
+ //needs awt robot to close dialog
+ //Q - can this test be headless,and so automated?
+ //A - no, headless test are present. Swing is handling clipoard by little bit more complicated ways
+ // but imho at the end its the same privlidges. So this test is kept only fo record
+ @Bug(id = "PR708")
+ @NeedsDisplay
+ public void ClipboardContentTestPaste2() throws Exception {
+ //necessery errasing
+ putToClipboard(emptyContent);
+ Assert.assertEquals("Clipboard must contain new value, did not", emptyContent, pasteFromClipboard());
+ //now put the tested data
+ putToClipboard(contentP);
+ Assert.assertEquals("Clipboard must contain new value, did not", contentP, pasteFromClipboard());
+ Assert.assertEquals("Clipboard must contain new value, did not", contentP, pasteFromClipboard());
+ ProcessResult pr = server.executeJavaws(javawsTrustArg, "/ClipboardContentPaste2.jnlp");
+ Assert.assertFalse("ClipboardContentTestPaste stdout should not contain " + contentP + " but didn't", pr.stdout.contains(contentP));
+ Assert.assertTrue("ClipboardContentTestPaste stderr should contain " + XCEPTION + " but didn't ", pr.stderr.contains(XCEPTION));
+ }
+}