Reviewed by Dan Bernstein.
authortimothy@apple.com <timothy@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 23 Nov 2007 04:45:26 +0000 (04:45 +0000)
committertimothy@apple.com <timothy@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 23 Nov 2007 04:45:26 +0000 (04:45 +0000)
        Fix the Element.hasStyleClass and Element.removeStyleClass helpers
        to not find and replace substrings, but whole class names at the
        beginning or end of the string or surrounded by whitespace.

        * page/inspector/utilities.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@27981 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/page/inspector/utilities.js

index 9021fb3a07818780489a4dd2994a87a077284a30..b7866d906d7e61a1d0450c6fb3c29ff75cbeb2ca 100644 (file)
@@ -1,3 +1,13 @@
+2007-11-22  Timothy Hatcher  <timothy@apple.com>
+
+        Reviewed by Dan Bernstein.
+
+        Fix the Element.hasStyleClass and Element.removeStyleClass helpers
+        to not find and replace substrings, but whole class names at the
+        beginning or end of the string or surrounded by whitespace.
+
+        * page/inspector/utilities.js:
+
 2007-11-22  Timothy Hatcher  <timothy@apple.com>
 
         Revert part of my r27935 change that made the Tip balloons
index d39e04accdcbbb6cd9ee3d79f198004292944f31..3fcd1690da73a89c98f950b6586c5e01cf1dba66 100644 (file)
@@ -89,19 +89,32 @@ Object.sortedProperties = function(obj)
 
 Element.prototype.removeStyleClass = function(className) 
 {
-    if (this.hasStyleClass(className))
-        this.className = this.className.replace(className, "");
+    // Test for the simple case before using a RegExp.
+    if (this.className === className) {
+        this.className = "";
+        return;
+    }
+
+    var regex = new RegExp("(^|\\s+)" + className.escapeForRegExp() + "($|\\s+)");
+    if (regex.test(this.className))
+        this.className = this.className.replace(regex, " ");
 }
 
 Element.prototype.addStyleClass = function(className) 
 {
-    if (!this.hasStyleClass(className))
+    if (className && !this.hasStyleClass(className))
         this.className += (this.className.length ? " " + className : className);
 }
 
 Element.prototype.hasStyleClass = function(className) 
 {
-    return this.className.indexOf(className) !== -1;
+    if (!className)
+        return false;
+    // Test for the simple case before using a RegExp.
+    if (this.className === className)
+        return true;
+    var regex = new RegExp("(^|\\s)" + className.escapeForRegExp() + "($|\\s)");
+    return regex.test(this.className);
 }
 
 Element.prototype.scrollToElement = function(element)