Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
add install page for b2g
  • Loading branch information
swznd committed Jan 21, 2013
1 parent 7f2e224 commit fe8f725
Showing 1 changed file with 157 additions and 0 deletions.
157 changes: 157 additions & 0 deletions install/index.html
@@ -0,0 +1,157 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
'use strict';

/**
* Detects if the current app has been installed.
*
* See https://github.com/wavysandbox/install/blob/master/README.md
* for details on how to use.
*
*/
function install() {
var fn = install[install.type + 'Install'];
if (fn) {
fn();
} else {
install.trigger('error', 'unsupported install: ' + install.type);
}
}

function triggerChange(state) {
install.state = state;
install.trigger('change', install.state);
}

/**
* The install state. Values are:
* 'unknown': the code has not tried to detect any state.
*
* @type {String}
*/
install.state = 'unknown';

install.check = function () {
var apps = navigator.mozApps,
request;

if (navigator.mozApps) {
//Mozilla web apps
install.type = 'mozilla';
request = navigator.mozApps.getSelf();
request.onsuccess = function () {
if (this.result) {
triggerChange('installed');
} else {
triggerChange('uninstalled');
}
};

request.onerror = function (err) {
// Just console log it, no need to bother the user.
install.error = err;
triggerChange('error');
};

} else if (typeof chrome !== 'undefined' &&
chrome.webstore &&
chrome.app) {
//Chrome web apps
install.type = 'chromeStore';
if (chrome.app.isInstalled) {
triggerChange('installed');
} else {
triggerChange('uninstalled');
}
} else if (typeof window.navigator.standalone !== 'undefined') {
install.type = 'ios';
if (window.navigator.standalone) {
triggerChange('installed');
} else {
triggerChange('uninstalled');
}
} else {
install.type = 'unsupported';
triggerChange('unsupported');
}
};

/* Mozilla/Firefox installation */
install.mozillaInstallUrl = location.href + '../manifest.webapp';
install.mozillaInstall = function () {
var installRequest = navigator.mozApps.install(install.mozillaInstallUrl);

installRequest.onsuccess = function (data) {
triggerChange('installed');
};

installRequest.onerror = function (err) {
install.error = err;
triggerChange('error');
};
};

/* Chrome installation */
install.chromeInstallUrl = null;
install.chromeInstall = function () {
chrome.webstore.install(install.chromeInstallUrl,
function () {
triggerChange('installed');
}, function (err) {
install.error = err;
triggerChange('error');
});
};

/* iOS installation */
//Right now, just asks that something show a UI
//element mentioning how to install using the Safari
//"Add to Home Screen" button.
install.iosInstall = function () {
install.trigger('showiOSInstall', navigator.platform.toLowerCase());
};

//Allow install to do events.
var events = {};

install.on = function(name, func) {
events[name] = (events[name] || []).concat([func]);
};

install.off = function(name, func) {
if(events[name]) {
var res = [];

for(var i=0, l=events[name].length; i<l; i++) {
var f = events[name][i];
if(f != func) {
res.push();
}
}

events[name] = res;
}
};

install.trigger = function(name) {
var args = Array.prototype.slice.call(arguments, 1);

if(events[name]) {
for(var i=0, l=events[name].length; i<l; i++) {
events[name][i].apply(this, args);
}
}
};


//Start up the checks
install.check();
</script>
</head>
<body>
<button onclick="install()">Install</button>
</body>
</html>

0 comments on commit fe8f725

Please sign in to comment.