Java Code Examples for com.gargoylesoftware.htmlunit.javascript.host.Window#getWebWindow()

The following examples show how to use com.gargoylesoftware.htmlunit.javascript.host.Window#getWebWindow() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: HTMLElement.java    From htmlunit with Apache License 2.0 5 votes vote down vote up
/**
 * Sets the object as active without setting focus to the object.
 * @see <a href="http://msdn.microsoft.com/en-us/library/ms536738.aspx">MSDN documentation</a>
 */
@JsxFunction(IE)
public void setActive() {
    final Window window = getWindow();
    final HTMLDocument document = (HTMLDocument) window.getDocument();
    document.setActiveElement(this);
    if (window.getWebWindow() == window.getWebWindow().getWebClient().getCurrentWindow()) {
        final HtmlElement element = getDomNodeOrDie();
        ((HtmlPage) element.getPage()).setFocusedElement(element);
    }
}
 
Example 2
Source File: XMLHttpRequest.java    From HtmlUnit-Android with Apache License 2.0 5 votes vote down vote up
/**
 * Returns a DOM-compatible document object version of the data retrieved from the server.
 * @return a DOM-compatible document object version of the data retrieved from the server
 */
@JsxGetter
public Object getResponseXML() {
    if (webResponse_ == null) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("XMLHttpRequest.responseXML returns null because there "
                    + "in no web resonse so far (has send() been called?)");
        }
        return null;
    }
    if (webResponse_ instanceof NetworkErrorWebResponse) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("XMLHttpRequest.responseXML returns of a network error ("
                    + ((NetworkErrorWebResponse) webResponse_).getError() + ")");
        }
        return null;
    }
    final String contentType = webResponse_.getContentType();
    if (contentType.isEmpty() || contentType.contains("xml")) {
        final Window w = getWindow();
        try {
            final XmlPage page = new XmlPage(webResponse_, w.getWebWindow());
            final XMLDocument document = new XMLDocument();
            document.setPrototype(getPrototype(document.getClass()));
            document.setParentScope(w);
            document.setDomNode(page);
            return document;
        }
        catch (final IOException e) {
            LOG.warn("Failed parsing XML document " + webResponse_.getWebRequest().getUrl() + ": "
                    + e.getMessage());
            return null;
        }
    }
    if (LOG.isDebugEnabled()) {
        LOG.debug("XMLHttpRequest.responseXML was called but the response is "
            + webResponse_.getContentType());
    }
    return null;
}
 
Example 3
Source File: HTMLElement.java    From HtmlUnit-Android with Apache License 2.0 5 votes vote down vote up
/**
 * Sets the object as active without setting focus to the object.
 * @see <a href="http://msdn.microsoft.com/en-us/library/ms536738.aspx">MSDN documentation</a>
 */
@JsxFunction(IE)
public void setActive() {
    final Window window = getWindow();
    final HTMLDocument document = (HTMLDocument) window.getDocument();
    document.setActiveElement(this);
    if (window.getWebWindow() == window.getWebWindow().getWebClient().getCurrentWindow()) {
        final HtmlElement element = getDomNodeOrDie();
        ((HtmlPage) element.getPage()).setFocusedElement(element);
    }
}
 
Example 4
Source File: XMLHttpRequest.java    From htmlunit with Apache License 2.0 4 votes vote down vote up
/**
 * Returns a DOM-compatible document object version of the data retrieved from the server.
 * @return a DOM-compatible document object version of the data retrieved from the server
 */
@JsxGetter
public Object getResponseXML() {
    if (webResponse_ == null) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("XMLHttpRequest.responseXML returns null because there "
                    + "in no web resonse so far (has send() been called?)");
        }
        return null;
    }
    if (webResponse_ instanceof NetworkErrorWebResponse) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("XMLHttpRequest.responseXML returns of a network error ("
                    + ((NetworkErrorWebResponse) webResponse_).getError() + ")");
        }
        return null;
    }
    final String contentType = webResponse_.getContentType();
    if (contentType.isEmpty() || contentType.contains("xml")) {
        final Window w = getWindow();
        try {
            final XmlPage page = new XmlPage(webResponse_, w.getWebWindow());
            final XMLDocument document = new XMLDocument();
            document.setPrototype(getPrototype(document.getClass()));
            document.setParentScope(w);
            document.setDomNode(page);
            return document;
        }
        catch (final IOException e) {
            if (LOG.isWarnEnabled()) {
                LOG.warn("Failed parsing XML document " + webResponse_.getWebRequest().getUrl() + ": "
                        + e.getMessage());
            }
            return null;
        }
    }
    if (LOG.isDebugEnabled()) {
        LOG.debug("XMLHttpRequest.responseXML was called but the response is "
            + webResponse_.getContentType());
    }
    return null;
}
 
Example 5
Source File: XMLHttpRequest.java    From htmlunit with Apache License 2.0 4 votes vote down vote up
/**
 * Sends the specified content to the server in an HTTP request and receives the response.
 * @param content the body of the message being sent with the request
 */
@JsxFunction
public void send(final Object content) {
    if (webRequest_ == null) {
        return;
    }
    prepareRequest(content);

    final Window w = getWindow();
    final WebWindow ww = w.getWebWindow();
    final WebClient client = ww.getWebClient();
    final AjaxController ajaxController = client.getAjaxController();
    final HtmlPage page = (HtmlPage) ww.getEnclosedPage();
    final boolean synchron = ajaxController.processSynchron(page, webRequest_, async_);
    if (synchron) {
        doSend(Context.getCurrentContext());
    }
    else {
        if (getBrowserVersion().hasFeature(XHR_FIRE_STATE_OPENED_AGAIN_IN_ASYNC_MODE)) {
            // quite strange but IE seems to fire state loading twice
            // in async mode (at least with HTML of the unit tests)
            setState(OPENED, Context.getCurrentContext());
        }

        // Create and start a thread in which to execute the request.
        final Scriptable startingScope = w;
        final ContextFactory cf = ((JavaScriptEngine) client.getJavaScriptEngine()).getContextFactory();
        final ContextAction<Object> action = new ContextAction<Object>() {
            @Override
            public Object run(final Context cx) {
                // KEY_STARTING_SCOPE maintains a stack of scopes
                @SuppressWarnings("unchecked")
                Deque<Scriptable> stack =
                        (Deque<Scriptable>) cx.getThreadLocal(JavaScriptEngine.KEY_STARTING_SCOPE);
                if (null == stack) {
                    stack = new ArrayDeque<>();
                    cx.putThreadLocal(JavaScriptEngine.KEY_STARTING_SCOPE, stack);
                }
                stack.push(startingScope);

                try {
                    doSend(cx);
                }
                finally {
                    stack.pop();
                }
                return null;
            }

            @Override
            public String toString() {
                return "XMLHttpRequest " + webRequest_.getHttpMethod() + " '" + webRequest_.getUrl() + "'";
            }
        };
        final JavaScriptJob job = BackgroundJavaScriptFactory.theFactory().
                createJavascriptXMLHttpRequestJob(cf, action);
        if (LOG.isDebugEnabled()) {
            LOG.debug("Starting XMLHttpRequest thread for asynchronous request");
        }
        jobID_ = ww.getJobManager().addJob(job, page);
    }
}