blob: 4f90b6bd1c96fd2f70ecfd01621ef35e7129c933 [file] [log] [blame]
/*
* Copyright 2014 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
/**
* This startup script is used when we run superdevmode from an app server.
*/
(function($wnd, $doc){
// document.head does not exist in IE8
var $head = $doc.head || $doc.getElementsByTagName('head')[0];
// Compute some codeserver urls so as the user does not need bookmarklets
var hostName = $wnd.location.hostname;
var serverUrl = 'http://' + hostName + ':__SUPERDEV_PORT__';
var module = '__MODULE_NAME__';
var nocacheUrl = serverUrl + '/recompile-requester/' + module;
// Insert the superdevmode nocache script in the first position of the head
var devModeScript = $doc.createElement('script');
devModeScript.src = nocacheUrl;
// Everybody except IE8 does fire an error event
// This means that we do not detect a non running SDM with IE8.
if (devModeScript.addEventListener) {
var callback = function() {
// Don't show the confirmation dialogue twice (multimodule)
if (!$wnd.__gwt__sdm__confirmed &&
(!$wnd.__gwt_sdm__recompiler || !$wnd.__gwt_sdm__recompiler.loaded)) {
$wnd.__gwt__sdm__confirmed = true;
if ($wnd.confirm(
"Couldn't load " + module + " from Super Dev Mode\n" +
"server at " + serverUrl + ".\n" +
"Please make sure this server is ready.\n" +
"Do you want to try again?")) {
$wnd.location.reload();
}
}
};
devModeScript.addEventListener("error", callback, true);
}
var injectScriptTag = function(){
$head.insertBefore(devModeScript, $head.firstElementChild || $head.children[0]);
};
if (/loaded|complete/.test($doc.readyState)) {
injectScriptTag();
} else {
//defer app script insertion until the body is ready
if($wnd.addEventListener){
$wnd.addEventListener('load', injectScriptTag, false);
} else{
$wnd.attachEvent('onload', injectScriptTag);
}
}
})(window, document);