public void test_changedLorg_eclipse_swt_browser_ProgressEvent() {
    Display display = Display.getCurrent();
    Shell shell = new Shell(display);
    Browser browser = new Browser(shell, SWT.NONE);
    browser.addProgressListener(
        new ProgressListener() {
          public void changed(ProgressEvent event) {}

          public void completed(ProgressEvent event) {}
        });
    shell.close();
  }
  public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new GridLayout(2, true));

    final Browser browser;
    try {
      browser = new Browser(shell, SWT.NONE);
    } catch (SWTError e) {
      System.out.println("Could not instantiate Browser: " + e.getMessage());
      display.dispose();
      return;
    }
    GridData data = new GridData(GridData.FILL_BOTH);
    data.horizontalSpan = 2;
    browser.setLayoutData(data);

    Button headersButton = new Button(shell, SWT.PUSH);
    headersButton.setText("Send custom headers");
    data = new GridData();
    data.horizontalAlignment = GridData.FILL;
    headersButton.setLayoutData(data);
    headersButton.addListener(
        SWT.Selection,
        event ->
            browser.setUrl(
                "http://www.ericgiguere.com/tools/http-header-viewer.html",
                null,
                new String[] {"User-agent: SWT Browser", "Custom-header: this is just a demo"}));
    Button postDataButton = new Button(shell, SWT.PUSH);
    postDataButton.setText("Send post data");
    data = new GridData();
    data.horizontalAlignment = GridData.FILL;
    postDataButton.setLayoutData(data);
    postDataButton.addListener(
        SWT.Selection,
        event ->
            browser.setUrl(
                "https://bugs.eclipse.org/bugs/buglist.cgi",
                "emailassigned_to1=1&bug_severity=enhancement&bug_status=NEW&email1=platform-swt-inbox&emailtype1=substring",
                null));

    shell.setBounds(10, 10, 600, 600);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) display.sleep();
    }
    display.dispose();
  }
 public static void browserTab() {
   TabItem tab = new TabItem(folder, SWT.CLOSE);
   tab.setText("A Browser");
   tab.setToolTipText("A Web browser");
   Browser browser = null;
   try {
     browser = new Browser(folder, SWT.NONE);
   } catch (SWTError e) {
     Label label = new Label(folder, SWT.BORDER);
     label.setText("Could not initialize browser");
     tab.setControl(label);
   }
   if (browser != null) {
     browser.setUrl("http://www.mindview.net");
     tab.setControl(browser);
   }
 }
 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new FillLayout());
   shell.setText("Mozilla");
   final Browser browser;
   try {
     browser = new Browser(shell, SWT.MOZILLA);
   } catch (SWTError e) {
     System.out.println("Could not instantiate Browser: " + e.getMessage());
     display.dispose();
     return;
   }
   shell.open();
   browser.setUrl("http://mozilla.org");
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) display.sleep();
   }
   display.dispose();
 }
  void init() {
    if (MozillaVersion.CheckVersion(MozillaVersion.VERSION_XR10)) {
      /*
       * In XULRunner versions > 4, sending WM_GETDLGCODE to a WM_KEYDOWN's MSG hwnd answers 0
       * instead of the expected DLGC_WANTALLKEYS.  This causes the default traversal framework
       * perform traversals outside of the Browser when it should not.  Hook a Traverse listener
       * to work around these problems.
       */
      browser.addListener(
          SWT.Traverse,
          event -> {
            switch (event.detail) {
              case SWT.TRAVERSE_RETURN:
                {
                  /* always veto the traversal */
                  event.doit = false;
                  break;
                }
              case SWT.TRAVERSE_TAB_NEXT:
              case SWT.TRAVERSE_TAB_PREVIOUS:
                {
                  /* veto the traversal whenever an element in the browser has focus */
                  long /*int*/[] result = new long /*int*/[1];
                  int rc = XPCOM.NS_GetServiceManager(result);
                  if (rc != XPCOM.NS_OK) Mozilla.error(rc);
                  if (result[0] == 0) Mozilla.error(XPCOM.NS_NOINTERFACE);
                  nsIServiceManager serviceManager = new nsIServiceManager(result[0]);
                  result[0] = 0;
                  byte[] aContractID =
                      MozillaDelegate.wcsToMbcs(null, XPCOM.NS_FOCUSMANAGER_CONTRACTID, true);
                  rc =
                      serviceManager.GetServiceByContractID(
                          aContractID,
                          IIDStore.GetIID(nsIFocusManager.class, MozillaVersion.VERSION_XR10),
                          result);
                  serviceManager.Release();

                  if (rc == XPCOM.NS_OK && result[0] != 0) {
                    nsIFocusManager focusManager = new nsIFocusManager(result[0]);
                    result[0] = 0;
                    rc = focusManager.GetFocusedElement(result);
                    focusManager.Release();
                    event.doit = result[0] == 0;
                    if (rc == XPCOM.NS_OK && result[0] != 0) {
                      new nsISupports(result[0]).Release();
                    }
                  }
                  break;
                }
            }
          });

      /* children created in getSiteHandle() should be destroyed whenever a page is left */
      browser.addLocationListener(
          new LocationAdapter() {
            @Override
            public void changing(LocationEvent event) {
              Iterator<Composite> it = childWindows.iterator();
              while (it.hasNext()) {
                it.next().dispose();
              }
              childWindows.clear();
            }
          });
    }
  }
