Rollback Issue 1442804. Causes build breakage.

Review at http://gwt-code-reviews.appspot.com/1447808


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10213 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/uibinder/UiBinder.gwt.xml b/user/src/com/google/gwt/uibinder/UiBinder.gwt.xml
index 3559f99..50cbc5b 100644
--- a/user/src/com/google/gwt/uibinder/UiBinder.gwt.xml
+++ b/user/src/com/google/gwt/uibinder/UiBinder.gwt.xml
@@ -34,10 +34,6 @@
   <set-configuration-property name="UiBinder.useLazyWidgetBuilders" value="false"/>
 
   <generate-with class="com.google.gwt.uibinder.rebind.UiBinderGenerator">
-    <when-type-assignable class="com.google.gwt.text.shared.SafeHtmlRenderer"/>
-  </generate-with>
-
-  <generate-with class="com.google.gwt.uibinder.rebind.UiBinderGenerator">
     <when-type-assignable class="com.google.gwt.uibinder.client.UiBinder"/>
   </generate-with>
 </module>
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/AttachableHTMLPanelParser.java b/user/src/com/google/gwt/uibinder/elementparsers/AttachableHTMLPanelParser.java
index aaef6a0..4a640d8 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/AttachableHTMLPanelParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/AttachableHTMLPanelParser.java
@@ -77,7 +77,7 @@
           "AttachableHTMLPanel does not support custom root elements yet.");
     }
 
