Adds additional GWTBridge methods to allow useful faking-out for non-GWTTestCase JUnit support, and potentially server-side use.

Review by: rjrjr


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2990 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
index b7e0074..209f415 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
@@ -378,10 +378,13 @@
           }
         }
 
-        // Reimplement GWT.isClient() to return true
+        // Reimplement GWT.isClient() and GWT.isScript() to return true
         if (currentClass == program.getIndexedType("GWT")) {
           JMethod method = program.getIndexedMethod("GWT.isClient");
           implementMethod(method, program.getLiteralBoolean(true));
+
+          method = program.getIndexedMethod("GWT.isScript");
+          implementMethod(method, program.getLiteralBoolean(true));
         }
 
         // Implement Class.desiredAssertionStatus
diff --git a/dev/core/src/com/google/gwt/dev/shell/GWTBridgeImpl.java b/dev/core/src/com/google/gwt/dev/shell/GWTBridgeImpl.java
index 973145c..9028b26 100644
--- a/dev/core/src/com/google/gwt/dev/shell/GWTBridgeImpl.java
+++ b/dev/core/src/com/google/gwt/dev/shell/GWTBridgeImpl.java
@@ -32,6 +32,7 @@
   /**
    * Resolves a deferred binding request and create the requested object.
    */
+  @Override
   public <T> T create(Class<?> requestedClass) {
     String className = requestedClass.getName();
     try {
@@ -43,13 +44,23 @@
     }
   };
 
+  @Override
   public String getVersion() {
     return About.GWT_VERSION_NUM;
   }
 
   /**
+   * Yes, we're running as client code in the hosted mode classloader.
+   */
+  @Override
+  public boolean isClient() {
+    return true;
+  }
+
+  /**
    * Logs in dev shell.
    */
+  @Override
   public void log(String message, Throwable e) {
     host.log(message, e);
   }
diff --git a/dev/core/super/com/google/gwt/core/client/GWTBridge.java b/dev/core/super/com/google/gwt/core/client/GWTBridge.java
index 005bece..449433a 100644
--- a/dev/core/super/com/google/gwt/core/client/GWTBridge.java
+++ b/dev/core/super/com/google/gwt/core/client/GWTBridge.java
@@ -25,5 +25,7 @@
 
   public abstract String getVersion();
 
+  public abstract boolean isClient();
+
   public abstract void log(String message, Throwable e);
 }
diff --git a/user/src/com/google/gwt/core/client/GWT.java b/user/src/com/google/gwt/core/client/GWT.java
index b00f5b5..5e8d86d 100644
--- a/user/src/com/google/gwt/core/client/GWT.java
+++ b/user/src/com/google/gwt/core/client/GWT.java
@@ -167,15 +167,16 @@
    * on the server, or during the bootstrap sequence of a GWTTestCase test.
    */
   public static boolean isClient() {
-    // Replaced with "true" by compiler.
-    return sGWTBridge != null;
+    // Replaced with "true" by GWT compiler.
+    return sGWTBridge != null && sGWTBridge.isClient();
   }
 
   /**
    * Determines whether or not the running program is script or bytecode.
    */
   public static boolean isScript() {
-    return isClient() && sGWTBridge == null;
+    // Replaced with "true" by GWT compiler.
+    return false;
   }
 
   /**
@@ -203,7 +204,7 @@
   }
 
   /**
-   * Called via reflection in hosted mode; do not every call this method in web
+   * Called via reflection in hosted mode; do not ever call this method in web
    * mode.
    */
   static void setBridge(GWTBridge bridge) {