[Httpunit-commit] CVS: httpunit/src/com/meterware/httpunit WebWindowListener.java,NONE,1.1 WebClient
Brought to you by:
russgold
|
From: Russell G. <rus...@us...> - 2002-10-04 15:19:28
|
Update of /cvsroot/httpunit/httpunit/src/com/meterware/httpunit
In directory usw-pr-cvs1:/tmp/cvs-serv27236/src/com/meterware/httpunit
Modified Files:
WebClient.java WebWindow.java
Added Files:
WebWindowListener.java
Log Message:
Added listener support for window opening
***** Error reading new file[Errno 2] No such file or directory: 'WebWindowListener.java'
Index: WebClient.java
===================================================================
RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/WebClient.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- WebClient.java 4 Oct 2002 00:40:28 -0000 1.35
+++ WebClient.java 4 Oct 2002 15:19:25 -0000 1.36
@@ -316,6 +316,26 @@
/**
+ * Adds a listener to watch for window openings and closings.
+ */
+ public void addWindowListener( WebWindowListener listener ) {
+ synchronized (_windowListeners) {
+ if (listener != null && !_windowListeners.contains( listener )) _windowListeners.add( listener );
+ }
+ }
+
+
+ /**
+ * Removes a listener to watch for window openings and closings.
+ */
+ public void removeWindowListener( WebWindowListener listener ) {
+ synchronized (_windowListeners) {
+ _windowListeners.remove( listener );
+ }
+ }
+
+
+ /**
* Returns the next javascript alert without removing it from the queue.
*/
public String getNextAlert() {
@@ -410,17 +430,38 @@
}
- WebWindow getTargetWindow( WebWindow requestWindow, String target ) {
- if (WebRequest.NEW_WINDOW.equalsIgnoreCase( target )) {
- WebWindow window = new WebWindow( this );
- _openWindows.add( window );
- return window;
+ void updateFrameContents( WebWindow requestWindow, String requestTarget, WebResponse response ) throws IOException, SAXException {
+ WebWindow window = getTargetWindow( requestWindow, requestTarget );
+ if (window != null) {
+ window.updateFrameContents( response );
} else {
- return requestWindow;
+ window = new WebWindow( this );
+ window.updateFrameContents( response );
+ _openWindows.add( window );
+ reportWindowOpened( window );
}
}
+ private WebWindow getTargetWindow( WebWindow requestWindow, String target ) {
+ return WebRequest.NEW_WINDOW.equalsIgnoreCase( target ) ? null : requestWindow;
+ }
+
+
+ private void reportWindowOpened( WebWindow window ) {
+ List listeners;
+
+ synchronized (_windowListeners) {
+ listeners = new ArrayList( _windowListeners );
+ }
+
+ for (Iterator i = listeners.iterator(); i.hasNext();) {
+ ((WebWindowListener) i.next()).windowOpened( this, window );
+ }
+ }
+
+
+
//------------------------------------------ package members ------------------------------------
@@ -453,6 +494,8 @@
private boolean _exceptionsThrownOnErrorStatus = HttpUnitOptions.getExceptionsThrownOnErrorStatus();
private List _clientListeners = new ArrayList();
+
+ private List _windowListeners = new ArrayList();
private DialogResponder _dialogResponder = new DialogAdapter();
Index: WebWindow.java
===================================================================
RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/WebWindow.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- WebWindow.java 4 Oct 2002 00:40:28 -0000 1.2
+++ WebWindow.java 4 Oct 2002 15:19:25 -0000 1.3
@@ -116,7 +116,7 @@
delay( HttpUnitOptions.getRedirectDelay() );
getResponse( new RedirectWebRequest( response ) );
} else {
- _client.getTargetWindow( this, requestTarget ).updateFrameContents( response );
+ _client.updateFrameContents( this, requestTarget, response );
}
}
@@ -130,7 +130,7 @@
}
- private void updateFrameContents( WebResponse response ) throws IOException, SAXException {
+ void updateFrameContents( WebResponse response ) throws IOException, SAXException {
response.setWindow( this );
_frameContents.updateFrames( response, response.getTarget() );
}
|