-    writer.setFieldInitializerAsConstructor(fieldName, type, writer.declareTemplateCall(html, fieldName));
+    writer.setFieldInitializerAsConstructor(fieldName, type, writer.declareTemplateCall(html));
   }
 
   /**
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/CustomButtonParser.java b/user/src/com/google/gwt/uibinder/elementparsers/CustomButtonParser.java
index 7dfe858..bb7d54b 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/CustomButtonParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/CustomButtonParser.java
@@ -69,8 +69,7 @@
         String innerHtml = child.consumeInnerHtml(interpreter);
         if (innerHtml.length() > 0) {
           writer.addStatement("%s.%s().setHTML(%s);", fieldName,
-              faceNameGetter(faceName), writer.declareTemplateCall(innerHtml,
-                  fieldName));
+              faceNameGetter(faceName), writer.declareTemplateCall(innerHtml));
         }
 
         if (child.hasAttribute("image")) {
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/DialogBoxParser.java b/user/src/com/google/gwt/uibinder/elementparsers/DialogBoxParser.java
index 211aa80..7f764de 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/DialogBoxParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/DialogBoxParser.java
@@ -77,8 +77,7 @@
     handleConstructorArgs(elem, fieldName, type, writer, customCaption);
 
     if (caption != null) {
-      writer.addStatement("%s.setHTML(%s);", fieldName,
-          writer.declareTemplateCall(caption, fieldName));
+      writer.addStatement("%s.setHTML(%s);", fieldName, writer.declareTemplateCall(caption));
     }
     if (body != null) {
       writer.addStatement("%s.setWidget(%s);", fieldName, body);
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/DomElementParser.java b/user/src/com/google/gwt/uibinder/elementparsers/DomElementParser.java
index 3428485..ee40b47 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/DomElementParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/DomElementParser.java
@@ -42,6 +42,6 @@
 
     writer.setFieldInitializer(fieldName, String.format(
         "(%1$s) UiBinderUtil.fromHtml(%2$s)",
-        type.getQualifiedSourceName(), writer.declareTemplateCall(html, fieldName)));
+        type.getQualifiedSourceName(), writer.declareTemplateCall(html)));
   }
 }
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/GridParser.java b/user/src/com/google/gwt/uibinder/elementparsers/GridParser.java
index 37d94ba..ae4c658 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/GridParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/GridParser.java
@@ -128,7 +128,7 @@
             writer.addStatement("%s.setHTML(%s, %s, %s);", fieldName,
                 Integer.toString(matrix.indexOf(row)),
                 Integer.toString(row.getColumns().indexOf(column)),
-                writer.declareTemplateCall(column.getContent(), fieldName));
+                writer.declareTemplateCall(column.getContent()));
           }
           if (column.getTagName().equals(CUSTOMCELL_TAG)) {
             writer.addStatement("%s.setWidget(%s, %s, %s);", fieldName,
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/HTMLPanelParser.java b/user/src/com/google/gwt/uibinder/elementparsers/HTMLPanelParser.java
index c093680..83d5d40 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/HTMLPanelParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/HTMLPanelParser.java
@@ -59,11 +59,10 @@
     String customTag = elem.consumeStringAttribute("tag", null);
 
     if (null == customTag) {
-      writer.setFieldInitializerAsConstructor(fieldName, type,
-          writer.declareTemplateCall(html, fieldName));
+      writer.setFieldInitializerAsConstructor(fieldName, type, writer.declareTemplateCall(html));
     } else {
       writer.setFieldInitializerAsConstructor(fieldName, type, customTag,
-          writer.declareTemplateCall(html, fieldName));
+          writer.declareTemplateCall(html));
     }
   }
 
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/HasHTMLParser.java b/user/src/com/google/gwt/uibinder/elementparsers/HasHTMLParser.java
index cfdf40f..bcc24bf 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/HasHTMLParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/HasHTMLParser.java
@@ -35,8 +35,7 @@
     writer.endAttachedSection();
     // TODO(jgw): throw an error if there's a conflicting 'html' attribute.
     if (html.trim().length() > 0) {
-      writer.genPropertySet(fieldName, "HTML", writer.declareTemplateCall(html,
-          fieldName));
+      writer.genPropertySet(fieldName, "HTML", writer.declareTemplateCall(html));
     }
   }
 }
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/StackLayoutPanelParser.java b/user/src/com/google/gwt/uibinder/elementparsers/StackLayoutPanelParser.java
index 00f3ffb..c4bbd2e 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/StackLayoutPanelParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/StackLayoutPanelParser.java
@@ -76,7 +76,7 @@
         String size = children.header.consumeRequiredDoubleAttribute("size");
         String html = children.header.consumeInnerHtml(htmlInt);
         writer.addStatement("%s.add(%s, %s, true, %s);", fieldName,
-            childFieldName, writer.declareTemplateCall(html, fieldName), size);
+            childFieldName, writer.declareTemplateCall(html), size);
       } else if (children.customHeader != null) {
         XMLElement headerElement = children.customHeader.consumeSingleChildElement();
         String size = children.customHeader.consumeRequiredDoubleAttribute("size");
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/TabLayoutPanelParser.java b/user/src/com/google/gwt/uibinder/elementparsers/TabLayoutPanelParser.java
index 0eceec0..e5447df 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/TabLayoutPanelParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/TabLayoutPanelParser.java
@@ -79,7 +79,7 @@
             writer, fieldName);
         String html = children.header.consumeInnerHtml(htmlInt);
         writer.addStatement("%s.add(%s, %s, true);", fieldName,
-            childFieldName, writer.declareTemplateCall(html, fieldName));
+            childFieldName, writer.declareTemplateCall(html));
       } else if (children.customHeader != null) {
         XMLElement headerElement = children.customHeader.consumeSingleChildElement();
 
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/TabPanelParser.java b/user/src/com/google/gwt/uibinder/elementparsers/TabPanelParser.java
index a1736b0..c7e45f6 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/TabPanelParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/TabPanelParser.java
@@ -70,7 +70,7 @@
       }
       if (tabHTML != null) {
         writer.addStatement("%1$s.add(%2$s, %3$s, true);", fieldName,
-            childFieldName, writer.declareTemplateCall(tabHTML, fieldName));
+            childFieldName, writer.declareTemplateCall(tabHTML));
       } else if (tabCaption != null) {
         writer.addStatement("%1$s.add(%2$s, %3$s);", fieldName, childFieldName,
             tabCaption);
diff --git a/user/src/com/google/gwt/uibinder/rebind/AbstractFieldWriter.java b/user/src/com/google/gwt/uibinder/rebind/AbstractFieldWriter.java
index 04b4ccf..8eb5814 100644
--- a/user/src/com/google/gwt/uibinder/rebind/AbstractFieldWriter.java
+++ b/user/src/com/google/gwt/uibinder/rebind/AbstractFieldWriter.java
@@ -60,7 +60,6 @@
   private int buildPrecedence;
   private final MortalLogger logger;
   private final FieldWriterType fieldType;
-  private String html;
 
   public AbstractFieldWriter(String name, FieldWriterType fieldType, MortalLogger logger) {
     if (name == null) {
@@ -96,9 +95,6 @@
   public FieldWriterType getFieldType() {
     return fieldType;
   }
-  public String getHtml() {
-    return html + ".asString()";
-  }  
 
   public String getInitializer() {
     return initializer;
@@ -119,10 +115,6 @@
     return getReturnType(getAssignableType(), pathList, logger);
   }
 
-  public String getSafeHtml() {
-    return html;
-  }
-  
   public void needs(FieldWriter f) {
     needs.add(f);
   }
@@ -132,10 +124,6 @@
     this.buildPrecedence = precedence;
   }
 
-  public void setHtml(String html) {
-    this.html = html;
-  }
-
   public void setInitializer(String initializer) {
     this.initializer = initializer;
   }
diff --git a/user/src/com/google/gwt/uibinder/rebind/FieldWriter.java b/user/src/com/google/gwt/uibinder/rebind/FieldWriter.java
index dd9851d..6ed3527 100644
--- a/user/src/com/google/gwt/uibinder/rebind/FieldWriter.java
+++ b/user/src/com/google/gwt/uibinder/rebind/FieldWriter.java
@@ -99,11 +99,6 @@
   FieldWriterType getFieldType();
 
   /**
-   * Returns the string html representation of the field.
-   */
-  String getHtml();
-
-  /**
    * Returns the custom initializer for this field, or null if it is not set.
    */
   String getInitializer();
