Fixes obscure failure in linux hybrid-mode unit tests 
Review: http://gwt-code-reviews.appspot.com/33847


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@5530 8db76d5a-ed1c-0410-87a9-c151d255dfc7
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 20d8278..822e6ac 100644
--- a/dev/core/src/com/google/gwt/core/linker/IFrameLinker.java
+++ b/dev/core/src/com/google/gwt/core/linker/IFrameLinker.java
@@ -208,7 +208,7 @@
     out.print("if ($wnd." + context.getModuleFunctionName() + ") $wnd."
         + context.getModuleFunctionName() + ".onScriptLoad();");
     out.newline();
-    out.print("--></script></body></html>");
+    out.print("--></script>");
     out.newlineOpt();
 
     return out.toString();
@@ -249,11 +249,10 @@
   private String getModulePrefix(LinkerContext context, String strongName,
       boolean supportRunAsync) {
     DefaultTextOutput out = new DefaultTextOutput(context.isOutputCompact());
-    out.print("<html>");
     out.newlineOpt();
 
     // Setup the well-known variables.
-    out.print("<head><script>");
+    out.print("<script>");
     out.newlineOpt();
     out.print("var $gwt_version = \"" + About.getGwtVersionNum() + "\";");
     out.newlineOpt();
@@ -306,9 +305,8 @@
         + "',subSystem:'startup',evtGroup:'moduleStartup'"
         + ",millis:(new Date()).getTime(),type:'moduleEvalStart'});");
     out.newlineOpt();
-    out.print("</script></head>");
+    out.print("</script>");
     out.newlineOpt();
-    out.print("<body>");
     out.newlineOpt();
 
     // Begin a script block inside the body. It's commented out so that the
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 0be7f1e..dfa11eb 100644
--- a/dev/core/src/com/google/gwt/core/linker/IFrameTemplate.js
+++ b/dev/core/src/com/google/gwt/core/linker/IFrameTemplate.js
@@ -350,14 +350,17 @@
         win.name = '__MODULE_NAME__';
       }
 
+      // Set this *before* calling doc.write(), because the linux hosted-mode
+      // browser sometimes doesn't properly return from doc.write() if there are
+      // a large number of script blocks (even though it works fine). Go figure.
+      gwtFrameCreated = true;
+
       // Inject the fetched script into the script frame.
       // (this script will call onScriptLoad())
       var doc = win.document;
       doc.open();
       doc.write(compiledScript);
       doc.close();
-      gwtFrameCreated = true;
-      maybeStartModule();
     }
   }