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);
}