Fix StackTraceCreatorTest in hosted mode.

Patch by: bobv
Review by: rjrjr (TBR)

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@5792 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/test/com/google/gwt/core/client/impl/StackTraceCreatorTest.java b/user/test/com/google/gwt/core/client/impl/StackTraceCreatorTest.java
index abddc36..25545ba 100644
--- a/user/test/com/google/gwt/core/client/impl/StackTraceCreatorTest.java
+++ b/user/test/com/google/gwt/core/client/impl/StackTraceCreatorTest.java
@@ -17,6 +17,7 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.JavaScriptException;
+import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.core.client.JsArrayString;
 import com.google.gwt.junit.client.GWTTestCase;
 
@@ -26,7 +27,7 @@
  */
 public class StackTraceCreatorTest extends GWTTestCase {
   public static void testJavaScriptException() {
-    JsArrayString start = StackTraceCreator.createStackTrace();
+    JsArrayString start = sample();
     Throwable t = null;
     try {
       throwNative();
@@ -54,7 +55,7 @@
 
     checkStack(myName, t);
 
-    JsArrayString end = StackTraceCreator.createStackTrace();
+    JsArrayString end = sample();
     assertEquals(start, end);
   }
 
@@ -63,22 +64,22 @@
    */
   public static void testReentrantCalls() {
     if (!GWT.isScript()) {
-      // StackTraceCreator.createStackTrace() is useless in hosted mode
+      // sample is useless in hosted mode
       return;
     }
 
-    JsArrayString start = StackTraceCreator.createStackTrace();
+    JsArrayString start = sample();
 
     JsArrayString stack = countDown(5);
     assertNotNull(stack);
     assertTrue(stack.length() > 0);
 
-    JsArrayString end = StackTraceCreator.createStackTrace();
+    JsArrayString end = sample();
     assertEquals(start, end);
   }
 
   public static void testStackTraces() {
-    JsArrayString start = StackTraceCreator.createStackTrace();
+    JsArrayString start = sample();
 
     Throwable t;
     try {
@@ -96,10 +97,17 @@
 
     checkStack(myName, t);
 
-    JsArrayString end = StackTraceCreator.createStackTrace();
+    JsArrayString end = sample();
     assertEquals(start, end);
   }
 
+  private static void assertEquals(JsArrayString start, JsArrayString end) {
+    assertEquals("length", start.length(), end.length());
+    for (int i = 0, j = start.length(); i < j; i++) {
+      assertEquals("frame " + i, start.get(i), end.get(i));
+    }
+  }
+
   private static void checkStack(String myName, Throwable t) {
     assertNotNull("myName", myName);
     assertNotNull("t", t);
@@ -130,18 +138,19 @@
         found);
   }
 
-  private static void assertEquals(JsArrayString start, JsArrayString end) {
-    assertEquals("length", start.length(), end.length());
-    for (int i = 0, j = start.length(); i < j; i++) {
-      assertEquals("frame " + i, start.get(i), end.get(i));
-    }
-  }
-
   private static JsArrayString countDown(int count) {
     if (count > 0) {
       return countDown(count - 1);
     } else {
+      return sample();
+    }
+  }
+
+  private static JsArrayString sample() {
+    if (GWT.isScript()) {
       return StackTraceCreator.createStackTrace();
+    } else {
+      return JavaScriptObject.createArray().cast();
     }
   }