@@ -132,11 +127,6 @@
   JType getReturnType(String[] path, MonitoredLogger logger);
 
   /**
-   * Returns the string SafeHtml representation of the field.
-   */
-  String getSafeHtml();
-
-  /**
    * Declares that the receiver depends upon the given field.
    */
   void needs(FieldWriter f);
@@ -150,11 +140,6 @@
   void setBuildPrecedence(int precedence);
 
   /**
-   * Sets the html representation of the field for applicable field types.
-   */
-  void setHtml(String html);
-
-  /**
    * Used to provide an initializer string to use instead of a
    * {@link com.google.gwt.core.client.GWT#create} call. Note that this is an
    * RHS expression. Don't include the leading '=', and don't end it with ';'.
diff --git a/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java b/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
index 2dcc917..4a66155 100644
--- a/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
+++ b/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
@@ -23,7 +23,6 @@
 import com.google.gwt.core.ext.typeinfo.TypeOracle;
 import com.google.gwt.dom.client.TagName;
 import com.google.gwt.resources.client.ClientBundle;
-import com.google.gwt.text.shared.SafeHtmlRenderer;
 import com.google.gwt.uibinder.attributeparsers.AttributeParser;
 import com.google.gwt.uibinder.attributeparsers.AttributeParsers;
 import com.google.gwt.uibinder.attributeparsers.BundleAttributeParser;
@@ -242,8 +241,6 @@
 
   private final UiBinderContext uiBinderCtx;
 
-  private final boolean isRenderer;
-
   public UiBinderWriter(JClassType baseClass, String implClassName,
       String templatePath, TypeOracle oracle, MortalLogger logger,
       FieldManager fieldManager, MessagesWriter messagesWriter,
@@ -278,38 +275,13 @@
     JClassType uiBinderType = uiBinderTypes[0];
 
     JClassType[] typeArgs = uiBinderType.isParameterized().getTypeArgs();
-
-    String binderType = uiBinderType.getName();
-
-    JClassType safeHtmlRendererClass = getOracle().findType(SafeHtmlRenderer.class.getName());
-    if (uiBinderType.isAssignableTo(uibinderItself)) {
-      if (typeArgs.length < 2) {
-        throw new RuntimeException(
-            "Root and owner type parameters are required for type %s"
-                + binderType);
-      }
-      uiRootType = typeArgs[0];
-      uiOwnerType = typeArgs[1];
-      isRenderer = false;
-    } else if (uiBinderType.isAssignableTo(safeHtmlRendererClass)) {
-      if (typeArgs.length < 1) {
-        throw new RuntimeException(
-            "Owner type parameter is required for type %s"
-                + binderType);
-      }
-      if (!useSafeHtmlTemplates) {
-        die("Configuration property UiBinder.useSafeHtmlTemplates\n"
-            + "  must be set to true to generate a SafeHtmlRenderer");
-      }
-
-      uiOwnerType = typeArgs[0];
-      uiRootType = null;
-      isRenderer = true;
-    } else {
-      die(baseClass.getName() + " must implement UiBinder or SafeHtmlRenderer");
-      // This is unreachable in practice, but silences not initialized errors
-      throw new UnableToCompleteException();
+    if (typeArgs.length < 2) {
+      throw new RuntimeException(
+          "Root and owner type parameters are required for type %s"
+              + uiBinderType.getName());
     }
+    uiRootType = typeArgs[0];
+    uiOwnerType = typeArgs[1];
 
     isRenderableClassType = oracle.findType(IsRenderable.class.getCanonicalName());
     lazyDomElementClass = oracle.findType(LazyDomElement.class.getCanonicalName());
@@ -509,14 +481,13 @@
    * @return The invocation of the SafeHtml template function with the arguments
    * filled in
    */
