Exemplo n.º 1
0
  /**
   * 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());
  }