The problem as I see it The component will be rendered without page (and without CSS file itself) so element with this class will actually be visible ....
On Tue, 14 Jan 2020 at 15:08, Martin Grigorov <mgrigo...@apache.org> wrote: > On Tue, Jan 14, 2020 at 10:01 AM Maxim Solodovnik <solomax...@gmail.com> > wrote: > > > An related question: > > Will this code > > > > > `org.apache.wicket.core.util.string.ComponentRenderer.renderComponent(Component)` > > work as expected? > > > > This method will render the component with class="wicket--hidden" on its > HTML element. With TagTester you can verify > CSP checks are done only by the browsers. > > > > > > > > On Tue, 14 Jan 2020 at 14:15, Maxim Solodovnik <solomax...@gmail.com> > > wrote: > > > > > Is this comment make sense: > > > > > > https://github.com/apache/wicket/commit/6d91a6a9e5c1d955a53571f9fb0f76262ac5c5d2#r36784645 > > > ? > > > > > > On Tue, 14 Jan 2020 at 14:13, Martin Grigorov <mgrigo...@apache.org> > > > wrote: > > > > > >> On Tue, Jan 14, 2020 at 9:05 AM Maxim Solodovnik < > solomax...@gmail.com> > > >> wrote: > > >> > > >> > Wasn't aware of `hidden` attribute > > >> > (and it seems to be widely supported > > >> > > > >> > > > https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden > > >> > ) > > >> > > > >> > > >> Thanks for the reference, Maxim! > > >> > > >> It says "elements that are descendants of a hidden element are still > > >> active, which means that script elements can still execute and form > > >> elements can still submit" and this is different than display: none. > > >> So we should stick with CSS display! > > >> > > >> > > >> > Thanks :) > > >> > > > >> > On Tue, 14 Jan 2020 at 14:01, Martin Grigorov <mgrigo...@apache.org > > > > >> > wrote: > > >> > > > >> > > Hi, > > >> > > > > >> > > 1) I see that such CSS resource might be used for other needs, not > > >> just > > >> > > this particular case but would it be an option to use "hidden" > > >> attribute > > >> > in > > >> > > this case instead of CSS "display" ? > > >> > > > > >> > > 2) wicket-core.css instead of wicket-base.css ? > > >> > > > > >> > > On Mon, Jan 13, 2020 at 9:43 PM <papega...@apache.org> wrote: > > >> > > > > >> > > > This is an automated email from the ASF dual-hosted git > > repository. > > >> > > > > > >> > > > papegaaij pushed a commit to branch csp > > >> > > > in repository https://gitbox.apache.org/repos/asf/wicket.git > > >> > > > > > >> > > > > > >> > > > The following commit(s) were added to refs/heads/csp by this > push: > > >> > > > new 6d91a6a WICKET-6725: replace display:none by > > >> wicket--hidden > > >> > css > > >> > > > class > > >> > > > 6d91a6a is described below > > >> > > > > > >> > > > commit 6d91a6a9e5c1d955a53571f9fb0f76262ac5c5d2 > > >> > > > Author: Emond Papegaaij <emond.papega...@topicus.nl> > > >> > > > AuthorDate: Mon Jan 13 20:43:01 2020 +0100 > > >> > > > > > >> > > > WICKET-6725: replace display:none by wicket--hidden css > class > > >> > > > --- > > >> > > > .../src/main/java/org/apache/wicket/Component.java | 2 +- > > >> > > > .../src/main/java/org/apache/wicket/Page.java | 11 +++++++ > > >> > > > .../wicket/css/WicketBaseCSSResourceReference.java | 36 > > >> > > > ++++++++++++++++++++++ > > >> > > > .../java/org/apache/wicket/css/wicket-base.css | 3 ++ > > >> > > > .../apache/wicket/settings/ResourceSettings.java | 31 > > >> > > > +++++++++++++++++++ > > >> > > > .../ajax/markup/html/AjaxIndicatorAppender.java | 2 +- > > >> > > > 6 files changed, 83 insertions(+), 2 deletions(-) > > >> > > > > > >> > > > diff --git > > >> a/wicket-core/src/main/java/org/apache/wicket/Component.java > > >> > > > b/wicket-core/src/main/java/org/apache/wicket/Component.java > > >> > > > index 9da8ec5..d2da23b 100644 > > >> > > > --- a/wicket-core/src/main/java/org/apache/wicket/Component.java > > >> > > > +++ b/wicket-core/src/main/java/org/apache/wicket/Component.java > > >> > > > @@ -2367,7 +2367,7 @@ public abstract class Component > > >> > > > response.write(name); > > >> > > > response.write(" id=\""); > > >> > > > response.write(getAjaxRegionMarkupId()); > > >> > > > - response.write("\" style=\"display:none\" > > >> > > > data-wicket-placeholder=\"\"></"); > > >> > > > + response.write("\" class=\"wicket--hidden\" > > >> > > > data-wicket-placeholder=\"\"></"); > > >> > > > response.write(name); > > >> > > > response.write(">"); > > >> > > > } > > >> > > > diff --git > a/wicket-core/src/main/java/org/apache/wicket/Page.java > > >> > > > b/wicket-core/src/main/java/org/apache/wicket/Page.java > > >> > > > index 3f0f5b5..3d70ad8 100644 > > >> > > > --- a/wicket-core/src/main/java/org/apache/wicket/Page.java > > >> > > > +++ b/wicket-core/src/main/java/org/apache/wicket/Page.java > > >> > > > @@ -24,10 +24,13 @@ import java.util.Set; > > >> > > > > > >> > > > import > > org.apache.wicket.authorization.UnauthorizedActionException; > > >> > > > import org.apache.wicket.core.util.lang.WicketObjects; > > >> > > > +import org.apache.wicket.css.WicketBaseCSSResourceReference; > > >> > > > import org.apache.wicket.feedback.FeedbackDelay; > > >> > > > import org.apache.wicket.markup.MarkupException; > > >> > > > import org.apache.wicket.markup.MarkupStream; > > >> > > > import org.apache.wicket.markup.MarkupType; > > >> > > > +import org.apache.wicket.markup.head.CssHeaderItem; > > >> > > > +import org.apache.wicket.markup.head.IHeaderResponse; > > >> > > > import org.apache.wicket.markup.html.WebPage; > > >> > > > import org.apache.wicket.markup.resolver.IComponentResolver; > > >> > > > import org.apache.wicket.model.IModel; > > >> > > > @@ -1003,6 +1006,14 @@ public abstract class Page extends > > >> > MarkupContainer > > >> > > > } > > >> > > > } > > >> > > > > > >> > > > + @Override > > >> > > > + public void renderHead(IHeaderResponse response) > > >> > > > + { > > >> > > > + super.renderHead(response); > > >> > > > + response.render( > > >> > > > + > > >> > > > > > >> > > > > >> > > > >> > > > CssHeaderItem.forReference(getApplication().getResourceSettings().getWicketBaseCSS())); > > >> > > > + } > > >> > > > + > > >> > > > /** > > >> > > > * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO > > NOT > > >> > CALL. > > >> > > > * > > >> > > > diff --git > > >> > > > > > >> > > > > >> > > > >> > > > a/wicket-core/src/main/java/org/apache/wicket/css/WicketBaseCSSResourceReference.java > > >> > > > > > >> > > > > >> > > > >> > > > b/wicket-core/src/main/java/org/apache/wicket/css/WicketBaseCSSResourceReference.java > > >> > > > new file mode 100644 > > >> > > > index 0000000..9247216 > > >> > > > --- /dev/null > > >> > > > +++ > > >> > > > > > >> > > > > >> > > > >> > > > b/wicket-core/src/main/java/org/apache/wicket/css/WicketBaseCSSResourceReference.java > > >> > > > @@ -0,0 +1,36 @@ > > >> > > > +/* > > >> > > > + * Licensed to the Apache Software Foundation (ASF) under one > or > > >> more > > >> > > > + * contributor license agreements. See the NOTICE file > > distributed > > >> > with > > >> > > > + * this work for additional information regarding copyright > > >> ownership. > > >> > > > + * The ASF licenses this file to You under the Apache License, > > >> Version > > >> > > 2.0 > > >> > > > + * (the "License"); you may not use this file except in > > compliance > > >> > with > > >> > > > + * the License. You may obtain a copy of the License at > > >> > > > + * > > >> > > > + * http://www.apache.org/licenses/LICENSE-2.0 > > >> > > > + * > > >> > > > + * Unless required by applicable law or agreed to in writing, > > >> software > > >> > > > + * distributed under the License is distributed on an "AS IS" > > >> BASIS, > > >> > > > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express > > or > > >> > > > implied. > > >> > > > + * See the License for the specific language governing > > permissions > > >> and > > >> > > > + * limitations under the License. > > >> > > > + */ > > >> > > > +package org.apache.wicket.css; > > >> > > > + > > >> > > > +import org.apache.wicket.request.resource.CssResourceReference; > > >> > > > + > > >> > > > +public final class WicketBaseCSSResourceReference extends > > >> > > > CssResourceReference > > >> > > > +{ > > >> > > > + private static final long serialVersionUID = > > >> > > 6795863553105608280L; > > >> > > > + > > >> > > > + private static final WicketBaseCSSResourceReference > > >> INSTANCE = > > >> > > new > > >> > > > WicketBaseCSSResourceReference(); > > >> > > > + > > >> > > > + public static WicketBaseCSSResourceReference get() > > >> > > > + { > > >> > > > + return INSTANCE; > > >> > > > + } > > >> > > > + > > >> > > > + private WicketBaseCSSResourceReference() > > >> > > > + { > > >> > > > + super(WicketBaseCSSResourceReference.class, > > >> > > > "wicket-base.css"); > > >> > > > + } > > >> > > > +} > > >> > > > diff --git > > >> > > > > a/wicket-core/src/main/java/org/apache/wicket/css/wicket-base.css > > >> > > > > b/wicket-core/src/main/java/org/apache/wicket/css/wicket-base.css > > >> > > > new file mode 100644 > > >> > > > index 0000000..9bbdd63 > > >> > > > --- /dev/null > > >> > > > +++ > > >> b/wicket-core/src/main/java/org/apache/wicket/css/wicket-base.css > > >> > > > @@ -0,0 +1,3 @@ > > >> > > > +.wicket--hidden { > > >> > > > + display: none!important; > > >> > > > +} > > >> > > > \ No newline at end of file > > >> > > > diff --git > > >> > > > > > >> > > > > >> > > > >> > > > a/wicket-core/src/main/java/org/apache/wicket/settings/ResourceSettings.java > > >> > > > > > >> > > > > >> > > > >> > > > b/wicket-core/src/main/java/org/apache/wicket/settings/ResourceSettings.java > > >> > > > index b76fbcd..68317f4 100644 > > >> > > > --- > > >> > > > > > >> > > > > >> > > > >> > > > a/wicket-core/src/main/java/org/apache/wicket/settings/ResourceSettings.java > > >> > > > +++ > > >> > > > > > >> > > > > >> > > > >> > > > b/wicket-core/src/main/java/org/apache/wicket/settings/ResourceSettings.java > > >> > > > @@ -29,12 +29,14 @@ import > > >> > > > > > org.apache.wicket.core.util.resource.locator.IResourceStreamLocator; > > >> > > > import > > >> > > > org.apache.wicket.core.util.resource.locator.ResourceStreamLocator; > > >> > > > import > > >> > > > > > >> > > > > >> > > > >> > > > org.apache.wicket.core.util.resource.locator.caching.CachingResourceStreamLocator; > > >> > > > import org.apache.wicket.css.ICssCompressor; > > >> > > > +import org.apache.wicket.css.WicketBaseCSSResourceReference; > > >> > > > import org.apache.wicket.javascript.IJavaScriptCompressor; > > >> > > > import org.apache.wicket.markup.head.PriorityFirstComparator; > > >> > > > import > > >> > > > > > org.apache.wicket.markup.head.ResourceAggregator.RecordedHeaderItem; > > >> > > > import org.apache.wicket.markup.html.IPackageResourceGuard; > > >> > > > import > org.apache.wicket.markup.html.SecurePackageResourceGuard; > > >> > > > import org.apache.wicket.request.http.WebResponse; > > >> > > > +import org.apache.wicket.request.resource.CssResourceReference; > > >> > > > import > > >> > > > > > >> > > > > >> > > > >> > > > org.apache.wicket.request.resource.caching.FilenameWithVersionResourceCachingStrategy; > > >> > > > import > > >> > > > > > org.apache.wicket.request.resource.caching.IResourceCachingStrategy; > > >> > > > import > > >> > > > > > >> > org.apache.wicket.request.resource.caching.NoOpResourceCachingStrategy; > > >> > > > @@ -172,6 +174,8 @@ public class ResourceSettings implements > > >> > > > IPropertiesFactoryContext > > >> > > > false); > > >> > > > > > >> > > > private boolean encodeJSessionId = false; > > >> > > > + > > >> > > > + private CssResourceReference wicketBaseCSS = > > >> > > > WicketBaseCSSResourceReference.get(); > > >> > > > > > >> > > > /** > > >> > > > * Configures Wicket's default ResourceLoaders.<br> > > >> > > > @@ -770,4 +774,31 @@ public class ResourceSettings implements > > >> > > > IPropertiesFactoryContext > > >> > > > this.encodeJSessionId = encodeJSessionId; > > >> > > > return this; > > >> > > > } > > >> > > > + > > >> > > > + /** > > >> > > > + * Returns the resource reference of the base stylesheet > > for > > >> > > > Wicket. This stylesheet contains > > >> > > > + * some lowlevel styling used by Wicket. > > >> > > > + * > > >> > > > + * @return The resource reference of the base stylesheet > > for > > >> > > > Wicket. > > >> > > > + */ > > >> > > > + public CssResourceReference getWicketBaseCSS() > > >> > > > + { > > >> > > > + return wicketBaseCSS; > > >> > > > + } > > >> > > > + > > >> > > > + /** > > >> > > > + * Replaces the base stylesheet for Wicket. Changes made > > to > > >> the > > >> > > > styling can break functionality > > >> > > > + * like {@link > > >> > Component#setOutputMarkupPlaceholderTag(boolean)}, > > >> > > > causing components that should > > >> > > > + * not be visible to be displayed. Make sure the > > replacement > > >> > > > stylesheet has matching definitions > > >> > > > + * for the corresponding sections in the Wicket version. > > >> > > > + * > > >> > > > + * @param wicketBaseCSS > > >> > > > + * The replacement styleheet. > > >> > > > + * @return {@code this} object for chaining > > >> > > > + */ > > >> > > > + public ResourceSettings > > >> setWicketBaseCSS(CssResourceReference > > >> > > > wicketBaseCSS) > > >> > > > + { > > >> > > > + this.wicketBaseCSS = wicketBaseCSS; > > >> > > > + return this; > > >> > > > + } > > >> > > > } > > >> > > > diff --git > > >> > > > > > >> > > > > >> > > > >> > > > a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxIndicatorAppender.java > > >> > > > > > >> > > > > >> > > > >> > > > b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxIndicatorAppender.java > > >> > > > index d0fee97..ab1c0a1 100644 > > >> > > > --- > > >> > > > > > >> > > > > >> > > > >> > > > a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxIndicatorAppender.java > > >> > > > +++ > > >> > > > > > >> > > > > >> > > > >> > > > b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxIndicatorAppender.java > > >> > > > @@ -95,7 +95,7 @@ public class AjaxIndicatorAppender extends > > >> Behavior > > >> > > > super.afterRender(component); > > >> > > > final Response r = component.getResponse(); > > >> > > > > > >> > > > - r.write("<span style=\"display:none;\" > class=\""); > > >> > > > + r.write("<span class=\"wicket--hidden\" > > class=\""); > > >> > > > r.write(getSpanClass()); > > >> > > > r.write("\" "); > > >> > > > r.write("id=\""); > > >> > > > > > >> > > > > > >> > > > > >> > > > >> > > > >> > -- > > >> > WBR > > >> > Maxim aka solomax > > >> > > > >> > > > > > > > > > -- > > > WBR > > > Maxim aka solomax > > > > > > > > > -- > > WBR > > Maxim aka solomax > > > -- WBR Maxim aka solomax