-  public String declareTemplateCall(String html, String fieldName)
+  public String declareTemplateCall(String html)
     throws IllegalArgumentException {
     if (!useSafeHtmlTemplates) {
       return '"' + html + '"';
     }
-    FieldWriter w = fieldManager.lookup(fieldName);
-    w.setHtml(htmlTemplates.addSafeHtmlTemplate(html, tokenator));
-    return w.getHtml();
+
+    return htmlTemplates.addSafeHtmlTemplate(html, tokenator);
   }
 
   /**
@@ -782,8 +753,9 @@
     return lazyDomElementClass.isAssignableFrom(ownerField.getType().getRawType());
   }
 
-  public boolean isRenderableElement(XMLElement elem) throws UnableToCompleteException {
-   return findFieldType(elem).isAssignableTo(isRenderableClassType);
+  public boolean isRenderableElement(XMLElement elem)
+      throws UnableToCompleteException {
+    return findFieldType(elem).isAssignableTo(isRenderableClassType);
   }
 
   public boolean isWidgetElement(XMLElement elem) throws UnableToCompleteException {
@@ -964,6 +936,11 @@
    */
   void parseDocument(Document doc, PrintWriter printWriter)
       throws UnableToCompleteException {
+    JClassType uiBinderClass = getOracle().findType(UiBinder.class.getName());
+    if (!baseClass.isAssignableTo(uiBinderClass)) {
+      die(baseClass.getName() + " must implement UiBinder");
+    }
+
     Element documentElement = doc.getDocumentElement();
     gwtPrefix = documentElement.lookupPrefix(UiBinderGenerator.BINDER_URI);
 
@@ -1200,9 +1177,7 @@
     IndentedWriter niceWriter = new IndentedWriter(
         new PrintWriter(stringWriter));
 
-    if (isRenderer) {
-      writeRenderer(niceWriter, rootField);
-    } else if (useLazyWidgetBuilders) {
+    if (useLazyWidgetBuilders) {
       for (ImplicitCssResource css : bundleClass.getCssMethods()) {
         String fieldName = css.getName();
         FieldWriter cssField = fieldManager.require(fieldName);
@@ -1212,6 +1187,7 @@
     } else {
       writeBinder(niceWriter, rootField);
     }
+
     ensureAttachmentCleanedUp();
     return stringWriter.toString();
   }
@@ -1406,16 +1382,10 @@
   }
 
   private void writeClassOpen(IndentedWriter w) {
-    if (!isRenderer) {
-      w.write("public class %s implements UiBinder<%s, %s>, %s {", implClassName,
-          uiRootType.getParameterizedQualifiedSourceName(),
-          uiOwnerType.getParameterizedQualifiedSourceName(),
-          baseClass.getParameterizedQualifiedSourceName());
-    } else {
-      w.write("public class %s extends AbstractSafeHtmlRenderer<%s> implements %s {", implClassName,
-          uiOwnerType.getParameterizedQualifiedSourceName(),
-          baseClass.getParameterizedQualifiedSourceName());
-    }
+    w.write("public class %s implements UiBinder<%s, %s>, %s {", implClassName,
+        uiRootType.getParameterizedQualifiedSourceName(),
+        uiOwnerType.getParameterizedQualifiedSourceName(),
+        baseClass.getParameterizedQualifiedSourceName());
     w.indent();
   }
 
@@ -1459,6 +1429,7 @@
       }
     }
 
+    // Write gwt field declarations.
     fieldManager.writeGwtFieldsDeclaration(niceWriter, uiOwnerType.getName());
   }
 
@@ -1476,18 +1447,11 @@
       w.write("import com.google.gwt.safehtml.client.SafeHtmlTemplates;");
       w.write("import com.google.gwt.safehtml.shared.SafeHtml;");
       w.write("import com.google.gwt.safehtml.shared.SafeHtmlUtils;");
-      w.write("import com.google.gwt.safehtml.shared.SafeHtmlBuilder;");
-      w.write("import com.google.gwt.uibinder.client.UiBinderUtil;");
     }
-
-    if (!isRenderer) {
-      w.write("import com.google.gwt.uibinder.client.UiBinder;");
-      w.write("import com.google.gwt.uibinder.client.UiBinderUtil;");
-      w.write("import %s.%s;", uiRootType.getPackage().getName(),
-          uiRootType.getName());
-    } else {
-      w.write("import com.google.gwt.text.shared.AbstractSafeHtmlRenderer;");
-    }
+    w.write("import com.google.gwt.uibinder.client.UiBinder;");
+    w.write("import com.google.gwt.uibinder.client.UiBinderUtil;");
+    w.write("import %s.%s;", uiRootType.getPackage().getName(),
+        uiRootType.getName());
   }
 
   /**
@@ -1550,41 +1514,6 @@
   }
 
   /**
-   * Writes the SafeHtmlRenderer's source.
-   */
-  private void writeRenderer(IndentedWriter w, String rootField)
-      throws UnableToCompleteException {
-    writePackage(w);
-
-    writeImports(w);
-    w.newline();
-
-    writeClassOpen(w);
-    writeStatics(w);
-    w.newline();
-
-    // Create SafeHtml Template
-    writeSafeHtmlTemplates(w);
-
-    w.write("public SafeHtml render(final %s owner) {",
-      uiOwnerType.getParameterizedQualifiedSourceName());
-    w.indent();
-    w.newline();
-
-    writeGwtFields(w);
-    w.newline();
-
-    String safeHtml = fieldManager.lookup(rootField).getSafeHtml();
-    w.write("return %s;", safeHtml);
-    w.outdent();
-    w.write("}\n");
-
-    // Close class
-    w.outdent();
-    w.write("}");
-  }
-
-  /**
    * Write statements created by {@link HtmlTemplates#addSafeHtmlTemplate}. This
    * code must be placed after all instantiation code.
    */
