Mercurial > hg > ywww
diff booksMobOld/hosted.html @ 6:077b0a0a3e6d
remaining originals according to dependency walk
author | Robert Boland <robert@markup.co.uk> |
---|---|
date | Thu, 16 Feb 2017 22:29:02 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/booksMobOld/hosted.html Thu Feb 16 22:29:02 2017 +0000 @@ -0,0 +1,333 @@ +<html> +<head><script> +var $wnd = parent; +var $doc = $wnd.document; +var $moduleName, $moduleBase, $entry +,$stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null +,$sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null; +// Lightweight metrics +if ($stats) { + var moduleFuncName = location.search.substr(1); + var moduleFunc = $wnd[moduleFuncName]; + var moduleName = moduleFunc ? moduleFunc.moduleName : "unknown"; + $stats({moduleName:moduleName,sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'}); +} +var $hostedHtmlVersion="2.0"; + +var gwtOnLoad; +var $hosted = "localhost:9997"; + +function loadIframe(url) { + var topDoc = window.top.document; + + // create an iframe + var iframeDiv = topDoc.createElement("div"); + iframeDiv.innerHTML = "<iframe scrolling=no frameborder=0 src='" + url + "'>"; + var iframe = iframeDiv.firstChild; + + // mess with the iframe style a little + var iframeStyle = iframe.style; + iframeStyle.position = "absolute"; + iframeStyle.borderWidth = "0"; + iframeStyle.left = "0"; + iframeStyle.top = "0"; + iframeStyle.width = "100%"; + iframeStyle.backgroundColor = "#ffffff"; + iframeStyle.zIndex = "1"; + iframeStyle.height = "100%"; + + // update the top window's document's body's style + var hostBodyStyle = window.top.document.body.style; + hostBodyStyle.margin = "0"; + hostBodyStyle.height = iframeStyle.height; + hostBodyStyle.overflow = "hidden"; + + // insert the iframe + topDoc.body.insertBefore(iframe, topDoc.body.firstChild); +} + +var ua = navigator.userAgent.toLowerCase(); +if (ua.indexOf("gecko") != -1) { + // install eval wrapper on FF to avoid EvalError problem + var __eval = window.eval; + window.eval = function(s) { + return __eval(s); + } +} +if (ua.indexOf("chrome") != -1) { + // work around __gwt_ObjectId appearing in JS objects + var hop = Object.prototype.hasOwnProperty; + Object.prototype.hasOwnProperty = function(prop) { + return prop != "__gwt_ObjectId" && hop.call(this, prop); + }; +} + +// wrapper to call JS methods, which we need both to be able to supply a +// different this for method lookup and to get the exception back +function __gwt_jsInvoke(thisObj, methodName) { + try { + var args = Array.prototype.slice.call(arguments, 2); + return [0, window[methodName].apply(thisObj, args)]; + } catch (e) { + return [1, e]; + } +} + +var __gwt_javaInvokes = []; +function __gwt_makeJavaInvoke(argCount) { + return __gwt_javaInvokes[argCount] || __gwt_doMakeJavaInvoke(argCount); +} + +function __gwt_doMakeJavaInvoke(argCount) { + // IE6 won't eval() anonymous functions except as r-values + var argList = ""; + for (var i = 0; i < argCount; i++) { + argList += ",p" + i; + } + var argListNoComma = argList.substring(1); + + return eval( + "__gwt_javaInvokes[" + argCount + "] =\n" + + " function(thisObj, dispId" + argList + ") {\n" + + " var result = __static(dispId, thisObj" + argList + ");\n" + + " if (result[0]) {\n" + + " throw result[1];\n" + + " } else {\n" + + " return result[1];\n" + + " }\n" + + " }\n" + ); +} + +/* + * This is used to create tear-offs of Java methods. Each function corresponds + * to exactly one dispId, and also embeds the argument count. We get the "this" + * value from the context in which the function is being executed. + * Function-object identity is preserved by caching in a sparse array. + */ +var __gwt_tearOffs = []; +var __gwt_tearOffGenerators = []; +function __gwt_makeTearOff(proxy, dispId, argCount) { + return __gwt_tearOffs[dispId] || __gwt_doMakeTearOff(dispId, argCount); +} + +function __gwt_doMakeTearOff(dispId, argCount) { + return __gwt_tearOffs[dispId] = + (__gwt_tearOffGenerators[argCount] || __gwt_doMakeTearOffGenerator(argCount))(dispId); +} + +function __gwt_doMakeTearOffGenerator(argCount) { + // IE6 won't eval() anonymous functions except as r-values + var argList = ""; + for (var i = 0; i < argCount; i++) { + argList += ",p" + i; + } + var argListNoComma = argList.substring(1); + + return eval( + "__gwt_tearOffGenerators[" + argCount + "] =\n" + + " function(dispId) {\n" + + " return function(" + argListNoComma + ") {\n" + + " var result = __static(dispId, this" + argList + ");\n" + + " if (result[0]) {\n" + + " throw result[1];\n" + + " } else {\n" + + " return result[1];\n" + + " }\n" + + " }\n" + + " }\n" + ); +} + +function __gwt_makeResult(isException, result) { + return [isException, result]; +} + +function __gwt_disconnected() { + // Prevent double-invocation. + window.__gwt_disconnected = new Function(); + // Do it in a timeout so we can be sure we have a clean stack. + window.setTimeout(__gwt_disconnected_impl, 1); +} + +function __gwt_disconnected_impl() { + var topWin = window.top; + var topDoc = topWin.document; + var outer = topDoc.createElement("div"); + // Do not insert whitespace or outer.firstChild will get a text node. + outer.innerHTML = + '<div style="position:absolute;z-index:2147483646;left:0px;top:0px;right:0px;bottom:0px;filter:alpha(opacity=75);opacity:0.75;background-color:#000000;"></div>' + + '<div style="position:absolute;z-index:2147483647;left:50px;top:50px;width:600px;color:#FFFFFF;font-family:verdana;">' + + '<div style="font-size:30px;font-weight:bold;">GWT Code Server Disconnected</div>' + + '<p style="font-size:15px;"> Most likely, you closed GWT development mode. Or you might have lost network connectivity. To fix this, try restarting GWT Development Mode and <a style="color: #FFFFFF; font-weight: bold;" href="javascript:location.reload()">REFRESH</a> this page.</p>' + + '</div>' + ; + topDoc.body.appendChild(outer); + var glass = outer.firstChild; + var glassStyle = glass.style; + + // Scroll to the top and remove scrollbars. + topWin.scrollTo(0, 0); + if (topDoc.compatMode == "BackCompat") { + topDoc.body.style["overflow"] = "hidden"; + } else { + topDoc.documentElement.style["overflow"] = "hidden"; + } + + // Steal focus. + glass.focus(); + + if ((navigator.userAgent.indexOf("MSIE") >= 0) && (topDoc.compatMode == "BackCompat")) { + // IE quirks mode doesn't support right/bottom, but does support this. + glassStyle.width = "125%"; + glassStyle.height = "100%"; + } else if (navigator.userAgent.indexOf("MSIE 6") >= 0) { + // IE6 doesn't have a real standards mode, so we have to use hacks. + glassStyle.width = "125%"; // Get past scroll bar area. + // Nasty CSS; onresize would be better but the outer window won't let us add a listener IE. + glassStyle.setExpression("height", "document.documentElement.clientHeight"); + } +} + +function findPluginObject() { + try { + return document.getElementById('pluginObject'); + } catch (e) { + return null; + } +} + +function findPluginEmbed() { + try { + return document.getElementById('pluginEmbed') + } catch (e) { + return null; + } +} + +function findPluginXPCOM() { + try { + return __gwt_HostedModePlugin; + } catch (e) { + return null; + } +} + +gwtOnLoad = function(errFn, modName, modBase){ + $moduleName = modName; + $moduleBase = modBase; + + // Note that the order is important + var pluginFinders = [ + findPluginXPCOM, + findPluginObject, + findPluginEmbed, + ]; + var topWin = window.top; + var url = topWin.location.href; + if (!topWin.__gwt_SessionID) { + var ASCII_EXCLAMATION = 33; + var ASCII_TILDE = 126; + var chars = []; + for (var i = 0; i < 16; ++i) { + chars.push(Math.floor(ASCII_EXCLAMATION + + Math.random() * (ASCII_TILDE - ASCII_EXCLAMATION + 1))); + } + topWin.__gwt_SessionID = String.fromCharCode.apply(null, chars); + } + var plugin = null; + for (var i = 0; i < pluginFinders.length; ++i) { + try { + var maybePlugin = pluginFinders[i](); + if (maybePlugin != null && maybePlugin.init(window)) { + plugin = maybePlugin; + break; + } + } catch (e) { + } + } + if (!plugin) { + // try searching for a v1 plugin for backwards compatibility + var found = false; + for (var i = 0; i < pluginFinders.length; ++i) { + try { + plugin = pluginFinders[i](); + if (plugin != null && plugin.connect($hosted, $moduleName, window)) { + return; + } + } catch (e) { + } + } + loadIframe("http://gwt.google.com/missing-plugin"); + } else { + if (plugin.connect(url, topWin.__gwt_SessionID, $hosted, $moduleName, + $hostedHtmlVersion)) { + window.onUnload = function() { + try { + // wrap in try/catch since plugins are not required to supply this + plugin.disconnect(); + } catch (e) { + } + }; + } else { + if (errFn) { + errFn(modName); + } else { + alert("Plugin failed to connect to hosted mode server at " + $hosted); + loadIframe("http://code.google.com/p/google-web-toolkit/wiki/TroubleshootingOOPHM"); + } + } + } +} + +window.onunload = function() { +}; + +// Lightweight metrics +window.fireOnModuleLoadStart = function(className) { + $stats && $stats({moduleName:$moduleName, sessionId:$sessionId, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date()).getTime(), type:'onModuleLoadStart', className:className}); +}; + +window.__gwt_module_id = 0; +</script></head> +<body> +<font face='arial' size='-1'>This html file is for hosted mode support.</font> +<script><!-- +// Lightweight metrics +$stats && $stats({moduleName:$moduleName, sessionId:$sessionId, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date()).getTime(), type:'moduleEvalEnd'}); + +// OOPHM currently only supports IFrameLinker +var query = parent.location.search; +if (!findPluginXPCOM()) { + document.write('<embed id="pluginEmbed" type="application/x-gwt-hosted-mode" width="10" height="10">'); + document.write('</embed>'); + document.write('<object id="pluginObject" CLASSID="CLSID:1D6156B6-002B-49E7-B5CA-C138FB843B4E">'); + document.write('</object>'); +} + +// 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, amp); + } else { + $hosted = query.substring(idx); + } + + // According to RFC 3986, some of this component's characters (e.g., ':') + // are reserved and *may* be escaped. + $hosted = decodeURIComponent($hosted); +} + +query = window.location.search.substring(1); +if (query && $wnd[query]) setTimeout($wnd[query].onScriptLoad, 1); +--></script></body></html>