Correct a problem with showing the troubleshooting iframe, add support for
renamed query parameter (while retaining backwards compatibility for now).
Patch by: jat
Review by: knorton
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@5981 8db76d5a-ed1c-0410-87a9-c151d255dfc7
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 bb8c0d4..8245f9e 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
@@ -1,5 +1,7 @@
<html>
<head><script>
+// TODO(jat): wrap these to reduce namespace issues, and refactor code into
+// separate functions.
var $wnd = parent;
var $doc = $wnd.document;
var $moduleName, $moduleBase
@@ -35,12 +37,11 @@
function loadIframe(url) {
var iframe = $doc.createElement('iframe');
- iframe.src = "javascript:''";
+ iframe.src = url;
iframe.style.width = "100%";
iframe.style.height = "100%";
iframe.style.borderWidth = "0px";
$doc.body.insertBefore(iframe, $doc.body.firstChild);
- iframe.contentWindow.location.replace(url);
}
if ($legacyHosted) {
@@ -273,13 +274,22 @@
document.write('</object>');
}
- var idx = query.indexOf("gwt.hosted=");
+ // look for the old query parameter if we don't find the new one
+ var idx = query.indexOf("gwt.codesvr=");
+ if (idx >= 0) {
+ idx += 12; // "gwt.codesvr=".length() == 12
+ } else {
+ idx = query.indexOf("gwt.hosted=");
+ if (idx >= 0) {
+ idx += 11; // "gwt.hosted=".length() == 11
+ }
+ }
if (idx >= 0) {
var amp = query.indexOf("&", idx);
if (amp >= 0) {
- $hosted = query.substring(idx + 11, amp);
+ $hosted = query.substring(idx, amp);
} else {
- $hosted = query.substring(idx + 11);
+ $hosted = query.substring(idx);
}
// According to RFC 3986, some of this component's characters (e.g., ':')
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 80c148d..6d5bbd7 100644
--- a/dev/core/src/com/google/gwt/core/linker/IFrameTemplate.js
+++ b/dev/core/src/com/google/gwt/core/linker/IFrameTemplate.js
@@ -68,7 +68,8 @@
var result = false;
try {
var query = $wnd.location.search;
- return (query.indexOf('gwt.hosted=') != -1
+ return (query.indexOf('gwt.codesvr=') != -1
+ || query.indexOf('gwt.hosted=') != -1
|| ($wnd.external && $wnd.external.gwtOnLoad)) &&
(query.indexOf('gwt.hybrid') == -1);
} catch (e) {