diff --git a/user/src/com/google/gwt/uibinder/rebind/model/HtmlTemplate.java b/user/src/com/google/gwt/uibinder/rebind/model/HtmlTemplate.java
index f8c4994..f8dd711 100644
--- a/user/src/com/google/gwt/uibinder/rebind/model/HtmlTemplate.java
+++ b/user/src/com/google/gwt/uibinder/rebind/model/HtmlTemplate.java
@@ -77,7 +77,7 @@
    */
   public String writeTemplateCall() {
     return "template." + methodName + "(" + getSafeHtmlArgs() 
-      + ")";
+      + ").asString()";
   }
 
   /**
diff --git a/user/test/com/google/gwt/uibinder/elementparsers/DialogBoxParserTest.java b/user/test/com/google/gwt/uibinder/elementparsers/DialogBoxParserTest.java
index 2cdc6af..4dce3fa 100644
--- a/user/test/com/google/gwt/uibinder/elementparsers/DialogBoxParserTest.java
+++ b/user/test/com/google/gwt/uibinder/elementparsers/DialogBoxParserTest.java
@@ -77,8 +77,7 @@
     b.append("</g:DialogBox> ");
 
     String[] expected = {
-        "fieldName.setHTML(\"@mockToken-" + ElementParserTester.FIELD_NAME
-            + "-Hello, I <b>caption</b>you.\");",
+        "fieldName.setHTML(\"@mockToken-Hello, I <b>caption</b>you.\");",
         "fieldName.setWidget(<g:Label>);",};
 
     FieldWriter w = tester.parse(b.toString());
@@ -343,8 +342,7 @@
     b.append("</ui:UiBinder>");
 
     String[] expected = {
-        "fieldName.setHTML(\"@mockToken-" + ElementParserTester.FIELD_NAME
-            + "-Hello, I <b>caption</b>you.\");",
+        "fieldName.setHTML(\"@mockToken-Hello, I <b>caption</b>you.\");",
         "fieldName.setWidget(<g:Label>);",};
 
     parser.parse(tester.getElem(b.toString(), "my:MyDialogBox"), "fieldName",
diff --git a/user/test/com/google/gwt/uibinder/elementparsers/GridParserTest.java b/user/test/com/google/gwt/uibinder/elementparsers/GridParserTest.java
index ea11f9e..5a55684 100644
--- a/user/test/com/google/gwt/uibinder/elementparsers/GridParserTest.java
+++ b/user/test/com/google/gwt/uibinder/elementparsers/GridParserTest.java
@@ -132,16 +132,12 @@
 
     String[] expected = {"fieldName.resize(2, 2);",
         "fieldName.getRowFormatter().setStyleName(0, \"rowHeaderStyle\");",
-        "fieldName.setHTML(0, 0, \"@mockToken-" + ElementParserTester.FIELD_NAME
-            + "-foo\");",
+        "fieldName.setHTML(0, 0, \"@mockToken-foo\");",
         "fieldName.getCellFormatter().setStyleName(0, 0, \"headerStyle\");",
-        "fieldName.setHTML(0, 1, \"@mockToken-" + ElementParserTester.FIELD_NAME
-            + "-bar\");",
+        "fieldName.setHTML(0, 1, \"@mockToken-bar\");",
         "fieldName.getCellFormatter().setStyleName(0, 1, \"headerStyle\");",
-        "fieldName.setHTML(1, 0, \"@mockToken-" + ElementParserTester.FIELD_NAME
-            + "-foo\");",
-        "fieldName.setHTML(1, 1, \"@mockToken-" + ElementParserTester.FIELD_NAME
-            + "-bar\");"};
+        "fieldName.setHTML(1, 0, \"@mockToken-foo\");",
+        "fieldName.setHTML(1, 1, \"@mockToken-bar\");"};
 
     FieldWriter w = tester.parse(b.toString());
 
@@ -176,10 +172,8 @@
 
     String[] expected = {
         "fieldName.resize(2, 2);",
-        "fieldName.setHTML(0, 0, \"@mockToken-" + ElementParserTester.FIELD_NAME
-            + "-<div>foo HTML element</div>\");",
-        "fieldName.setHTML(0, 1, \"@mockToken-" + ElementParserTester.FIELD_NAME
-            + "-<div>bar HTML element</div>\");",
+        "fieldName.setHTML(0, 0, \"@mockToken-<div>foo HTML element</div>\");",
+        "fieldName.setHTML(0, 1, \"@mockToken-<div>bar HTML element</div>\");",
         "fieldName.setWidget(1, 0, <g:Label>);",
         "fieldName.setWidget(1, 1, <g:Label>);"};
 
@@ -215,8 +209,7 @@
 
     String[] expected = {
         "fieldName.resize(2, 2);",
-        "fieldName.setHTML(0, 0, \"@mockToken-" + ElementParserTester.FIELD_NAME
-            + "-<div>foo HTML element</div>\");",
+        "fieldName.setHTML(0, 0, \"@mockToken-<div>foo HTML element</div>\");",
         "fieldName.setWidget(1, 0, <g:Label>);",
         "fieldName.setWidget(1, 1, <g:Label>);"};
 
diff --git a/user/test/com/google/gwt/uibinder/elementparsers/MockUiBinderWriter.java b/user/test/com/google/gwt/uibinder/elementparsers/MockUiBinderWriter.java
index 12d59da..ad145ca 100644
--- a/user/test/com/google/gwt/uibinder/elementparsers/MockUiBinderWriter.java
+++ b/user/test/com/google/gwt/uibinder/elementparsers/MockUiBinderWriter.java
@@ -45,12 +45,11 @@
   }
 
   /**
-   * Mocked out version of the template declaration. Returns the fieldName and
-   * template separated with a dash, all prefixed with "@mockToken-"
+   * Mocked out version of the template declaration. Returns the template
+   * prefixed with "@mockToken-"
    */
