Revision: 8910
Author: [email protected]
Date: Thu Sep 30 13:24:30 2010
Log: Converting MultiWordSuggestOracle to use SafeHtml to escape suggestions, and fixing fixing broken tests.

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

http://code.google.com/p/google-web-toolkit/source/detail?r=8910

Modified:
 /trunk/user/src/com/google/gwt/user/client/ui/MultiWordSuggestOracle.java
 /trunk/user/test/com/google/gwt/user/client/ui/SuggestBoxTest.java

=======================================
--- /trunk/user/src/com/google/gwt/user/client/ui/MultiWordSuggestOracle.java Thu Sep 30 08:46:04 2010 +++ /trunk/user/src/com/google/gwt/user/client/ui/MultiWordSuggestOracle.java Thu Sep 30 13:24:30 2010
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.user.client.ui;

-import com.google.gwt.core.client.GWT;
+import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 import com.google.gwt.user.client.rpc.IsSerializable;

 import java.util.ArrayList;
@@ -119,10 +119,6 @@
       }
       return comparison;
     }
-
-    public int length() {
-      return endIndex - startIndex;
-    }
   }

   private static final char WHITESPACE_CHAR = ' ';
@@ -133,8 +129,6 @@
    */
   private static final String NORMALIZE_TO_SINGLE_WHITE_SPACE = "\\s+";

-  private static HTML convertMe = GWT.isClient() ? new HTML() : null;
-
   /**
    * Associates substrings with words.
    */
@@ -308,12 +302,6 @@
       String displayString) {
     return new MultiWordSuggestion(replacementString, displayString);
   }
-
-  String escapeText(String escapeMe) {
-    convertMe.setText(escapeMe);
-    String escaped = convertMe.getHTML();
-    return escaped;
-  }

   /**
* Returns real suggestions with the given query in <code>strong</code> html
@@ -335,7 +323,7 @@
       String formattedSuggestion = toRealSuggestions.get(candidate);

       // Create strong search string.
-      StringBuffer accum = new StringBuffer();
+      SafeHtmlBuilder accum = new SafeHtmlBuilder();

       String[] searchWords = query.split(WHITESPACE_STRING);
       while (true) {
@@ -345,12 +333,14 @@
         }
         if (wordBounds.startIndex == 0 ||
WHITESPACE_CHAR == candidate.charAt(wordBounds.startIndex - 1)) { - String part1 = escapeText(formattedSuggestion.substring(cursor, wordBounds.startIndex)); - String part2 = escapeText(formattedSuggestion.substring(wordBounds.startIndex,
-              wordBounds.endIndex));
+ String part1 = formattedSuggestion.substring(cursor, wordBounds.startIndex); + String part2 = formattedSuggestion.substring(wordBounds.startIndex,
+              wordBounds.endIndex);
           cursor = wordBounds.endIndex;
-          accum.append(part1).append("<strong>").append(part2).append(
-              "</strong>");
+          accum.appendEscaped(part1);
+          accum.appendHtmlConstant("<strong>");
+          accum.appendEscaped(part2);
+          accum.appendHtmlConstant("</strong>");
         }
         index = wordBounds.endIndex;
       }
@@ -360,10 +350,9 @@
         continue;
       }

-      String end = escapeText(formattedSuggestion.substring(cursor));
-      accum.append(end);
+      accum.appendEscaped(formattedSuggestion.substring(cursor));
MultiWordSuggestion suggestion = createSuggestion(formattedSuggestion,
-          accum.toString());
+          accum.toSafeHtml().asString());
       suggestions.add(suggestion);
     }
     return suggestions;
=======================================
--- /trunk/user/test/com/google/gwt/user/client/ui/SuggestBoxTest.java Thu Sep 30 08:46:04 2010 +++ /trunk/user/test/com/google/gwt/user/client/ui/SuggestBoxTest.java Thu Sep 30 13:24:30 2010
@@ -138,10 +138,10 @@
     box.showSuggestionList();
     assertTrue(display.isSuggestionListShowing());
     assertEquals(1, display.getSuggestionCount());
- assertEquals("<strong>he</strong>'ll <strong>help</strong> me wont <strong>he</strong>",
-        display.getSuggestion(0).getDisplayString().toLowerCase());
-  }
-
+ assertEquals("<strong>He</strong>&#39;ll <strong>help</strong> me wont <strong>he</strong>",
+        display.getSuggestion(0).getDisplayString());
+  }
+
   public void testMultipleWordMatchesShow() {
     MultiWordSuggestOracle oracle = new MultiWordSuggestOracle(",! ");
     oracle.add("Hark, Shark and Herald");
@@ -156,14 +156,14 @@
     box.showSuggestionList();
     assertTrue(display.isSuggestionListShowing());
     assertEquals(3, display.getSuggestionCount());
- assertEquals("<strong>hark</strong>, shark and <strong>herald</strong>",
-        display.getSuggestion(0).getDisplayString().toLowerCase());
- assertEquals("<strong>hark</strong>! the <strong>herald</strong> angels sing",
-        display.getSuggestion(1).getDisplayString().toLowerCase());
- assertEquals("<strong>herald</strong>ings and <strong>hark</strong>ings",
-        display.getSuggestion(2).getDisplayString().toLowerCase());
-  }
-
+ assertEquals("<strong>Hark</strong>, Shark and <strong>Herald</strong>",
+        display.getSuggestion(0).getDisplayString());
+ assertEquals("<strong>Hark</strong>! The <strong>Herald</strong> Angels Sing",
+        display.getSuggestion(1).getDisplayString());
+ assertEquals("<strong>Herald</strong>ings and <strong>Hark</strong>ings",
+        display.getSuggestion(2).getDisplayString());
+  }
+
   @SuppressWarnings("deprecation")
   public void testShowAndHide() {
     SuggestBox box = createSuggestBox();

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to