Add a 'sessionId' field to GWT lightweight metrics events, which is set to the value of
the user-supplied global variable __gwtStatsSessionId at module startup. The field should
not be considered a commited part of the API at this time.
Review by: bobv
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@6441 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/impl/HostedModeTemplate.js b/dev/core/src/com/google/gwt/core/ext/linker/impl/HostedModeTemplate.js
index 488a56b..e0a2727 100644
--- a/dev/core/src/com/google/gwt/core/ext/linker/impl/HostedModeTemplate.js
+++ b/dev/core/src/com/google/gwt/core/ext/linker/impl/HostedModeTemplate.js
@@ -51,6 +51,7 @@
if (isHostedMode()) {
$stats && $stats({
moduleName: '__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem: 'startup',
evtGroup: 'bootstrap',
millis:(new Date()).getTime(),
@@ -101,6 +102,7 @@
// Record when the module EntryPoints return.
$stats && $stats({
moduleName: '__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem: 'startup',
evtGroup: 'moduleStartup',
millis:(new Date()).getTime(),
@@ -295,7 +297,8 @@
* avoid FF2 refresh quirks.
*/
$stats && $stats({
- moduleName:'__MODULE_NAME__',
+ moduleName:'__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem:'startup',
evtGroup: 'moduleStartup',
millis:(new Date()).getTime(),
@@ -331,7 +334,8 @@
// Mark this module's script injection done and (possibly) start the module.
scriptsDone = true;
$stats && $stats({
- moduleName:'__MODULE_NAME__',
+ moduleName:'__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem:'startup',
evtGroup: 'loadExternalRefs',
millis:(new Date()).getTime(),
@@ -380,7 +384,8 @@
// --------------- WINDOW ONLOAD HOOK ---------------
$stats && $stats({
- moduleName:'__MODULE_NAME__',
+ moduleName:'__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem:'startup',
evtGroup: 'bootstrap',
millis:(new Date()).getTime(),
@@ -438,7 +443,8 @@
}, 50);
$stats && $stats({
- moduleName:'__MODULE_NAME__',
+ moduleName:'__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem:'startup',
evtGroup: 'bootstrap',
millis:(new Date()).getTime(),
@@ -446,10 +452,11 @@
});
$stats && $stats({
- moduleName:'__MODULE_NAME__',
- subSystem:'startup',
- evtGroup: 'loadExternalRefs',
- millis:(new Date()).getTime(),
+ moduleName:'__MODULE_NAME__',
+ sessionId: $sessionId,
+ subSystem:'startup',
+ evtGroup: 'loadExternalRefs',
+ millis:(new Date()).getTime(),
type: 'begin'
});
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/impl/hosted.html b/dev/core/src/com/google/gwt/core/ext/linker/impl/hosted.html
index 9b312e0..7479600 100644
--- a/dev/core/src/com/google/gwt/core/ext/linker/impl/hosted.html
+++ b/dev/core/src/com/google/gwt/core/ext/linker/impl/hosted.html
@@ -5,13 +5,14 @@
var $wnd = parent;
var $doc = $wnd.document;
var $moduleName, $moduleBase, $entry
-,$stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null;
+,$stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null
+,$sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;
// Lightweight metrics
if ($stats) {
var moduleFuncName = location.search.substr(1);
var moduleFunc = $wnd[moduleFuncName];
var moduleName = moduleFunc ? moduleFunc.moduleName : "unknown";
- $stats({moduleName:moduleName,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});
+ $stats({moduleName:moduleName,sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});
}
var $hostedHtmlVersion="2.0";
@@ -270,7 +271,7 @@
// Lightweight metrics
window.fireOnModuleLoadStart = function(className) {
- $stats && $stats({moduleName:$moduleName, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date()).getTime(), type:'onModuleLoadStart', className:className});
+ $stats && $stats({moduleName:$moduleName, sessionId:$sessionId, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date()).getTime(), type:'onModuleLoadStart', className:className});
};
window.__gwt_module_id = 0;
@@ -279,7 +280,7 @@
<font face='arial' size='-1'>This html file is for hosted mode support.</font>
<script><!--
// Lightweight metrics
-$stats && $stats({moduleName:$moduleName,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalEnd'});
+$stats && $stats({moduleName:$moduleName, sessionId:$sessionId, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date()).getTime(), type:'moduleEvalEnd'});
// OOPHM currently only supports IFrameLinker
var query = parent.location.search;
diff --git a/dev/core/src/com/google/gwt/core/linker/IFrameLinker.java b/dev/core/src/com/google/gwt/core/linker/IFrameLinker.java
index aa79a1d..5785d7f 100644
--- a/dev/core/src/com/google/gwt/core/linker/IFrameLinker.java
+++ b/dev/core/src/com/google/gwt/core/linker/IFrameLinker.java
@@ -205,7 +205,8 @@
DefaultTextOutput out = new DefaultTextOutput(context.isOutputCompact());
out.print("$stats && $stats({moduleName:'" + context.getModuleName()
- + "',subSystem:'startup',evtGroup:'moduleStartup'"
+ + "',sessionId:$sessionId"
+ + ",subSystem:'startup',evtGroup:'moduleStartup'"
+ ",millis:(new Date()).getTime(),type:'moduleEvalEnd'});");
// Generate the call to tell the bootstrap code that we're ready to go.
@@ -305,10 +306,13 @@
out.print("};");
out.newlineOpt();
}
- out.print("var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null;");
+ out.print("var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null,");
+ out.newlineOpt();
+ out.print("$sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;");
out.newlineOpt();
out.print("$stats && $stats({moduleName:'" + context.getModuleName()
- + "',subSystem:'startup',evtGroup:'moduleStartup'"
+ + "',sessionId:$sessionId"
+ + ",subSystem:'startup',evtGroup:'moduleStartup'"
+ ",millis:(new Date()).getTime(),type:'moduleEvalStart'});");
out.newlineOpt();
out.print("</script></head>");
diff --git a/dev/core/src/com/google/gwt/core/linker/IFrameTemplate.js b/dev/core/src/com/google/gwt/core/linker/IFrameTemplate.js
index 6d5bbd7..f8873fd 100644
--- a/dev/core/src/com/google/gwt/core/linker/IFrameTemplate.js
+++ b/dev/core/src/com/google/gwt/core/linker/IFrameTemplate.js
@@ -21,6 +21,7 @@
var $wnd = window
,$doc = document
,$stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null
+ ,$sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null
// These variables gate calling gwtOnLoad; all must be true to start
,scriptsDone, loadDone, bodyDone
@@ -48,6 +49,7 @@
$stats && $stats({
moduleName: '__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem: 'startup',
evtGroup: 'bootstrap',
millis:(new Date()).getTime(),
@@ -100,6 +102,7 @@
// Record when the module EntryPoints return.
$stats && $stats({
moduleName: '__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem: 'startup',
evtGroup: 'moduleStartup',
millis:(new Date()).getTime(),
@@ -294,7 +297,8 @@
* avoid FF2 refresh quirks.
*/
$stats && $stats({
- moduleName:'__MODULE_NAME__',
+ moduleName:'__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem:'startup',
evtGroup: 'moduleStartup',
millis:(new Date()).getTime(),
@@ -330,7 +334,8 @@
// Mark this module's script injection done and (possibly) start the module.
scriptsDone = true;
$stats && $stats({
- moduleName:'__MODULE_NAME__',
+ moduleName:'__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem:'startup',
evtGroup: 'loadExternalRefs',
millis:(new Date()).getTime(),
@@ -361,7 +366,8 @@
// --------------- WINDOW ONLOAD HOOK ---------------
$stats && $stats({
- moduleName:'__MODULE_NAME__',
+ moduleName:'__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem:'startup',
evtGroup: 'bootstrap',
millis:(new Date()).getTime(),
@@ -415,7 +421,8 @@
}, 50);
$stats && $stats({
- moduleName:'__MODULE_NAME__',
+ moduleName:'__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem:'startup',
evtGroup: 'bootstrap',
millis:(new Date()).getTime(),
@@ -423,7 +430,8 @@
});
$stats && $stats({
- moduleName:'__MODULE_NAME__',
+ moduleName:'__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem:'startup',
evtGroup: 'loadExternalRefs',
millis:(new Date()).getTime(),
diff --git a/dev/core/src/com/google/gwt/core/linker/XSLinker.java b/dev/core/src/com/google/gwt/core/linker/XSLinker.java
index 43e9820..185c29d 100644
--- a/dev/core/src/com/google/gwt/core/linker/XSLinker.java
+++ b/dev/core/src/com/google/gwt/core/linker/XSLinker.java
@@ -80,7 +80,8 @@
out.print("var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null;");
out.newlineOpt();
out.print("$stats && $stats({moduleName:'" + context.getModuleName()
- + "',subSystem:'startup',evtGroup:'moduleStartup'"
+ + "',sessionId:$sessionId"
+ + ",subSystem:'startup',evtGroup:'moduleStartup'"
+ ",millis:(new Date()).getTime(),type:'moduleEvalStart'});");
out.newlineOpt();
@@ -93,7 +94,8 @@
DefaultTextOutput out = new DefaultTextOutput(context.isOutputCompact());
out.print("$stats && $stats({moduleName:'" + context.getModuleName()
- + "',subSystem:'startup',evtGroup:'moduleStartup'"
+ + "',sessionId:$sessionId"
+ + ",subSystem:'startup',evtGroup:'moduleStartup'"
+ ",millis:(new Date()).getTime(),type:'moduleEvalEnd'});");
// Generate the call to tell the bootstrap code that we're ready to go.
diff --git a/dev/core/src/com/google/gwt/core/linker/XSTemplate.js b/dev/core/src/com/google/gwt/core/linker/XSTemplate.js
index 8cbdbe9..811a096 100644
--- a/dev/core/src/com/google/gwt/core/linker/XSTemplate.js
+++ b/dev/core/src/com/google/gwt/core/linker/XSTemplate.js
@@ -48,6 +48,7 @@
$stats && $stats({
moduleName: '__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem: 'startup',
evtGroup: 'bootstrap',
millis:(new Date()).getTime(),
@@ -85,6 +86,7 @@
// Record when the module EntryPoints return.
$stats && $stats({
moduleName: '__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem: 'startup',
evtGroup: 'moduleStartup',
millis:(new Date()).getTime(),
@@ -292,6 +294,7 @@
$stats && $stats({
moduleName:'__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem:'startup',
evtGroup: 'bootstrap',
millis:(new Date()).getTime(),
@@ -342,6 +345,7 @@
$stats && $stats({
moduleName:'__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem:'startup',
evtGroup: 'bootstrap',
millis:(new Date()).getTime(),
@@ -350,6 +354,7 @@
$stats && $stats({
moduleName:'__MODULE_NAME__',
+ sessionId: $sessionId,
subSystem:'startup',
evtGroup: 'loadExternalRefs',
millis:(new Date()).getTime(),
@@ -371,11 +376,11 @@
var compiledScriptTag = '"<script src=\\"' + base + strongName + '.cache.js\\"></scr" + "ipt>"';
$doc.write('<script><!--\n'
+ 'window.__gwtStatsEvent && window.__gwtStatsEvent({'
- + 'moduleName:"__MODULE_NAME__", subSystem:"startup",'
+ + 'moduleName:"__MODULE_NAME__", sessionId:$sessionId, subSystem:"startup",'
+ 'evtGroup: "loadExternalRefs", millis:(new Date()).getTime(),'
+ 'type: "end"});'
+ 'window.__gwtStatsEvent && window.__gwtStatsEvent({'
- + 'moduleName:"__MODULE_NAME__", subSystem:"startup",'
+ + 'moduleName:"__MODULE_NAME__", sessionId:$sessionId, subSystem:"startup",'
+ 'evtGroup: "moduleStartup", millis:(new Date()).getTime(),'
+ 'type: "moduleRequested"});'
+ 'document.write(' + compiledScriptTag + ');'
diff --git a/dev/core/src/com/google/gwt/dev/js/ast/JsRootScope.java b/dev/core/src/com/google/gwt/dev/js/ast/JsRootScope.java
index cadf257..03db287 100644
--- a/dev/core/src/com/google/gwt/dev/js/ast/JsRootScope.java
+++ b/dev/core/src/com/google/gwt/dev/js/ast/JsRootScope.java
@@ -110,7 +110,7 @@
"JavaArray", "JavaMember",
// GWT-defined identifiers
- "$wnd", "$doc", "$entry", "$moduleName", "$moduleBase", "$gwt_version",
+ "$wnd", "$doc", "$entry", "$moduleName", "$moduleBase", "$gwt_version", "$sessionId",
// Identifiers used by JsStackEmulator; later set to obfuscatable
"$stack", "$stackDepth", "$location",
diff --git a/dev/core/super/com/google/gwt/dev/jjs/intrinsic/com/google/gwt/lang/Stats.java b/dev/core/super/com/google/gwt/dev/jjs/intrinsic/com/google/gwt/lang/Stats.java
index 79fbd86..7e4a74b 100644
--- a/dev/core/super/com/google/gwt/dev/jjs/intrinsic/com/google/gwt/lang/Stats.java
+++ b/dev/core/super/com/google/gwt/dev/jjs/intrinsic/com/google/gwt/lang/Stats.java
@@ -31,6 +31,7 @@
static native boolean onModuleStart(String mainClassName) /*-{
return $stats({
moduleName: $moduleName,
+ sessionId: $sessionId,
subSystem: "startup",
evtGroup: "moduleStartup",
millis : (new Date()).getTime(),
diff --git a/user/src/com/google/gwt/core/client/impl/AsyncFragmentLoader.java b/user/src/com/google/gwt/core/client/impl/AsyncFragmentLoader.java
index fb03197..7c02f04 100644
--- a/user/src/com/google/gwt/core/client/impl/AsyncFragmentLoader.java
+++ b/user/src/com/google/gwt/core/client/impl/AsyncFragmentLoader.java
@@ -242,6 +242,7 @@
String type, Integer fragment, Integer size) /*-{
var evt = {
moduleName: @com.google.gwt.core.client.GWT::getModuleName()(),
+ sessionId: $sessionId,
subSystem: 'runAsync',
evtGroup: eventGroup,
millis: (new Date()).getTime(),
diff --git a/user/src/com/google/gwt/user/client/rpc/impl/RemoteServiceProxy.java b/user/src/com/google/gwt/user/client/rpc/impl/RemoteServiceProxy.java
index 54e72bd..793f63f 100644
--- a/user/src/com/google/gwt/user/client/rpc/impl/RemoteServiceProxy.java
+++ b/user/src/com/google/gwt/user/client/rpc/impl/RemoteServiceProxy.java
@@ -74,7 +74,8 @@
public static native JavaScriptObject timeStat(String method, int count,
String eventType) /*-{
return {
- moduleName: @com.google.gwt.core.client.GWT::getModuleName()(),
+ moduleName: @com.google.gwt.core.client.GWT::getModuleName()(),
+ sessionId: $sessionId,
subSystem: 'rpc',
evtGroup: count,
method: method,