示例#6
0
  int PromptAuth(long /*int*/ aChannel, int level, long /*int*/ authInfo, long /*int*/ _retval) {
    nsIAuthInformation auth = new nsIAuthInformation(authInfo);

    Browser browser = getBrowser();
    if (browser != null) {
      Mozilla mozilla = (Mozilla) browser.webBrowser;
      /*
       * Do not invoke the listeners if this challenge has been failed too many
       * times because a listener is likely giving incorrect credentials repeatedly
       * and will do so indefinitely.
       */
      if (mozilla.authCount++ < 3) {
        for (int i = 0; i < mozilla.authenticationListeners.length; i++) {
          AuthenticationEvent event = new AuthenticationEvent(browser);
          event.location = mozilla.lastNavigateURL;
          mozilla.authenticationListeners[i].authenticate(event);
          if (!event.doit) {
            XPCOM.memmove(_retval, new boolean[] {false});
            return XPCOM.NS_OK;
          }
          if (event.user != null && event.password != null) {
            nsEmbedString string = new nsEmbedString(event.user);
            int rc = auth.SetUsername(string.getAddress());
            if (rc != XPCOM.NS_OK) SWT.error(rc);
            string.dispose();
            string = new nsEmbedString(event.password);
            rc = auth.SetPassword(string.getAddress());
            if (rc != XPCOM.NS_OK) SWT.error(rc);
            string.dispose();
            XPCOM.memmove(_retval, new boolean[] {true});
            return XPCOM.NS_OK;
          }
        }
      }
    }

    /* no listener handled the challenge, so show an authentication dialog */

    String checkLabel = null;
    boolean[] checkValue = new boolean[1];
    String[] userLabel = new String[1], passLabel = new String[1];

    String title = SWT.getMessage("SWT_Authentication_Required"); // $NON-NLS-1$

    /* get initial username and password values */

    long /*int*/ ptr = XPCOM.nsEmbedString_new();
    int rc = auth.GetUsername(ptr);
    if (rc != XPCOM.NS_OK) SWT.error(rc);
    int length = XPCOM.nsEmbedString_Length(ptr);
    long /*int*/ buffer = XPCOM.nsEmbedString_get(ptr);
    char[] chars = new char[length];
    XPCOM.memmove(chars, buffer, length * 2);
    userLabel[0] = new String(chars);
    XPCOM.nsEmbedString_delete(ptr);

    ptr = XPCOM.nsEmbedString_new();
    rc = auth.GetPassword(ptr);
    if (rc != XPCOM.NS_OK) SWT.error(rc);
    length = XPCOM.nsEmbedString_Length(ptr);
    buffer = XPCOM.nsEmbedString_get(ptr);
    chars = new char[length];
    XPCOM.memmove(chars, buffer, length * 2);
    passLabel[0] = new String(chars);
    XPCOM.nsEmbedString_delete(ptr);

    /* compute the message text */

    ptr = XPCOM.nsEmbedString_new();
    rc = auth.GetRealm(ptr);
    if (rc != XPCOM.NS_OK) SWT.error(rc);
    length = XPCOM.nsEmbedString_Length(ptr);
    buffer = XPCOM.nsEmbedString_get(ptr);
    chars = new char[length];
    XPCOM.memmove(chars, buffer, length * 2);
    String realm = new String(chars);
    XPCOM.nsEmbedString_delete(ptr);

    nsIChannel channel = new nsIChannel(aChannel);
    long /*int*/[] uri = new long /*int*/[1];
    rc = channel.GetURI(uri);
    if (rc != XPCOM.NS_OK) SWT.error(rc);
    if (uri[0] == 0) Mozilla.error(XPCOM.NS_NOINTERFACE);

    nsIURI nsURI = new nsIURI(uri[0]);
    long /*int*/ host = XPCOM.nsEmbedCString_new();
    rc = nsURI.GetHost(host);
    if (rc != XPCOM.NS_OK) SWT.error(rc);
    length = XPCOM.nsEmbedCString_Length(host);
    buffer = XPCOM.nsEmbedCString_get(host);
    byte[] bytes = new byte[length];
    XPCOM.memmove(bytes, buffer, length);
    String hostString = new String(bytes);
    XPCOM.nsEmbedCString_delete(host);
    nsURI.Release();

    String message;
    if (realm.length() > 0 && hostString.length() > 0) {
      message =
          Compatibility.getMessage(
              "SWT_Enter_Username_and_Password", new String[] {realm, hostString}); // $NON-NLS-1$
    } else {
      message = ""; // $NON-NLS-1$
    }

    /* open the prompter */
    Shell shell = browser == null ? new Shell() : browser.getShell();
    PromptDialog dialog = new PromptDialog(shell);
    boolean[] result = new boolean[1];
    dialog.promptUsernameAndPassword(
        title, message, checkLabel, userLabel, passLabel, checkValue, result);

    XPCOM.memmove(_retval, result);
    if (result[0]) {
        /* User selected OK */
      nsEmbedString string = new nsEmbedString(userLabel[0]);
      rc = auth.SetUsername(string.getAddress());
      if (rc != XPCOM.NS_OK) SWT.error(rc);
      string.dispose();

      string = new nsEmbedString(passLabel[0]);
      rc = auth.SetPassword(string.getAddress());
      if (rc != XPCOM.NS_OK) SWT.error(rc);
      string.dispose();
    }

    return XPCOM.NS_OK;
  }
  public static void main(String[] args) {
    Display display = new Display();
    final Shell shell = new Shell(display);
    GridLayout gridLayout = new GridLayout();
    gridLayout.numColumns = 3;
    shell.setLayout(gridLayout);
    ToolBar toolbar = new ToolBar(shell, SWT.NONE);
    ToolItem itemBack = new ToolItem(toolbar, SWT.PUSH);
    itemBack.setText("Back");
    ToolItem itemForward = new ToolItem(toolbar, SWT.PUSH);
    itemForward.setText("Forward");
    ToolItem itemStop = new ToolItem(toolbar, SWT.PUSH);
    itemStop.setText("Stop");
    ToolItem itemRefresh = new ToolItem(toolbar, SWT.PUSH);
    itemRefresh.setText("Refresh");
    ToolItem itemGo = new ToolItem(toolbar, SWT.PUSH);
    itemGo.setText("Go");

    GridData data = new GridData();
    data.horizontalSpan = 3;
    toolbar.setLayoutData(data);

    Label labelAddress = new Label(shell, SWT.NONE);
    labelAddress.setText("Address");

    final Text location = new Text(shell, SWT.BORDER);
    data = new GridData();
    data.horizontalAlignment = GridData.FILL;
    data.horizontalSpan = 2;
    data.grabExcessHorizontalSpace = true;
    location.setLayoutData(data);

    final Browser browser;
    try {
      browser = new Browser(shell, SWT.NONE);
    } catch (SWTError e) {
      System.out.println("Could not instantiate Browser: " + e.getMessage());
      display.dispose();
      return;
    }
    data = new GridData();
    data.horizontalAlignment = GridData.FILL;
    data.verticalAlignment = GridData.FILL;
    data.horizontalSpan = 3;
    data.grabExcessHorizontalSpace = true;
    data.grabExcessVerticalSpace = true;
    browser.setLayoutData(data);

    final Label status = new Label(shell, SWT.NONE);
    data = new GridData(GridData.FILL_HORIZONTAL);
    data.horizontalSpan = 2;
    status.setLayoutData(data);

    final ProgressBar progressBar = new ProgressBar(shell, SWT.NONE);
    data = new GridData();
    data.horizontalAlignment = GridData.END;
    progressBar.setLayoutData(data);

    /* event handling */
    Listener listener =
        new Listener() {
          @Override
          public void handleEvent(Event event) {
            ToolItem item = (ToolItem) event.widget;
            String string = item.getText();
            if (string.equals("Back")) browser.back();
            else if (string.equals("Forward")) browser.forward();
            else if (string.equals("Stop")) browser.stop();
            else if (string.equals("Refresh")) browser.refresh();
            else if (string.equals("Go")) browser.setUrl(location.getText());
          }
        };
    browser.addProgressListener(
        new ProgressListener() {
          @Override
          public void changed(ProgressEvent event) {
            if (event.total == 0) return;
            int ratio = event.current * 100 / event.total;
            progressBar.setSelection(ratio);
          }

          @Override
          public void completed(ProgressEvent event) {
            progressBar.setSelection(0);
          }
        });
    browser.addStatusTextListener(
        new StatusTextListener() {
          @Override
          public void changed(StatusTextEvent event) {
            status.setText(event.text);
          }
        });
    browser.addLocationListener(
        new LocationListener() {
          @Override
          public void changed(LocationEvent event) {
            if (event.top) location.setText(event.location);
          }

          @Override
          public void changing(LocationEvent event) {}
        });
    itemBack.addListener(SWT.Selection, listener);
    itemForward.addListener(SWT.Selection, listener);
    itemStop.addListener(SWT.Selection, listener);
    itemRefresh.addListener(SWT.Selection, listener);
    itemGo.addListener(SWT.Selection, listener);
    location.addListener(
        SWT.DefaultSelection,
        new Listener() {
          @Override
          public void handleEvent(Event e) {
            browser.setUrl(location.getText());
          }
        });

    shell.open();
    browser.setUrl("http://eclipse.org");

    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) display.sleep();
    }
    display.dispose();
  }
  public static boolean test1(String url) {
    if (verbose)
      System.out.println(
          "javascript window.open with location and size parameters - args: "
              + url
              + "\n  Expected Event Sequence: Visibility.show");
    passed = false;

    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    final Browser browser = new Browser(shell, SWT.NONE);
    browser.addOpenWindowListener(
        new OpenWindowListener() {
          public void open(WindowEvent event) {
            if (verbose) System.out.println("OpenWindow " + index);
            Shell newShell = new Shell(display);
            newShell.setLayout(new FillLayout());
            Browser browser = new Browser(newShell, SWT.NONE);
            browser.setData("index", new Integer(index));
            browser.addVisibilityWindowListener(
                new VisibilityWindowListener() {
                  public void hide(WindowEvent event) {}

                  public void show(WindowEvent event) {
                    Browser browser = (Browser) event.widget;
                    Shell parent = browser.getShell();
                    Point location = event.location;
                    Point size = event.size;
                    if (location != null) parent.setLocation(location);
                    if (size != null) parent.setSize(size);
                    int index = ((Integer) browser.getData("index")).intValue();
                    parent.setText("SWT Browser shell " + index);
                    parent.open();
                    if (index < 0) {
                      /* Certain browsers fire multiple show events for no good reason. Further show events
                       * are considered 'legal' as long as they don't contain size and location information.
                       */
                      if (location != null || size != null) {
                        if (verbose)
                          System.out.println(
                              "Failure - Browser " + index + " is receiving multiple show events");
                        passed = false;
                        shell.close();
                      } else {
                        if (verbose)
                          System.out.println(
                              "Unnecessary (but harmless) visibility.show event Browser " + index);
                      }
                    } else {
                      if (verbose)
                        System.out.println(
                            "Visibility.show browser "
                                + index
                                + " location "
                                + location
                                + " size "
                                + size);
                      browser.setData("index", new Integer(-100 - index));

                      /* Certain browsers include decorations in addition to the expected size.
                       * Accept sizes that are greater than or equal to the expected size.
                       * Certain browsers invent size or location when some parameters are missing.
                       * If we expect null for one of size or location, also accept non null answers.
                       */
                      Point expectedLocation = regressionBounds[index][0];
                      Point expectedSize = regressionBounds[index][1];
                      if (verbose)
                        System.out.println(
                            "Expected location " + expectedLocation + " size " + expectedSize);
                      boolean checkLocation =
                          (location == null && expectedLocation == null)
                              || (location != null && location.equals(expectedLocation)
                                  || (location != null && expectedLocation == null));
                      boolean checkSize =
                          (size == null && expectedSize == null)
                              || (size != null && size.equals(expectedSize))
                              || (size != null && expectedSize == null)
                              || (size != null
                                  && size.x >= expectedSize.x
                                  && size.y >= expectedSize.y);
                      if (!checkSize || !checkLocation) {
                        if (verbose) System.out.println("	Failure ");
                        passed = false;
                        shell.close();
                        return;
                      } else cntPassed++;
                    }
                  }
                });
            browser.addCloseWindowListener(
                new CloseWindowListener() {
                  public void close(WindowEvent event) {
                    cntClosed++;
                    if (verbose) System.out.println("Close");
                    Browser browser = (Browser) event.widget;
                    browser.getShell().close();
                    if (cntPassed == regressionBounds.length) passed = true;
                    if (cntClosed == regressionBounds.length) {
                      shell.close();
                      return;
                    }
                  }
                });
            event.browser = browser;
            index++;
          }
        });
    shell.open();
    browser.setUrl(url);

    boolean timeout = runLoopTimer(display, shell, 600);
    if (timeout) passed = false;
    display.dispose();
    return passed;
  }