-  @Override
-  public String declareTemplateCall(String html, String fieldName) {
-    return "\"@mockToken-" + fieldName + "-" + html + "\"";
+  public String declareTemplateCall(String html) {
+    return "\"@mockToken-" + html + "\"";
   }
 
   @Override
diff --git a/user/test/com/google/gwt/uibinder/elementparsers/StackLayoutPanelParserTest.java b/user/test/com/google/gwt/uibinder/elementparsers/StackLayoutPanelParserTest.java
index 6f41f5e..6987761 100644
--- a/user/test/com/google/gwt/uibinder/elementparsers/StackLayoutPanelParserTest.java
+++ b/user/test/com/google/gwt/uibinder/elementparsers/StackLayoutPanelParserTest.java
@@ -165,8 +165,7 @@
         + "(com.google.gwt.dom.client.Style.Unit.PX)", w.getInitializer());
 
     assertStatements(
-        "fieldName.add(<g:Label id='able'>, \"@mockToken-" + ElementParserTester.FIELD_NAME
-            + "-Re<b>mark</b>able\", true, 3);",
+        "fieldName.add(<g:Label id='able'>, \"@mockToken-Re<b>mark</b>able\", true, 3);",
         "fieldName.add(<g:Label id='baker'>, " + "<g:Label id='custom'>, 3);");
   }
 
diff --git a/user/test/com/google/gwt/uibinder/elementparsers/TabLayoutPanelParserTest.java b/user/test/com/google/gwt/uibinder/elementparsers/TabLayoutPanelParserTest.java
index 1b49860..4bc18ec 100644
--- a/user/test/com/google/gwt/uibinder/elementparsers/TabLayoutPanelParserTest.java
+++ b/user/test/com/google/gwt/uibinder/elementparsers/TabLayoutPanelParserTest.java
@@ -168,8 +168,7 @@
     b.append("</g:TabLayoutPanel>");
 
     String[] expected = {
-        "fieldName.add(<g:Label id='able'>, \"@mockToken-" + ElementParserTester.FIELD_NAME
-            + "-Re<b>mark</b>able\", true);",
+        "fieldName.add(<g:Label id='able'>, \"@mockToken-Re<b>mark</b>able\", true);",
         "fieldName.add(<g:Label id='baker'>, " + "<g:Label id='custom'>);",};
 
     FieldWriter w = tester.parse(b.toString());
