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 >