Add a config property for gss in UiBinder. Change-Id: Iaee5a40c1a5ee0a1b98b158ad35dee0740567778
diff --git a/user/src/com/google/gwt/resources/Resources.gwt.xml b/user/src/com/google/gwt/resources/Resources.gwt.xml index 0a94bb5..e8ef2b6 100644 --- a/user/src/com/google/gwt/resources/Resources.gwt.xml +++ b/user/src/com/google/gwt/resources/Resources.gwt.xml
@@ -96,4 +96,8 @@ <!-- Can be set to: strict | lenient | off --> <define-configuration-property name="CssResource.conversionMode" is-multi-valued="false" /> <set-configuration-property name="CssResource.conversionMode" value="strict" /> + + <!-- The default for GSS in UiBinder --> + <define-configuration-property name="CssResource.gssDefaultInUiBinder" is-multi-valued="false" /> + <set-configuration-property name="CssResource.gssDefaultInUiBinder" value="false" /> </module>
diff --git a/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java b/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java index 704cf8e..bbdf3a2 100644 --- a/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java +++ b/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java
@@ -70,6 +70,7 @@ import com.google.gwt.resources.ext.ResourceContext; import com.google.gwt.resources.ext.ResourceGeneratorUtil; import com.google.gwt.resources.ext.SupportsGeneratorResultCaching; +import com.google.gwt.resources.rg.GssResourceGenerator.GssOptions; import com.google.gwt.thirdparty.guava.common.base.Joiner; import com.google.gwt.user.rebind.SourceWriter; import com.google.gwt.user.rebind.StringSourceWriter; @@ -142,7 +143,6 @@ private static final String KEY_RESERVED_PREFIXES = "CssResource.reservedClassPrefixes"; private static final String KEY_SHARED_METHODS = "sharedMethods"; private static final String KEY_STYLE = "CssResource.style"; - private static final String KEY_ENABLE_GSS = "CssResource.enableGss"; /** * This character must not appear in {@link #BASE32_CHARS}. @@ -465,9 +465,11 @@ throws UnableToCompleteException { // if Gss is enabled, defer the call to the Gss generator. - if (checkIfGssEnabled(context, logger)) { + GssOptions gssOptions = GssResourceGenerator.getGssOptions( + context.getGeneratorContext().getPropertyOracle(), logger); + if (gssOptions.isEnabled()) { gssEnabled = true; - gssResourceGenerator = new GssResourceGenerator(); + gssResourceGenerator = new GssResourceGenerator(gssOptions); gssResourceGenerator.init(logger, context); return; } @@ -1224,22 +1226,4 @@ writeSimpleGetter(toImplement, returnExpr, sw); } - - private boolean checkIfGssEnabled(ResourceContext context, TreeLogger logger) - throws UnableToCompleteException { - try { - PropertyOracle propertyOracle = - context.getGeneratorContext().getPropertyOracle(); - - ConfigurationProperty enableGssProp = - propertyOracle.getConfigurationProperty(KEY_ENABLE_GSS); - String enableGss = enableGssProp.getValues().get(0); - - return "true".equals(enableGss); - - } catch (BadPropertyValueException ex) { - logger.log(Type.ERROR, "Unable to determine if GSS need to be used"); - throw new UnableToCompleteException(); - } - } }
diff --git a/user/src/com/google/gwt/resources/rg/GssResourceGenerator.java b/user/src/com/google/gwt/resources/rg/GssResourceGenerator.java index 73520af..89d6b52 100644 --- a/user/src/com/google/gwt/resources/rg/GssResourceGenerator.java +++ b/user/src/com/google/gwt/resources/rg/GssResourceGenerator.java
@@ -150,7 +150,42 @@ public class GssResourceGenerator extends AbstractCssResourceGenerator implements SupportsGeneratorResultCaching { - private enum AutoConversionMode { STRICT, LENIENT, OFF } + /** + * GssOptions contains the values of all configuration properties that can be used with + * GssResource. + */ + public static class GssOptions { + private final boolean enabled; + private final AutoConversionMode autoConversionMode; + private final boolean gssDefaultInUiBinder; + + public GssOptions(boolean enabled, AutoConversionMode autoConversionMode, boolean gssDefaultInUiBinder) { + this.enabled = enabled; + this.autoConversionMode = autoConversionMode; + this.gssDefaultInUiBinder = gssDefaultInUiBinder; + } + + public boolean isEnabled() { + return enabled; + } + + public boolean isGssDefaultInUiBinder() { + return gssDefaultInUiBinder; + } + + public boolean isAutoConversionOff() { + return autoConversionMode == AutoConversionMode.OFF; + } + + public boolean isLenientConversion() { + return autoConversionMode == AutoConversionMode.LENIENT; + } + } + + /** + * Different conversion modes from css to gss. + */ + public enum AutoConversionMode { STRICT, LENIENT, OFF } /* * TODO(dankurka): This is a nasty hack to get the compiler to output all @def's @@ -160,6 +195,9 @@ private static PrintWriter printWriter; private static Set<String> writtenAtDefs = new HashSet<>(); + private static final String KEY_ENABLE_GSS = "CssResource.enableGss"; + private static final String KEY_GSS_DEFAULT_IN_UIBINDER = "CssResource.gssDefaultInUiBinder"; + static { String varFileName = System.getProperty("emitGssVarNameFile"); shouldEmitVariables = varFileName != null; @@ -176,6 +214,40 @@ } } + public static GssOptions getGssOptions(PropertyOracle propertyOracle, TreeLogger logger) throws UnableToCompleteException { + boolean gssEnabled; + boolean gssDefaultInUiBinder; + AutoConversionMode conversionMode; + + try { + ConfigurationProperty enableGssProp = + propertyOracle.getConfigurationProperty(KEY_ENABLE_GSS); + String enableGss = enableGssProp.getValues().get(0); + gssEnabled = Boolean.parseBoolean(enableGss); + } catch (BadPropertyValueException ex) { + logger.log(Type.ERROR, "Unable to determine if GSS need to be used"); + throw new UnableToCompleteException(); + } + try { + conversionMode = Enum.valueOf(AutoConversionMode.class, propertyOracle + .getConfigurationProperty(KEY_CONVERSION_MODE).getValues().get(0) + .toUpperCase(Locale.ROOT)); + } catch (BadPropertyValueException ex) { + logger.log(Type.ERROR, "Unable to conversion mode for GSS"); + throw new UnableToCompleteException(); + } + try { + ConfigurationProperty uiBinderGssDefaultProp = + propertyOracle.getConfigurationProperty(KEY_GSS_DEFAULT_IN_UIBINDER); + String uiBinderGssDefaultValue = uiBinderGssDefaultProp.getValues().get(0); + gssDefaultInUiBinder = Boolean.parseBoolean(uiBinderGssDefaultValue); + } catch (BadPropertyValueException ex) { + logger.log(Type.ERROR, "Unable to determine default for GSS in UiBinder"); + throw new UnableToCompleteException(); + } + return new GssOptions(gssEnabled, conversionMode, gssDefaultInUiBinder); + } + private static synchronized void write(Set<String> variables) { for (String atDef : variables) { if (writtenAtDefs.add(atDef)) { @@ -389,7 +461,11 @@ private Set<String> allowedAtRules; private Map<JClassType, Map<String, String>> replacementsByClassAndMethod; private Map<JMethod, String> replacementsForSharedMethods; - private AutoConversionMode conversionMode; + private final GssOptions gssOptions; + + public GssResourceGenerator(GssOptions gssOptions) { + this.gssOptions = gssOptions; + } @Override public String createAssignment(TreeLogger logger, ResourceContext context, JMethod method) @@ -473,10 +549,6 @@ .getConfigurationProperty(ALLOWED_FUNCTIONS); allowedNonStandardFunctions.addAll(allowedFunctionsProperty.getValues()); - conversionMode = Enum.valueOf(AutoConversionMode.class, propertyOracle - .getConfigurationProperty(KEY_CONVERSION_MODE).getValues().get(0) - .toUpperCase(Locale.ROOT)); - ClientBundleRequirements requirements = context.getRequirements(); requirements.addConfigurationProperty(KEY_STYLE); requirements.addConfigurationProperty(KEY_OBFUSCATION_PREFIX); @@ -520,10 +592,6 @@ replacementsForSharedMethods = context.getCachedData(KEY_SHARED_METHODS, Map.class); } - private boolean isLenientConversion() { - return conversionMode == AutoConversionMode.LENIENT; - } - private String getObfuscationPrefix(PropertyOracle propertyOracle, ResourceContext context) throws BadPropertyValueException { String prefix = propertyOracle.getConfigurationProperty(KEY_OBFUSCATION_PREFIX) @@ -750,7 +818,7 @@ .runPass(); new ValidateRuntimeConditionalNode(cssTree.getVisitController(), errorManager, - isLenientConversion()).runPass(); + gssOptions.isLenientConversion()).runPass(); // Don't continue if errors exist checkErrors(); @@ -866,7 +934,7 @@ // assert that we only support either gss or css on one resource. boolean css = ensureEitherCssOrGss(resources, logger); - if (css && conversionMode == AutoConversionMode.OFF) { + if (css && gssOptions.isAutoConversionOff()) { // TODO(dankurka): add link explaining the situation in detail. logger.log(Type.ERROR, "Your ClientBundle is referencing css files instead of gss. " @@ -992,8 +1060,8 @@ ConfigurationPropertyMatcher configurationPropertyMatcher = new ConfigurationPropertyMatcher(context, logger); - Css2Gss converter = new Css2Gss(tempFile.toURI().toURL(), logger, isLenientConversion(), - configurationPropertyMatcher); + Css2Gss converter = new Css2Gss(tempFile.toURI().toURL(), logger, + gssOptions.isLenientConversion(), configurationPropertyMatcher); String gss = converter.toGss(); @@ -1005,7 +1073,7 @@ } catch (Css2GssConversionException e) { String message = "An error occurs during the automatic conversion: " + e.getMessage(); - if (!isLenientConversion()) { + if (!gssOptions.isLenientConversion()) { message += "\n You should try to change the faulty css to fix this error. If you are " + "unable to change the css, you can setup the automatic conversion to be lenient. Add " + "the following line to your gwt.xml file: " +
diff --git a/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java b/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java index 590e10c..ccbc413 100644 --- a/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java +++ b/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java
@@ -1,16 +1,14 @@ /* * Copyright 2008 Google Inc. * - * Licensed 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 + * Licensed 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 + * 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 com.google.gwt.uibinder.rebind; @@ -28,6 +26,8 @@ import com.google.gwt.dev.resource.Resource; import com.google.gwt.dev.resource.ResourceOracle; import com.google.gwt.dev.util.Util; +import com.google.gwt.resources.rg.GssResourceGenerator; +import com.google.gwt.resources.rg.GssResourceGenerator.GssOptions; import com.google.gwt.uibinder.client.UiTemplate; import com.google.gwt.uibinder.rebind.messages.MessagesWriter; import com.google.gwt.uibinder.rebind.model.ImplicitClientBundle; @@ -42,7 +42,9 @@ /** * Generator for implementations of {@link com.google.gwt.uibinder.client.UiBinder}. */ -@RunsLocal(requiresProperties = {"UiBinder.useSafeHtmlTemplates", "UiBinder.useLazyWidgetBuilders"}) +@RunsLocal(requiresProperties = { + "UiBinder.useSafeHtmlTemplates", "UiBinder.useLazyWidgetBuilders", "CssResource.enableGss", + "CssResource.conversionMode", "CssResource.gssDefaultInUiBinder"}) public class UiBinderGenerator extends Generator { private static final String BINDER_URI = "urn:ui:com.google.gwt.uibinder"; @@ -56,11 +58,11 @@ private static final String XSS_SAFE_CONFIG_PROPERTY = "UiBinder.useSafeHtmlTemplates"; /** - * Given a UiBinder interface, return the path to its ui.xml file, suitable - * for any classloader to find it as a resource. + * Given a UiBinder interface, return the path to its ui.xml file, suitable for any classloader to + * find it as a resource. */ - private static String deduceTemplateFile(MortalLogger logger, - JClassType interfaceType) throws UnableToCompleteException { + private static String deduceTemplateFile(MortalLogger logger, JClassType interfaceType) + throws UnableToCompleteException { String templateName = null; UiTemplate annotation = interfaceType.getAnnotation(UiTemplate.class); if (annotation == null) { @@ -77,14 +79,12 @@ } /* - * If the template file name (minus suffix) has no dots, make it relative - * to the binder's package, otherwise slashify the dots + * If the template file name (minus suffix) has no dots, make it relative to the binder's + * package, otherwise slashify the dots */ - String unsuffixed = templateName.substring(0, - templateName.lastIndexOf(TEMPLATE_SUFFIX)); + String unsuffixed = templateName.substring(0, templateName.lastIndexOf(TEMPLATE_SUFFIX)); if (!unsuffixed.contains(".")) { - templateName = slashify(interfaceType.getPackage().getName()) + "/" - + templateName; + templateName = slashify(interfaceType.getPackage().getName()) + "/" + templateName; } else { templateName = slashify(unsuffixed) + TEMPLATE_SUFFIX; } @@ -99,8 +99,8 @@ private final UiBinderContext uiBinderCtx = new UiBinderContext(); @Override - public String generate(TreeLogger logger, GeneratorContext genCtx, - String fqInterfaceName) throws UnableToCompleteException { + public String generate(TreeLogger logger, GeneratorContext genCtx, String fqInterfaceName) + throws UnableToCompleteException { TypeOracle oracle = genCtx.getTypeOracle(); JClassType interfaceType; @@ -121,8 +121,7 @@ implName = designTime.getImplName(implName); String packageName = interfaceType.getPackage().getName(); - PrintWriterManager writers = new PrintWriterManager(genCtx, logger, - packageName); + PrintWriterManager writers = new PrintWriterManager(genCtx, logger, packageName); PrintWriter printWriter = writers.tryToMakePrintWriterFor(implName); if (printWriter != null) { @@ -132,8 +131,8 @@ return packageName + "." + implName; } - private Boolean extractConfigProperty(MortalLogger logger, - PropertyOracle propertyOracle, String configProperty, boolean defaultValue) { + private Boolean extractConfigProperty(MortalLogger logger, PropertyOracle propertyOracle, + String configProperty, boolean defaultValue) { List<String> values; try { values = propertyOracle.getConfigurationProperty(configProperty).getValues(); @@ -156,21 +155,24 @@ PrintWriter binderPrintWriter, TreeLogger treeLogger, TypeOracle oracle, ResourceOracle resourceOracle, PropertyOracle propertyOracle, PrintWriterManager writerManager, DesignTimeUtils designTime) - throws UnableToCompleteException { + throws UnableToCompleteException { MortalLogger logger = new MortalLogger(treeLogger); String templatePath = deduceTemplateFile(logger, interfaceType); - MessagesWriter messages = new MessagesWriter(oracle, BINDER_URI, logger, - templatePath, interfaceType.getPackage().getName(), implName); + MessagesWriter messages = new MessagesWriter(oracle, BINDER_URI, logger, templatePath, + interfaceType.getPackage().getName(), implName); boolean useLazyWidgetBuilders = useLazyWidgetBuilders(logger, propertyOracle) && !designTime.isDesignTime(); FieldManager fieldManager = new FieldManager(oracle, logger, useLazyWidgetBuilders); + GssOptions gssOptions = + GssResourceGenerator.getGssOptions(propertyOracle, logger.getTreeLogger()); + UiBinderWriter uiBinderWriter = new UiBinderWriter(interfaceType, implName, templatePath, oracle, logger, fieldManager, messages, designTime, uiBinderCtx, useSafeHtmlTemplates(logger, propertyOracle), useLazyWidgetBuilders, BINDER_URI, - resourceOracle); + resourceOracle, gssOptions); Resource resource = getTemplateResource(logger, templatePath, resourceOracle); @@ -203,14 +205,12 @@ if (content == null) { content = Util.readStreamAsString(resource.openContents()); } - doc = new W3cDomHelper(logger.getTreeLogger(), resourceOracle).documentFor( - content, resource.getPath()); + doc = new W3cDomHelper(logger.getTreeLogger(), resourceOracle).documentFor(content, + resource.getPath()); } catch (IOException iex) { logger.die("Error opening resource:" + resource.getLocation(), iex); } catch (SAXParseException e) { - logger.die( - "Error parsing XML (line " + e.getLineNumber() + "): " - + e.getMessage(), e); + logger.die("Error parsing XML (line " + e.getLineNumber() + "): " + e.getMessage(), e); } return doc; } @@ -225,24 +225,23 @@ } private Boolean useLazyWidgetBuilders(MortalLogger logger, PropertyOracle propertyOracle) { - Boolean rtn = extractConfigProperty(logger, propertyOracle, LAZY_WIDGET_BUILDERS_PROPERTY, true); + Boolean rtn = + extractConfigProperty(logger, propertyOracle, LAZY_WIDGET_BUILDERS_PROPERTY, true); if (!gaveLazyBuildersWarning && !rtn) { - logger.warn("Configuration property %s is false. Deprecated code generation is in play. " + - "This property will soon become a no-op.", - LAZY_WIDGET_BUILDERS_PROPERTY); + logger.warn("Configuration property %s is false. Deprecated code generation is in play. " + + "This property will soon become a no-op.", LAZY_WIDGET_BUILDERS_PROPERTY); gaveLazyBuildersWarning = true; } return rtn; } private Boolean useSafeHtmlTemplates(MortalLogger logger, PropertyOracle propertyOracle) { - Boolean rtn = extractConfigProperty( - logger, propertyOracle, XSS_SAFE_CONFIG_PROPERTY, true); + Boolean rtn = extractConfigProperty(logger, propertyOracle, XSS_SAFE_CONFIG_PROPERTY, true); if (!gaveSafeHtmlWarning && !rtn) { logger.warn("Configuration property %s is false! UiBinder SafeHtml integration is off, " - + "leaving your users more vulnerable to cross-site scripting attacks. This property " + - "will soon become a no-op, and SafeHtml integration will always be on.", + + "leaving your users more vulnerable to cross-site scripting attacks. This property " + + "will soon become a no-op, and SafeHtml integration will always be on.", XSS_SAFE_CONFIG_PROPERTY); gaveSafeHtmlWarning = true; }
diff --git a/user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java b/user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java index a09b8a5..4b01963 100644 --- a/user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java +++ b/user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java
@@ -28,6 +28,7 @@ import com.google.gwt.resources.client.DataResource; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.resources.client.ImageResource.RepeatStyle; +import com.google.gwt.resources.rg.GssResourceGenerator.GssOptions; import com.google.gwt.uibinder.elementparsers.BeanParser; import com.google.gwt.uibinder.elementparsers.SimpleInterpeter; import com.google.gwt.uibinder.rebind.messages.MessagesWriter; @@ -114,10 +115,12 @@ private final String binderUri; private final UiBinderContext uiBinderContext; private final ResourceOracle resourceOracle; + private GssOptions gssOptions; public UiBinderParser(UiBinderWriter writer, MessagesWriter messagesWriter, FieldManager fieldManager, TypeOracle oracle, ImplicitClientBundle bundleClass, - String binderUri, UiBinderContext uiBinderContext, ResourceOracle resourceOracle) { + String binderUri, UiBinderContext uiBinderContext, ResourceOracle resourceOracle, + GssOptions gssOptions) { this.writer = writer; this.oracle = oracle; this.messagesWriter = messagesWriter; @@ -129,6 +132,7 @@ this.dataResourceType = oracle.findType(DataResource.class.getCanonicalName()); this.binderUri = binderUri; this.resourceOracle = resourceOracle; + this.gssOptions = gssOptions; } /** @@ -136,6 +140,7 @@ * the document. */ public FieldWriter parse(XMLElement elem) throws UnableToCompleteException { + if (!writer.isBinderElement(elem)) { writer.die(elem, "Bad prefix on <%s:%s>? The root element must be in " + "xml namespace \"%s\" (usually with prefix \"ui:\"), " @@ -452,8 +457,7 @@ importTypes.add(findCssResourceType(elem, type)); } - Boolean gss = elem.consumeBooleanConstantAttribute(GSS_ATTRIBUTE); - + boolean gss = determineGssForFile(elem.consumeBooleanConstantAttribute(GSS_ATTRIBUTE)); ImplicitCssResource cssMethod = bundleClass.createCssResource(name, source, publicType, body, importTypes, gss, resourceOracle); @@ -463,6 +467,29 @@ cssMethod.getName())); } + private boolean determineGssForFile(Boolean attributeInUiBinderFile) throws UnableToCompleteException { + if (attributeInUiBinderFile == null) { + if (!gssOptions.isEnabled() && gssOptions.isGssDefaultInUiBinder()) { + writer.die("Invalid combination of configuration properties. " + + "CssResource.enableGss is false, but CssResource.uiBinderGssDefault is true"); + } + return gssOptions.isGssDefaultInUiBinder(); + } + + if (Boolean.TRUE.equals(attributeInUiBinderFile)) { + if (!gssOptions.isEnabled()) { + writer.die("UiBinder file has attribute gss=\"true\", but GSS is disabled globally"); + } + return true; + } + + if (gssOptions.isEnabled() && gssOptions.isAutoConversionOff()) { + writer.die("UiBinder file has attribute gss=\"false\", " + + "but CssResource.conversionMode is \"off\""); + } + return false; + } + private JClassType findCssResourceType(XMLElement elem, String typeName) throws UnableToCompleteException { JClassType publicType = oracle.findType(typeName);
diff --git a/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java b/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java index 8e05ae8..d986e64 100644 --- a/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java +++ b/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
@@ -30,6 +30,7 @@ import com.google.gwt.event.dom.client.DomEvent; import com.google.gwt.event.dom.client.DomEvent.Type; import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.rg.GssResourceGenerator.GssOptions; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.uibinder.attributeparsers.AttributeParsers; import com.google.gwt.uibinder.client.LazyDomElement; @@ -360,11 +361,13 @@ private final ResourceOracle resourceOracle; + private final GssOptions gssOptions; + public UiBinderWriter(JClassType baseClass, String implClassName, String templatePath, TypeOracle oracle, MortalLogger logger, FieldManager fieldManager, MessagesWriter messagesWriter, DesignTimeUtils designTime, UiBinderContext uiBinderCtx, boolean useSafeHtmlTemplates, boolean useLazyWidgetBuilders, String binderUri, - ResourceOracle resourceOracle) throws UnableToCompleteException { + ResourceOracle resourceOracle, GssOptions gssOptions) throws UnableToCompleteException { this.baseClass = baseClass; this.implClassName = implClassName; this.oracle = oracle; @@ -378,6 +381,7 @@ this.useLazyWidgetBuilders = useLazyWidgetBuilders; this.binderUri = binderUri; this.resourceOracle = resourceOracle; + this.gssOptions = gssOptions; this.htmlTemplates = new HtmlTemplatesWriter(fieldManager, logger); @@ -1363,7 +1367,7 @@ // Allow GWT.create() to init the field, the default behavior FieldWriter rootField = new UiBinderParser(this, messages, fieldManager, oracle, bundleClass, - binderUri, uiBinderCtx, resourceOracle).parse(elem); + binderUri, uiBinderCtx, resourceOracle, gssOptions).parse(elem); fieldManager.validate();
diff --git a/user/src/com/google/gwt/uibinder/rebind/model/ImplicitCssResource.java b/user/src/com/google/gwt/uibinder/rebind/model/ImplicitCssResource.java index a2f3abf..346c0a4 100644 --- a/user/src/com/google/gwt/uibinder/rebind/model/ImplicitCssResource.java +++ b/user/src/com/google/gwt/uibinder/rebind/model/ImplicitCssResource.java
@@ -86,7 +86,7 @@ */ public ImplicitCssResource(String packageName, String className, String name, String[] source, JClassType extendedInterface, String body, - MortalLogger logger, Set<JClassType> importTypes, Boolean gss, + MortalLogger logger, Set<JClassType> importTypes, boolean gss, ResourceOracle resourceOracle) { this.packageName = packageName; this.className = className; @@ -96,7 +96,7 @@ this.logger = logger; this.imports = Collections.unmodifiableSet(importTypes); this.resourceOracle = resourceOracle; - this.gss = Boolean.TRUE.equals(gss); + this.gss = gss; sources = Arrays.asList(source); }
diff --git a/user/test/com/google/gwt/uibinder/elementparsers/ElementParserTester.java b/user/test/com/google/gwt/uibinder/elementparsers/ElementParserTester.java index 15ce2ac..ca004a9 100644 --- a/user/test/com/google/gwt/uibinder/elementparsers/ElementParserTester.java +++ b/user/test/com/google/gwt/uibinder/elementparsers/ElementParserTester.java
@@ -26,6 +26,8 @@ import com.google.gwt.dev.javac.testing.impl.MockResourceOracle; import com.google.gwt.dev.resource.Resource; import com.google.gwt.dev.util.log.PrintWriterTreeLogger; +import com.google.gwt.resources.rg.GssResourceGenerator.AutoConversionMode; +import com.google.gwt.resources.rg.GssResourceGenerator.GssOptions; import com.google.gwt.uibinder.attributeparsers.AttributeParsers; import com.google.gwt.uibinder.rebind.DesignTimeUtilsStub; import com.google.gwt.uibinder.rebind.FieldManager; @@ -110,8 +112,9 @@ MessagesWriter messages = new MessagesWriter(types, BINDER_URI, logger, templatePath, baseType.getPackage().getName(), implName); - writer = new MockUiBinderWriter(baseType, implName, templatePath, types, - logger, fieldManager, messages, BINDER_URI, new MockResourceOracle()); + writer = new MockUiBinderWriter(baseType, implName, templatePath, types, logger, fieldManager, + messages, BINDER_URI, new MockResourceOracle(), + new GssOptions(true, AutoConversionMode.OFF, true)); fieldManager.registerField(types.findType(parsedTypeName), FIELD_NAME); parsedType = types.findType(parsedTypeName); }
diff --git a/user/test/com/google/gwt/uibinder/elementparsers/MockUiBinderWriter.java b/user/test/com/google/gwt/uibinder/elementparsers/MockUiBinderWriter.java index c7b4af1..ccf91ab 100644 --- a/user/test/com/google/gwt/uibinder/elementparsers/MockUiBinderWriter.java +++ b/user/test/com/google/gwt/uibinder/elementparsers/MockUiBinderWriter.java
@@ -19,6 +19,7 @@ import com.google.gwt.core.ext.typeinfo.JClassType; import com.google.gwt.core.ext.typeinfo.TypeOracle; import com.google.gwt.dev.resource.ResourceOracle; +import com.google.gwt.resources.rg.GssResourceGenerator.GssOptions; import com.google.gwt.uibinder.rebind.DesignTimeUtilsStub; import com.google.gwt.uibinder.rebind.FieldManager; import com.google.gwt.uibinder.rebind.FieldWriter; @@ -36,10 +37,11 @@ public MockUiBinderWriter(JClassType baseClass, String implClassName, String templatePath, TypeOracle oracle, MortalLogger logger, FieldManager fieldManager, - MessagesWriter messagesWriter, String binderUri, ResourceOracle resourceOracle) - throws UnableToCompleteException { + MessagesWriter messagesWriter, String binderUri, ResourceOracle resourceOracle, + GssOptions gssOptions) throws UnableToCompleteException { super(baseClass, implClassName, templatePath, oracle, logger, fieldManager, messagesWriter, - DesignTimeUtilsStub.EMPTY, new UiBinderContext(), true, false, binderUri, resourceOracle); + DesignTimeUtilsStub.EMPTY, new UiBinderContext(), true, false, binderUri, resourceOracle, + gssOptions); } @Override
diff --git a/user/test/com/google/gwt/uibinder/rebind/AbstractUiBinderWriterTest.java b/user/test/com/google/gwt/uibinder/rebind/AbstractUiBinderWriterTest.java index bc825b0..205f2df 100644 --- a/user/test/com/google/gwt/uibinder/rebind/AbstractUiBinderWriterTest.java +++ b/user/test/com/google/gwt/uibinder/rebind/AbstractUiBinderWriterTest.java
@@ -27,6 +27,8 @@ import com.google.gwt.dev.resource.ResourceOracle; import com.google.gwt.dev.util.collect.HashSet; import com.google.gwt.dev.util.log.PrintWriterTreeLogger; +import com.google.gwt.resources.rg.GssResourceGenerator.AutoConversionMode; +import com.google.gwt.resources.rg.GssResourceGenerator.GssOptions; import com.google.gwt.uibinder.attributeparsers.AttributeParsers; import com.google.gwt.uibinder.rebind.messages.MessagesWriter; import com.google.gwt.uibinder.test.UiJavaResources; @@ -189,10 +191,11 @@ new MessagesWriter(types, BINDER_URI, logger, rendererClass.getPath(), "rendererPackage", "rendererClassName"); ResourceOracle resourceOracle = new MockResourceOracle(); + GssOptions gssOptions = new GssOptions(true, AutoConversionMode.OFF, true); writer = new UiBinderWriter(aClass, "foo", "", types, logger, fieldManager, messages, - DesignTimeUtilsStub.EMPTY, uiBinderCtx, true, true, BINDER_URI, resourceOracle); + DesignTimeUtilsStub.EMPTY, uiBinderCtx, true, true, BINDER_URI, resourceOracle, gssOptions); parser = new UiBinderParser(writer, messages, fieldManager, types, null, BINDER_URI, - new UiBinderContext(), resourceOracle); + new UiBinderContext(), resourceOracle, gssOptions); designTime.rememberPathForElements(doc); } } \ No newline at end of file
diff --git a/user/test/com/google/gwt/uibinder/rebind/UiBinderParserUiWithTest.java b/user/test/com/google/gwt/uibinder/rebind/UiBinderParserUiWithTest.java index 5359210..f269ea9 100644 --- a/user/test/com/google/gwt/uibinder/rebind/UiBinderParserUiWithTest.java +++ b/user/test/com/google/gwt/uibinder/rebind/UiBinderParserUiWithTest.java
@@ -26,6 +26,8 @@ import com.google.gwt.dev.resource.ResourceOracle; import com.google.gwt.dev.util.collect.HashSet; import com.google.gwt.dev.util.log.PrintWriterTreeLogger; +import com.google.gwt.resources.rg.GssResourceGenerator.AutoConversionMode; +import com.google.gwt.resources.rg.GssResourceGenerator.GssOptions; import com.google.gwt.uibinder.attributeparsers.AttributeParsers; import com.google.gwt.uibinder.test.UiJavaResources; @@ -277,10 +279,12 @@ elm = elemProvider.get(item); JClassType aClass = types.findType(baseClass); ResourceOracle resourceOracle = new MockResourceOracle(); + GssOptions gssOptions = new GssOptions(true, AutoConversionMode.OFF, true); writer = new UiBinderWriter(aClass, "foo", "", types, logger, fieldManager, null, - DesignTimeUtilsStub.EMPTY, new UiBinderContext(), true, true, "", resourceOracle); + DesignTimeUtilsStub.EMPTY, new UiBinderContext(), true, true, "", resourceOracle, + gssOptions); parser = new UiBinderParser(writer, null, fieldManager, types, null, "", new UiBinderContext(), - resourceOracle); + resourceOracle, gssOptions); designTime.rememberPathForElements(doc); UiBinderParser.Resource.WITH.create(parser, elm); }