diff --git a/user/test/com/google/gwt/uibinder/elementparsers/TabPanelParserTest.java b/user/test/com/google/gwt/uibinder/elementparsers/TabPanelParserTest.java
index 1117c95..2fc5ed7 100644
--- a/user/test/com/google/gwt/uibinder/elementparsers/TabPanelParserTest.java
+++ b/user/test/com/google/gwt/uibinder/elementparsers/TabPanelParserTest.java
@@ -146,8 +146,7 @@
     tester.parse(b.toString());
 
     assertStatements("fieldName.add(<g:Label id='0'>, \"Foo\");",
-        "fieldName.add(<g:Label id='1'>, \"@mockToken-" + ElementParserTester.FIELD_NAME
-            + "-B<b>a</b>r\", true);");
+        "fieldName.add(<g:Label id='1'>, \"@mockToken-B<b>a</b>r\", true);");
   }
 
   private void assertStatements(String... expected) {
diff --git a/user/test/com/google/gwt/uibinder/test/client/Constants.java b/user/test/com/google/gwt/uibinder/test/client/Constants.java
index 5e9b536..e387a7a 100644
--- a/user/test/com/google/gwt/uibinder/test/client/Constants.java
+++ b/user/test/com/google/gwt/uibinder/test/client/Constants.java
@@ -39,8 +39,4 @@
   }
 
   public static String CONST_FOO = "Foo";
-
-  public String getText() {
-    return "<b>Here's the text!</b>";
-  }
 }
diff --git a/user/test/com/google/gwt/uibinder/test/client/SafeHtmlRendererUi.css b/user/test/com/google/gwt/uibinder/test/client/SafeHtmlRendererUi.css
deleted file mode 100644
index d277a99..0000000
--- a/user/test/com/google/gwt/uibinder/test/client/SafeHtmlRendererUi.css
+++ /dev/null
@@ -1,8 +0,0 @@
-.bodyColor {
-  color: indigo;
-}
-
-.bodyFont {
-  font-family: Helvetica, Arial, sans-serif;
-  font-size: small;
-}
diff --git a/user/test/com/google/gwt/uibinder/test/client/SafeHtmlRendererUi.java b/user/test/com/google/gwt/uibinder/test/client/SafeHtmlRendererUi.java
deleted file mode 100644
index a4d4348..0000000
--- a/user/test/com/google/gwt/uibinder/test/client/SafeHtmlRendererUi.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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
- *
- * 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 com.google.gwt.uibinder.test.client;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.resources.client.ClientBundle;
-import com.google.gwt.resources.client.CssResource;
-import com.google.gwt.safehtml.shared.SafeHtml;
-import com.google.gwt.text.shared.SafeHtmlRenderer;
-
-/**
- * Sample use of a {@code SafeHtmlRenderer} with no dependency on
- * com.google.gwt.user.
- */
-public class SafeHtmlRendererUi {
-  /**
-   * Resources for this template.
-   */
-  public interface Resources extends ClientBundle {
-    @Source("SafeHtmlRendererUi.css")
-    Style style();
-  }
-
-  /**
-   * CSS for this template.
-   */
-  public interface Style extends CssResource {
-    String bodyColor();
-    String bodyFont();
-  }
-
-  interface HtmlRenderer extends SafeHtmlRenderer<String> { }
-  private static final HtmlRenderer renderer = GWT.create(HtmlRenderer.class);
-
-  public SafeHtmlRendererUi() {
-  }
-
-  public SafeHtml render() {
-    return renderer.render(null);
-  }
-}
diff --git a/user/test/com/google/gwt/uibinder/test/client/SafeHtmlRendererUi.ui.xml b/user/test/com/google/gwt/uibinder/test/client/SafeHtmlRendererUi.ui.xml
deleted file mode 100644
index 6a31cb4..0000000
--- a/user/test/com/google/gwt/uibinder/test/client/SafeHtmlRendererUi.ui.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<!--                                                                        -->
-<!-- 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   -->
-<!-- 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. License for the specific language governing permissions and   -->
-<!-- limitations under the License.                                         -->
-<ui:UiBinder
-  xmlns:ui='urn:ui:com.google.gwt.uibinder'
-  xmlns:res='urn:with:com.google.gwt.uibinder.test.client.DomBasedUi.Resources'
-  >
-  <ui:with field="constants" type="com.google.gwt.uibinder.test.client.Constants"/>
-  <div ui:field='root' res:class="style.bodyColor style.bodyFont"
-      title="The title of this div is localizable">
-    <ui:attribute name='title'/>
-    <span><ui:text from="{constants.getText}" /></span>
-    Hello, <span ui:field="nameSpan" />.
-    <ui:msg>How goes it?</ui:msg>
-      <h2 res:class="style.bodyColor style.bodyFont">Placeholders in localizables</h2>
-      <p><ui:msg>When you mark up your text for translation, there will be bits
-      that you don't want the translators to mess with. You can protect
-      these with <span style="font-weight:bold"
-        ui:ph="boldSpan">placeholders</span><ui:ph name="tm"><sup ui:field="tmElement">TM</sup></ui:ph>.</ui:msg></p>
-  <table>
-    <col ui:field='narrowColumn' width='0%'></col>
-    <col width='100%'></col>
-    <tr ui:field='tr'>
-      <th ui:field='th1'>Tables with col elements</th>
-      <th ui:field='th2' align='left'>are</th>
-      <th ui:field='th3' align='left'>tricky</th>
-    </tr>
-  </table>
-  <table>
-    <tbody ui:field='tbody'>
-    <tr ui:field='tr2'>
-      <th ui:field='th4'>Tables with tbody elements too</th>
-    </tr>
-    </tbody>
-  </table>
-  </div>
-</ui:UiBinder>
diff --git a/user/test/com/google/gwt/uibinder/test/client/UiBinderTest.java b/user/test/com/google/gwt/uibinder/test/client/UiBinderTest.java
index 3a8c3e9..91a5203 100644
--- a/user/test/com/google/gwt/uibinder/test/client/UiBinderTest.java
+++ b/user/test/com/google/gwt/uibinder/test/client/UiBinderTest.java
@@ -18,15 +18,12 @@
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.DivElement;
 import com.google.gwt.dom.client.Element;
