]> source.dussan.org Git - gwtquery.git/commitdiff
improve performance in native selector generators
authorManolo Carrasco <manolo@apache.org>
Wed, 17 Oct 2012 06:38:50 +0000 (08:38 +0200)
committerManolo Carrasco <manolo@apache.org>
Wed, 17 Oct 2012 06:38:50 +0000 (08:38 +0200)
gwtquery-core/src/main/java/com/google/gwt/query/client/impl/SelectorEngine.java
gwtquery-core/src/main/java/com/google/gwt/query/rebind/SelectorGeneratorNative.java
gwtquery-core/src/main/java/com/google/gwt/query/rebind/SelectorGeneratorNativeIE8.java
gwtquery-core/src/main/java/com/google/gwt/query/rebind/SelectorGeneratorNativeIE9.java

index fe793fd9c1673dcaf103c934dc0786c075918f10..def31d917daf26289ebe1a6688090bed2a8c3cde 100644 (file)
@@ -61,6 +61,16 @@ public class SelectorEngine implements HasSelector {
       return ctx.querySelectorAll(selector);\r
   }-*/;\r
   \r
+  public static native NodeList<Element> elementsByTagName(String selector,\r
+      Node ctx) /*-{\r
+      return ctx.getElementsByTagName(selector);\r
+  }-*/;\r
+  \r
+  public static native NodeList<Element> elementsByClassName(String selector,\r
+      Node ctx) /*-{\r
+      return ctx.getElementsByClassName(selector);\r
+  }-*/;\r
+  \r
   public static NodeList<Element> veryQuickId(String id, Node ctx) {\r
     Document d = ctx.getNodeType() == Node.DOCUMENT_NODE\r
         ? ctx.<Document> cast() : ctx.getOwnerDocument();\r
index 554809a794862438d8da01359a293881aac9eb99..b09a07dd9c747d10311ff8cc92ce3530835deb34 100644 (file)
@@ -36,6 +36,12 @@ public class SelectorGeneratorNative extends SelectorGeneratorCssToXPath {
     if (selector.matches("#[\\w\\-]+")) {\r
       sw.println("return "\r
           + wrap(method, "veryQuickId(\"" + selector.substring(1) + "\", root)") + ";");\r
+    } else if (selector.equals("*") || selector.matches("[\\w\\-]+")) {\r
+      sw.println("return "\r
+          + wrap(method, "elementsByTagName(\"" + selector + "\", root)") + ";");\r
+    } else if (selector.matches("\\.[\\w\\-]+")) {\r
+      sw.println("return "\r
+          + wrap(method, "elementsByClassName(\"" + selector.substring(1) + "\", root)") + ";");\r
     } else if (selector.contains("!=")) {\r
       sw.println("return "\r
           + wrap(method, "querySelectorAll(\"" \r
index b97cd8990210923c289f0a65585ee1f4bcba6129..4ec3f1c6e7f4182de03f8c8486a2cbdc8da42895 100644 (file)
@@ -35,6 +35,12 @@ public class SelectorGeneratorNativeIE8 extends SelectorGeneratorJS {
     if (selector.matches("#[\\w\\-]+")) {\r
       sw.println("return "\r
           + wrap(method, "veryQuickId(\"" + selector.substring(1) + "\", root)") + ";");\r
+    } else if (selector.equals("*") || selector.matches("[\\w\\-]+")) {\r
+      sw.println("return "\r
+          + wrap(method, "elementsByTagName(\"" + selector + "\", root)") + ";");\r
+    } else if (selector.matches("\\.[\\w\\-]+")) {\r
+      sw.println("return "\r
+          + wrap(method, "elementsByClassName(\"" + selector.substring(1) + "\", root)") + ";");\r
     } else if (selector.matches(SelectorEngineNativeIE8.NATIVE_EXCEPTIONS_REGEXP)) {\r
       super.generateMethodBody(sw, method, treeLogger, hasContext);\r
     } else {\r
index ae76e4e9f8baf58b5f6b33e23e5d626b7e0d655b..af3a690de7573ce781cd158a76e9d1123329d2d3 100644 (file)
@@ -35,6 +35,12 @@ public class SelectorGeneratorNativeIE9 extends SelectorGeneratorJS {
     if (selector.matches("#[\\w\\-]+")) {\r
       sw.println("return "\r
           + wrap(method, "veryQuickId(\"" + selector.substring(1) + "\", root)") + ";");\r
+    } else if (selector.equals("*") || selector.matches("[\\w\\-]+")) {\r
+      sw.println("return "\r
+          + wrap(method, "elementsByTagName(\"" + selector + "\", root)") + ";");\r
+    } else if (selector.matches("\\.[\\w\\-]+")) {\r
+      sw.println("return "\r
+          + wrap(method, "elementsByClassName(\"" + selector.substring(1) + "\", root)") + ";");\r
     } else if (selector.matches(SelectorEngineNative.NATIVE_EXCEPTIONS_REGEXP)) {\r
       super.generateMethodBody(sw, method, treeLogger, hasContext);\r
     } else {\r
@@ -45,7 +51,7 @@ public class SelectorGeneratorNativeIE9 extends SelectorGeneratorJS {
 \r
   @Override\r
   protected String getImplSuffix() {\r
-    return "IE8" + super.getImplSuffix();\r
+    return "IE9" + super.getImplSuffix();\r
   }\r
 \r
   @Override\r