Change hosted.html to get its gwt.hosted parameter from the outer frame rather
than munging the URL to pass it there.

Patch by: jat
Review by: jgw (desk review)
Suggested by: scottb


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@4210 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 9c125fb..488a56b 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
@@ -389,17 +389,9 @@
 
   var strongName;
   if (isHostedMode()) {
-    var query = $wnd.location.search;
-    if (query) {
-      if (query.lastIndexOf('&') != query.lenth - 1) {
-    	query += '&';
-      }
-    } else {
-      query = '?';
-    }
-    strongName = "hosted.html" + query + "__MODULE_FUNC__";
+    strongName = "hosted.html?__MODULE_FUNC__";
     // Hang an expando for hosted.html to be able to grab the module name early.
-    __MODULE_FUNC__.moduleName = '__MODULE_NAME__'; 
+    __MODULE_FUNC__.moduleName = '__MODULE_NAME__';
   } else {
     try {
 // __PERMUTATIONS_BEGIN__
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 5db4e1b..2a2b937 100644
--- a/dev/core/src/com/google/gwt/core/linker/IFrameTemplate.js
+++ b/dev/core/src/com/google/gwt/core/linker/IFrameTemplate.js
@@ -66,8 +66,10 @@
 
   function isHostedMode() {
     try {
-      return ($wnd.external && $wnd.external.gwtOnLoad &&
-          ($wnd.location.search.indexOf('gwt.hybrid') == -1));
+      var query = $wnd.location.search;
+      return (query.indexOf('gwt.hosted=') != -1 
+          || ($wnd.external && $wnd.external.gwtOnLoad)) &&
+          (query.indexOf('gwt.hybrid') == -1);
     } catch (e) {
       // Defensive: some versions of IE7 reportedly can throw an exception
       // evaluating "external.gwtOnLoad".
@@ -353,8 +355,8 @@
   var strongName;
   var initialHtml;
   if (isHostedMode()) {
+	initialHtml = "hosted.html?__MODULE_FUNC__";
     strongName = "";
-    initialHtml = "hosted.html?__MODULE_FUNC__";
   } else {
     try {
 // __PERMUTATIONS_BEGIN__
diff --git a/dev/oophm/overlay/com/google/gwt/core/ext/linker/impl/hosted.html b/dev/oophm/overlay/com/google/gwt/core/ext/linker/impl/hosted.html
index 24d7a6f..c1c95ad 100644
--- a/dev/oophm/overlay/com/google/gwt/core/ext/linker/impl/hosted.html
+++ b/dev/oophm/overlay/com/google/gwt/core/ext/linker/impl/hosted.html
@@ -192,7 +192,7 @@
 
 window.__gwt_module_id = 0;
 
-var query = window.location.search;
+var query = parent.location.search;
 $stats && $stats({moduleName:$moduleName,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalEnd'});
 var idx = query.indexOf("gwt.hosted=");
 if (idx >= 0) {
@@ -203,7 +203,6 @@
     $hosted = query.substring(idx + 11);
   }
 }
-idx = query.lastIndexOf("&");
-query = query.substring(idx + 1);
+query = window.location.search.substring(1);
 if (query && $wnd[query]) setTimeout($wnd[query].onScriptLoad, 1);
 --></script></body></html>