private static String getFileExtension(final Page enclosedPage) { if (enclosedPage != null) { if (enclosedPage.isHtmlPage()) { return "html"; } final URL url = enclosedPage.getUrl(); if (url.getPath().contains(".")) { return StringUtils.substringAfterLast(url.getPath(), "."); } } return ".unknown"; }
private static String getFileExtension(final Page enclosedPage) { if (enclosedPage != null) { if (enclosedPage.isHtmlPage()) { return "html"; } final URL url = enclosedPage.getUrl(); if (url.getPath().contains(".")) { return StringUtils.substringAfterLast(url.getPath(), "."); } } return ".unknown"; }
private URL makeUrlForOpenWindow(final String urlString) { if (urlString.isEmpty()) { return WebClient.URL_ABOUT_BLANK; } try { final Page page = getWebWindow().getEnclosedPage(); if (page != null && page.isHtmlPage()) { return ((HtmlPage) page).getFullyQualifiedUrl(urlString); } return new URL(urlString); } catch (final MalformedURLException e) { LOG.error("Unable to create URL for openWindow: relativeUrl=[" + urlString + "]", e); return null; } }
private URL makeUrlForOpenWindow(final String urlString) { if (urlString.isEmpty()) { return WebClient.URL_ABOUT_BLANK; } try { final Page page = getWebWindow().getEnclosedPage(); if (page != null && page.isHtmlPage()) { return ((HtmlPage) page).getFullyQualifiedUrl(urlString); } return new URL(urlString); } catch (final MalformedURLException e) { LOG.error("Unable to create URL for openWindow: relativeUrl=[" + urlString + "]", e); return null; } }
private Map<String, DomAttr> getAttributesFor(final BaseFrameElement frame) throws IOException { final Map<String, DomAttr> map = createAttributesCopyWithClonedAttribute(frame, "src"); final DomAttr srcAttr = map.get("src"); if (srcAttr == null) { return map; } final Page enclosedPage = frame.getEnclosedPage(); final String suffix = getFileExtension(enclosedPage); final File file = createFile(srcAttr.getValue(), "." + suffix); if (enclosedPage != null) { if (enclosedPage.isHtmlPage()) { file.delete(); // TODO: refactor as it is stupid to create empty file at one place // and then to complain that it already exists ((HtmlPage) enclosedPage).save(file); } else { try (InputStream is = enclosedPage.getWebResponse().getContentAsStream()) { try (FileOutputStream fos = new FileOutputStream(file)) { IOUtils.copyLarge(is, fos); } } } } srcAttr.setValue(file.getParentFile().getName() + FILE_SEPARATOR + file.getName()); return map; }
private Map<String, DomAttr> getAttributesFor(final BaseFrameElement frame) throws IOException { final Map<String, DomAttr> map = createAttributesCopyWithClonedAttribute(frame, DomElement.SRC_ATTRIBUTE); final DomAttr srcAttr = map.get(DomElement.SRC_ATTRIBUTE); if (srcAttr == null) { return map; } final Page enclosedPage = frame.getEnclosedPage(); final String suffix = getFileExtension(enclosedPage); final File file = createFile(srcAttr.getValue(), "." + suffix); if (enclosedPage != null) { if (enclosedPage.isHtmlPage()) { file.delete(); // TODO: refactor as it is stupid to create empty file at one place // and then to complain that it already exists ((HtmlPage) enclosedPage).save(file); } else { try (InputStream is = enclosedPage.getWebResponse().getContentAsStream()) { try (OutputStream fos = Files.newOutputStream(file.toPath())) { IOUtils.copyLarge(is, fos); } } } } srcAttr.setValue(file.getParentFile().getName() + FILE_SEPARATOR + file.getName()); return map; }
/** * Initialize the object. * @param enclosedPage the page containing the JavaScript */ public void initialize(final Page enclosedPage) { if (enclosedPage != null && enclosedPage.isHtmlPage()) { final HtmlPage htmlPage = (HtmlPage) enclosedPage; // Windows don't have corresponding DomNodes so set the domNode // variable to be the page. If this isn't set then SimpleScriptable.get() // won't work properly setDomNode(htmlPage); clearEventListenersContainer(); WebAssert.notNull("document_", document_); document_.setDomNode(htmlPage); } }
/** * Initialize the object. * @param enclosedPage the page containing the JavaScript */ public void initialize(final Page enclosedPage) { if (enclosedPage != null && enclosedPage.isHtmlPage()) { final HtmlPage htmlPage = (HtmlPage) enclosedPage; // Windows don't have corresponding DomNodes so set the domNode // variable to be the page. If this isn't set then SimpleScriptable.get() // won't work properly setDomNode(htmlPage); clearEventListenersContainer(); WebAssert.notNull("document_", document_); document_.setDomNode(htmlPage); } }
/** * Deregister frames that are no longer in use. */ public void deregisterFramesIfNeeded() { for (final WebWindow window : getFrames()) { getWebClient().deregisterWebWindow(window); final Page page = window.getEnclosedPage(); if (page != null && page.isHtmlPage()) { // seems quite silly, but for instance if the src attribute of an iframe is not // set, the error only occurs when leaving the page ((HtmlPage) page).deregisterFramesIfNeeded(); } } }
/** * Deregister frames that are no longer in use. */ public void deregisterFramesIfNeeded() { for (final WebWindow window : getFrames()) { getWebClient().deregisterWebWindow(window); final Page page = window.getEnclosedPage(); if (page != null && page.isHtmlPage()) { // seems quite silly, but for instance if the src attribute of an iframe is not // set, the error only occurs when leaving the page ((HtmlPage) page).deregisterFramesIfNeeded(); } } }
/** * Closes this window. */ public void close() { setClosed(); final Page page = getEnclosedPage(); if (page != null) { if (page.isHtmlPage()) { final HtmlPage htmlPage = (HtmlPage) page; if (!htmlPage.isOnbeforeunloadAccepted()) { if (LOG.isDebugEnabled()) { LOG.debug("The registered OnbeforeunloadHandler rejected the window close event."); } return; } } page.cleanUp(); } getJobManager().shutdown(); destroyChildren(); getWebClient().deregisterWebWindow(this); }
/** * Closes this window. */ public void close() { setClosed(); final Page page = getEnclosedPage(); if (page != null) { if (page.isHtmlPage()) { final HtmlPage htmlPage = (HtmlPage) page; if (!htmlPage.isOnbeforeunloadAccepted()) { if (LOG.isDebugEnabled()) { LOG.debug("The registered OnbeforeunloadHandler rejected the window close event."); } return; } } page.cleanUp(); } getJobManager().shutdown(); destroyChildren(); getWebClient().deregisterWebWindow(this); }
/** * Override of default clickAction that makes this radio button the selected * one when it is clicked. * {@inheritDoc} * * @throws IOException if an IO error occurred */ @Override protected boolean doClickStateUpdate(final boolean shiftKey, final boolean ctrlKey) throws IOException { final HtmlForm form = getEnclosingForm(); final boolean changed = !isChecked(); final Page page = getPage(); if (form != null) { form.setCheckedRadioButton(this); } else if (page != null && page.isHtmlPage()) { setCheckedForPage((HtmlPage) page); } super.doClickStateUpdate(shiftKey, ctrlKey); return changed; }
/** * Override of default clickAction that makes this radio button the selected * one when it is clicked. * {@inheritDoc} * * @throws IOException if an IO error occurred */ @Override protected boolean doClickStateUpdate(final boolean shiftKey, final boolean ctrlKey) throws IOException { final HtmlForm form = getEnclosingForm(); final boolean changed = !isChecked(); final Page page = getPage(); if (form != null) { form.setCheckedRadioButton(this); } else if (page != null && page.isHtmlPage()) { setCheckedForPage((HtmlPage) page); } super.doClickStateUpdate(shiftKey, ctrlKey); return changed; }
if (enclosedPage != null && enclosedPage.isHtmlPage()) { final HtmlPage htmlPage = (HtmlPage) enclosedPage; final AbstractJavaScriptEngine<?> jsEngine = getPage().getWebClient().getJavaScriptEngine();
if (enclosedPage != null && enclosedPage.isHtmlPage()) { final HtmlPage htmlPage = (HtmlPage) enclosedPage; final AbstractJavaScriptEngine<?> jsEngine = getPage().getWebClient().getJavaScriptEngine();
/** * Sets the {@code checked} attribute. * * @param isChecked true if this element is to be selected * @return the page that occupies this window after setting checked status * It may be the same window or it may be a freshly loaded one. */ @Override public Page setChecked(final boolean isChecked) { Page page = getPage(); final boolean changed = isChecked() != isChecked; checkedState_ = isChecked; if (isChecked) { final HtmlForm form = getEnclosingForm(); if (form != null) { form.setCheckedRadioButton(this); } else if (page != null && page.isHtmlPage()) { setCheckedForPage((HtmlPage) page); } } if (changed) { final ScriptResult scriptResult = fireEvent(Event.TYPE_CHANGE); if (scriptResult != null) { page = page.getEnclosingWindow().getWebClient().getCurrentWindow().getEnclosedPage(); } } return page; }
/** * Sets the {@code checked} attribute. * * @param isChecked true if this element is to be selected * @return the page that occupies this window after setting checked status * It may be the same window or it may be a freshly loaded one. */ @Override public Page setChecked(final boolean isChecked) { Page page = getPage(); final boolean changed = isChecked() != isChecked; checkedState_ = isChecked; if (isChecked) { final HtmlForm form = getEnclosingForm(); if (form != null) { form.setCheckedRadioButton(this); } else if (page != null && page.isHtmlPage()) { setCheckedForPage((HtmlPage) page); } } if (changed) { final ScriptResult scriptResult = fireEvent(Event.TYPE_CHANGE); if (scriptResult != null) { page = page.getEnclosingWindow().getWebClient().getCurrentWindow().getEnclosedPage(); } } return page; }
private void fireAddition(final DomNode domNode) { final boolean wasAlreadyAttached = domNode.isAttachedToPage(); domNode.attachedToPage_ = isAttachedToPage(); if (isAttachedToPage()) { // trigger events final Page page = getPage(); if (null != page && page.isHtmlPage()) { ((HtmlPage) page).notifyNodeAdded(domNode); } // a node that is already "complete" (ie not being parsed) and not yet attached if (!domNode.isBodyParsed() && !wasAlreadyAttached) { for (final DomNode child : domNode.getDescendants()) { child.attachedToPage_ = true; child.onAllChildrenAddedToPage(true); } domNode.onAllChildrenAddedToPage(true); } } if (this instanceof DomDocumentFragment) { onAddedToDocumentFragment(); } fireNodeAdded(new DomChangeEvent(this, domNode)); }
private void fireAddition(final DomNode domNode) { final boolean wasAlreadyAttached = domNode.isAttachedToPage(); domNode.attachedToPage_ = isAttachedToPage(); if (isAttachedToPage()) { // trigger events final Page page = getPage(); if (null != page && page.isHtmlPage()) { ((HtmlPage) page).notifyNodeAdded(domNode); } // a node that is already "complete" (ie not being parsed) and not yet attached if (!domNode.isBodyParsed() && !wasAlreadyAttached) { for (final DomNode child : domNode.getDescendants()) { child.attachedToPage_ = true; child.onAllChildrenAddedToPage(true); } domNode.onAllChildrenAddedToPage(true); } } if (this instanceof DomDocumentFragment) { onAddedToDocumentFragment(); } fireNodeAdded(new DomChangeEvent(this, domNode)); }