Author: [EMAIL PROTECTED]
Date: Tue Sep 23 11:08:04 2008
New Revision: 3676

Modified:
     
changes/spoon/runAsync/dev/core/src/com/google/gwt/dev/jjs/impl/FragmentLoaderCreator.java
     
changes/spoon/runAsync/user/src/com/google/gwt/core/client/AsyncFragmentLoader.java

Log:
Log runAsync fragment-loading events to the
GWT lightweight metrics framework.


Modified:  
changes/spoon/runAsync/dev/core/src/com/google/gwt/dev/jjs/impl/FragmentLoaderCreator.java
==============================================================================
---  
changes/spoon/runAsync/dev/core/src/com/google/gwt/dev/jjs/impl/FragmentLoaderCreator.java
       
(original)
+++  
changes/spoon/runAsync/dev/core/src/com/google/gwt/dev/jjs/impl/FragmentLoaderCreator.java
       
Tue Sep 23 11:08:04 2008
@@ -113,6 +113,8 @@
    /**
     * Generate the <code>load</code> method. Calls to  
<code>GWT.runAsync</code>
     * are replaced by calls to this method.
+   *
+   * TODO(spoon): rename to runAsync
     */
    private void generateLoadMethod(PrintWriter srcWriter) {
      srcWriter.println("public static void load(RunAsyncCallback callback)  
{");
@@ -143,7 +145,13 @@
      srcWriter.println("public static void onLoad() {");
      srcWriter.println("loaded = true;");
      srcWriter.println("instance = new " + getLoaderSimpleName() + "();");
+    srcWriter.println(ASYNC_FRAGMENT_LOADER  
+ ".logEventProgress(\"download"
+        + entryNumber + "\", \"end\");");
+    srcWriter.println(ASYNC_FRAGMENT_LOADER  
+ ".logEventProgress(\"runCallbacks"
+        + entryNumber + "\", \"begin\");");
      srcWriter.println("instance.runCallbacks();");
+    srcWriter.println(ASYNC_FRAGMENT_LOADER  
+ ".logEventProgress(\"runCallbacks"
+        + entryNumber + "\", \"end\");");
      srcWriter.println("}");
    }


Modified:  
changes/spoon/runAsync/user/src/com/google/gwt/core/client/AsyncFragmentLoader.java
==============================================================================
---  
changes/spoon/runAsync/user/src/com/google/gwt/core/client/AsyncFragmentLoader.java
      
(original)
+++  
changes/spoon/runAsync/user/src/com/google/gwt/core/client/AsyncFragmentLoader.java
      
Tue Sep 23 11:08:04 2008
@@ -24,9 +24,12 @@
  public class AsyncFragmentLoader {
    /**
     * Loads the specified fragment asynchronously.
+   *
     * @param fragment the fragment to load
     */
    public static void inject(int fragment) {
+    logEventProgress("download" + fragment, "begin");
+
      Element head = getHeadElement();
      Element script = createScriptElement();
      DOM.setElementAttribute(script, "type", "text/javascript");
@@ -35,10 +38,34 @@
      DOM.appendChild(head, script);
    }

+  /**
+   * Logs an event with the GWT lightweight metrics framework.
+   */
+  public static void logEventProgress(String eventGroup, String type) {
+    @SuppressWarnings("unused")
+    boolean toss = isStatsAvailable()
+        && stats(createStatsEvent(eventGroup, type));
+  }
+
    private static native Element createScriptElement() /*-{
      return document.createElement("script");
    }-*/;

+  /**
+   * Create an event object suitable for submitting to the lightweight  
metrics
+   * framework.
+   */
+  private static native JavaScriptObject createStatsEvent(String  
eventGroup,
+      String type) /*-{
+    return {
+      moduleName: @com.google.gwt.core.client.GWT::getModuleName()(),
+      subSystem: 'runAsync',
+      evtGroup: eventGroup,
+      millis: (new Date()).getTime(),
+      type: type
+    };
+  }-*/;
+
    private static native String getFragmentName(int fragment) /*-{
      return __gwt_getFragmentName(fragment);
    }-*/;
@@ -49,5 +76,17 @@
        return heads.item(0);
      }
      return null;
+  }-*/;
+
+  private static native boolean isStatsAvailable() /*-{
+    return !!$stats;
+  }-*/;
+
+  /**
+   * Always use this as [EMAIL PROTECTED] isStatsAvailable} &amp;&amp;
+   * [EMAIL PROTECTED] #stats(JavaScriptObject)}.
+   */
+  private static native boolean stats(JavaScriptObject data) /*-{
+    return $stats(data);
    }-*/;
  }

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

Reply via email to