-import com.google.gwt.dom.client.LabelElement;
-import com.google.gwt.dom.client.Node;
 import com.google.gwt.dom.client.ParagraphElement;
 import com.google.gwt.dom.client.SpanElement;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.resources.client.ClientBundle;
 import com.google.gwt.resources.client.ImageResource;
 import com.google.gwt.resources.client.CssResource.NotStrict;
-import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.uibinder.test.client.EnumeratedLabel.Suffix;
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.ui.AbsolutePanel;
@@ -53,7 +50,6 @@
   private WidgetBasedUi widgetUi;
   private DomBasedUi domUi;
   private com.google.gwt.user.client.ui.DockPanel root;
-  private SafeHtmlRendererUi safeHtmlUi;
 
   @Override
   public String getModuleName() {
@@ -67,28 +63,6 @@
     widgetUi = app.getWidgetUi();
     domUi = app.getDomUi();
     root = widgetUi.root;
-    safeHtmlUi = app.getSafeHtmlUi();
-  }
-
-  public void testSafeHtmlRendererText() {
-    SafeHtml render = safeHtmlUi.render();
-
-    LabelElement renderedHtml = domUi.root.getOwnerDocument().createLabelElement();
-    renderedHtml.setInnerHTML(render.asString());
-
-    Node innerDiv = renderedHtml.getFirstChild();
-
-    // Was the first span rendered as a "HTML-safe" text string?
-    Node spanWithConstantTextNode = innerDiv.getChild(0);
-    assertEquals("span", spanWithConstantTextNode.getNodeName().toLowerCase());
-    assertEquals(Node.TEXT_NODE, spanWithConstantTextNode.getFirstChild().getNodeType());
-    assertEquals("<b>Here's the text!</b>",
-        spanWithConstantTextNode.getFirstChild().getNodeValue());
-
-    Node firstRawTextNode = innerDiv.getChild(1);
-    assertEquals(Node.TEXT_NODE, firstRawTextNode.getNodeType());
-    assertEquals(" Hello, ",
-        firstRawTextNode.getNodeValue());
   }
 
   public void testTableWithColumns() {
diff --git a/user/test/com/google/gwt/uibinder/test/client/UiBinderTestApp.java b/user/test/com/google/gwt/uibinder/test/client/UiBinderTestApp.java
index a2c3269..c998f65 100644
--- a/user/test/com/google/gwt/uibinder/test/client/UiBinderTestApp.java
+++ b/user/test/com/google/gwt/uibinder/test/client/UiBinderTestApp.java
@@ -41,16 +41,12 @@
     instance.domUi = new DomBasedUi("Mr. User Man");
     Document.get().getBody().appendChild(instance.domUi.root);
 
-    instance.safeHtmlUi = new SafeHtmlRendererUi();
-
     instance.widgetUi = new WidgetBasedUi();
     RootPanel.get().add(instance.widgetUi);
   }
 
   private DomBasedUi domUi;
 
-  private SafeHtmlRendererUi safeHtmlUi;
-
   private WidgetBasedUi widgetUi;
 
   private UiBinderTestApp() {
@@ -60,10 +56,6 @@
     return domUi;
   }
 
-  public SafeHtmlRendererUi getSafeHtmlUi() {
-    return safeHtmlUi;
-  }
-
   public WidgetBasedUi getWidgetUi() {
     return widgetUi;
   }