Don't allow SafeHtml strings to end in a <script> or <style> context.

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


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10790 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/safehtml/shared/SafeHtmlHostedModeUtils.java b/user/src/com/google/gwt/safehtml/shared/SafeHtmlHostedModeUtils.java
index cdb4826..601504f 100644
--- a/user/src/com/google/gwt/safehtml/shared/SafeHtmlHostedModeUtils.java
+++ b/user/src/com/google/gwt/safehtml/shared/SafeHtmlHostedModeUtils.java
@@ -85,7 +85,8 @@
     } catch (ParseException e) {
       return false;
     }
-    return htmlParser.getState() == HtmlParser.STATE_TEXT;
+    return htmlParser.getState() == HtmlParser.STATE_TEXT
+        && !htmlParser.inJavascript() && !htmlParser.inCss();
   }
 
   /**
diff --git a/user/test/com/google/gwt/safehtml/shared/GwtSafeHtmlHostedModeUtilsTest.java b/user/test/com/google/gwt/safehtml/shared/GwtSafeHtmlHostedModeUtilsTest.java
index fcd5f26..df43bcb 100644
--- a/user/test/com/google/gwt/safehtml/shared/GwtSafeHtmlHostedModeUtilsTest.java
+++ b/user/test/com/google/gwt/safehtml/shared/GwtSafeHtmlHostedModeUtilsTest.java
@@ -47,6 +47,9 @@
       assertCheckCompleteHtmlFails("baz<em>foo</em> <x a=\"b\"");
       assertCheckCompleteHtmlFails("baz<em>foo</em> <x a=\"b\" ");
 
+      assertCheckCompleteHtmlFails("<script>");
+      assertCheckCompleteHtmlFails("<style>");
+
       SafeHtmlHostedModeUtils.maybeCheckCompleteHtml("baz<em>foo</em> <x a=\"b\"> ");
       SafeHtmlHostedModeUtils.maybeCheckCompleteHtml("baz<em>foo</em> <x a=\"b\">sadf");
       SafeHtmlHostedModeUtils.maybeCheckCompleteHtml("baz<em>foo</em> <x a=\"b\">");