diff options
Diffstat (limited to 'tests')
4 files changed, 214 insertions, 1 deletions
diff --git a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/browser/Browser4.java b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/browser/Browser4.java new file mode 100644 index 0000000000..315c49aa9f --- /dev/null +++ b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/browser/Browser4.java @@ -0,0 +1,189 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.swt.tests.junit.browser; + +import org.eclipse.swt.widgets.*; +import org.eclipse.swt.layout.*; +import org.eclipse.swt.browser.*; +import org.eclipse.swt.*; + +public class Browser4 { + public static boolean passed = false; + public static boolean openWindow, locationChanging, locationChanged, visibilityShow, progressCompleted, closeWindow; + + public static boolean test1(String url) { + System.out.println("javascript window.open - args: "+url+" Expected Event Sequence: Browser1:OpenWindow.open > { Browser2:Location.changing, Browser2:Visibility.show, Browser2:Location.changed } > Browser2:Progress.completed > Browser2.CloseWindow.close"); + passed = false; + locationChanging = locationChanged = progressCompleted = false; + + final Display display = new Display(); + final Shell shell = new Shell(display); + shell.setLayout(new FillLayout()); + final Browser browser1 = new Browser(shell, SWT.NONE); + final Shell shell2 = new Shell(display); + shell2.setLayout(new FillLayout()); + final Browser browser2 = new Browser(shell2, SWT.NONE); + browser1.addOpenWindowListener(new OpenWindowListener() { + public void open(OpenWindowEvent event) { + openWindow = true; + Browser src = (Browser)event.widget; + if (src != browser1) { + System.out.println("Failure - expected "+browser1+", got "+src); + passed = false; + shell.close(); + return; + } + if (event.browser != null) { + System.out.println("Failure - expected null, got "+event.browser); + passed = false; + shell.close(); + return; + } + event.browser = browser2; + } + }); + browser2.addLocationListener(new LocationListener() { + public void changed(LocationEvent event) { + if (!openWindow || !locationChanging) { + System.out.println("Failure - Location.changing received at wrong time"); + passed = false; + shell.close(); + return; + } + locationChanged = true; + } + public void changing(LocationEvent event) { + if (!openWindow) { + System.out.println("Failure - Location.changing received at wrong time"); + passed = false; + shell.close(); + return; + } + locationChanging = true; + } + }); + browser2.addVisibilityListener(new VisibilityListener() { + public void hide(VisibilityEvent event) { + System.out.println("Failure - did not expect VisibilityEvent.hide"); + passed = false; + shell.close(); + } + public void show(VisibilityEvent event) { + if (!openWindow) { + System.out.println("Failure - Visibility.show received at wrong time"); + passed = false; + shell.close(); + return; + } + shell2.open(); + visibilityShow = true; + } + }); + browser2.addProgressListener(new ProgressListener() { + public void changed(ProgressEvent event) { + } + + public void completed(ProgressEvent event) { + if (!locationChanging || !locationChanged || !visibilityShow) { + System.out.println("Failure - Progress.completed received at wrong time"); + passed = false; + shell.close(); + return; + } + progressCompleted = true; + } + }); + browser2.addCloseWindowListener(new CloseWindowListener() { + public void close(CloseWindowEvent event) { + if (!progressCompleted) { + System.out.println("Failure - CloseWindow.close received at wrong time"); + passed = false; + shell.close(); + return; + } + closeWindow = true; + final Browser browser = (Browser)event.widget; + Shell parent = browser.getShell(); + parent.close(); + + new Thread() { + public void run() { + System.out.println("timer start"); + try { sleep(2000); } catch (Exception e) {}; + passed = true; + if (!display.isDisposed()) + display.asyncExec(new Runnable(){ + public void run() { + System.out.println("timer asyncexec shell.close"); + if (!shell.isDisposed()) shell.close(); + } + }); + System.out.println("timer over"); + }; + }.start(); + } + }); + + shell.open(); + browser1.setUrl(url); + + boolean timeout = runLoopTimer(display, shell, 600); + if (timeout) passed = false; + display.dispose(); + return passed; + } + + static boolean runLoopTimer(final Display display, final Shell shell, final int seconds) { + final boolean[] timeout = {false}; + new Thread() { + public void run() { + try { + for (int i = 0; i < seconds; i++) { + Thread.sleep(1000); + if (display.isDisposed() || shell.isDisposed()) return; + } + } + catch (Exception e) {} + timeout[0] = true; + /* wake up the event loop */ + if (!display.isDisposed()) { + display.asyncExec(new Runnable() { + public void run() { + if (!shell.isDisposed()) shell.redraw(); + } + }); + } + } + }.start(); + while (!timeout[0] && !shell.isDisposed()) if (!display.readAndDispatch()) display.sleep(); + return timeout[0]; + } + + public static boolean test() { + int fail = 0; + String url; + String pluginPath = System.getProperty("PLUGIN_PATH"); + System.out.println("PLUGIN_PATH <"+pluginPath+">"); + if (pluginPath == null) url = Browser4.class.getClassLoader().getResource("browser4.html").toString(); + else url = pluginPath + "/data/browser4.html"; + String[] urls = {url}; + for (int i = 0; i < urls.length; i++) { + boolean result = test1(urls[i]); + System.out.print(result ? "." : "E"); + if (!result) fail++; + } + return fail == 0; + } + + public static void main(String[] argv) { + System.out.println("\r\nTests Finished. SUCCESS: "+test()); + } +}
\ No newline at end of file diff --git a/tests/org.eclipse.swt.tests/data/browser3.html b/tests/org.eclipse.swt.tests/data/browser3.html index 121ac108c7..01ea43ea8a 100644 --- a/tests/org.eclipse.swt.tests/data/browser3.html +++ b/tests/org.eclipse.swt.tests/data/browser3.html @@ -1,6 +1,6 @@ <html> <script type="text/javascript">window.open("http://www.eclipse.org", "Dialog")</script> <body> -This tests uses javascript to open a new window. +This test uses javascript to open a new window. </body> </html> diff --git a/tests/org.eclipse.swt.tests/data/browser4.html b/tests/org.eclipse.swt.tests/data/browser4.html new file mode 100644 index 0000000000..77e4bf506a --- /dev/null +++ b/tests/org.eclipse.swt.tests/data/browser4.html @@ -0,0 +1,10 @@ +<html> +<script type="text/javascript"> + w = window.open("browser4a.html", "Dialog"); + setTimeout("w.close()", 5000); +</script> +<body> +<p>This test uses javascript. +<p>It opens a new window. Sets a timer. Then close the new window when the timer expires. +</body> +</html> diff --git a/tests/org.eclipse.swt.tests/data/browser4a.html b/tests/org.eclipse.swt.tests/data/browser4a.html new file mode 100644 index 0000000000..7e3585827c --- /dev/null +++ b/tests/org.eclipse.swt.tests/data/browser4a.html @@ -0,0 +1,14 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> + <meta http-equiv="content-type" + content="text/html; charset=ISO-8859-1"> + <title>simple page</title> +</head> +<body style="background-color: rgb(255, 204, 0); color: rgb(0, 0, 0);" + link="#0000ee" alink="#0000ee" vlink="#551a8b"> +<div style="text-align: center;"><big><big><big><big><big><big><span + style="font-weight: bold;">This is a simple page</span></big></big></big></big></big></big><br> +</div> +</body> +</html> |