/** * Tests the use of a custom job manager. * * @throws Exception if an error occurs */ @Test public void useCustomJobManager() throws Exception { final MutableInt jobCount = new MutableInt(0); final JavaScriptJobManager mgr = new JavaScriptJobManager() { /** Serial version UID. */ private static final long serialVersionUID = 4189494067589390155L; /** {@inheritDoc} */ public int waitForJobsStartingBefore(final long delayMillis) { return jobCount.intValue(); } /** {@inheritDoc} */ public int waitForJobs(final long timeoutMillis) { return jobCount.intValue(); } /** {@inheritDoc} */ public void stopJob(final int id) { // Empty. } /** {@inheritDoc} */ public void shutdown() { // Empty. } /** {@inheritDoc} */ public void removeJob(final int id) { // Empty. } /** {@inheritDoc} */ public void removeAllJobs() { // Empty. } /** {@inheritDoc} */ public int getJobCount() { return jobCount.intValue(); } /** {@inheritDoc} */ public int addJob(final JavaScriptJob job, final Page page) { jobCount.increment(); return jobCount.intValue(); } }; final WebWindowListener listener = new WebWindowListener() { /** {@inheritDoc} */ public void webWindowOpened(final WebWindowEvent event) { ((WebWindowImpl) event.getWebWindow()).setJobManager(mgr); } /** {@inheritDoc} */ public void webWindowContentChanged(final WebWindowEvent event) { // Empty. } /** {@inheritDoc} */ public void webWindowClosed(final WebWindowEvent event) { // Empty. } }; final WebClient client = new WebClient(); client.addWebWindowListener(listener); final TopLevelWindow window = (TopLevelWindow) client.getCurrentWindow(); window.setJobManager(mgr); final MockWebConnection conn = new MockWebConnection(); conn.setDefaultResponse( "<html><body><script>window.setTimeout('', 500);</script></body></html>"); client.setWebConnection(conn); client.getPage(URL_FIRST); assertEquals(1, jobCount.intValue()); client.getPage(URL_FIRST); assertEquals(2, jobCount.intValue()); }