define(function () { 'use strict'; var env = {}; env.getEnvironment = function (callback) { // FIXME: we assume this code runs on the same thread as the // javascript executed from sugar-toolkit-gtk3 (python) if (env.isSugarizer()) { var getUrlParameter = function(name) { var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search); return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); }; window.top.sugar = {}; window.top.sugar.environment = { activityId: getUrlParameter("aid"), activityName: getUrlParameter("n"), bundleId: getUrlParameter("a"), objectId: getUrlParameter("o"), sharedId: getUrlParameter("s"), help: getUrlParameter("h"), standAlone: getUrlParameter("sa") }; if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) { chrome.storage.local.get('sugar_settings', function(values) { window.top.sugar.environment.user = JSON.parse(values.sugar_settings); callback(null, window.top.sugar.environment); }); } else { window.top.sugar.environment.user = JSON.parse(localStorage.sugar_settings); setTimeout(function () { callback(null, window.top.sugar.environment); }, 0); } } else if (env.isStandalone()) { setTimeout(function () { callback(null, {}); }, 0); } else { var environmentCallback = function () { callback(null, window.top.sugar.environment); }; if (window.top.sugar) { setTimeout(function () { environmentCallback(); }, 0); } else { window.top.sugar = {}; window.top.sugar.onEnvironmentSet = function () { environmentCallback(); }; } } }; env.getObjectId = function (callback) { env.getEnvironment(function (error, environment) { callback(environment.objectId); }); }; env.getURLScheme = function () { return window.location.protocol; }; env.getHost = function() { return window.location.hostname; }; env.isStandalone = function () { var webActivityURLScheme = "activity:"; var fileURLScheme = "file:"; var currentURLScheme = env.getURLScheme(); // the control of hostname !== '0.0.0.0' is used // for compatibility with F18 and webkit1 return currentURLScheme !== webActivityURLScheme && currentURLScheme !== fileURLScheme && window.location.hostname !== '0.0.0.0'; }; env.isSugarizer = function() { // HACK: If in Chrome App automatic deduction that in Sugarizer if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) { return true; } else if (typeof(Storage)!=="undefined" && typeof(window.localStorage)!=="undefined") { try { return (window.localStorage.getItem('sugar_settings') !== null); } catch(err) { return false; } } return false; }; env.isSugarizerOS = function() { if (typeof window.sugarizerOS != 'undefined') return true; return false; } return env; });