diff -r 79c49924ae23 -r af3740e3753f mpviewplugins/mpdetailsviewplugin/tsrc/unittest_resources/test-src/oviapi.js --- a/mpviewplugins/mpdetailsviewplugin/tsrc/unittest_resources/test-src/oviapi.js Tue Jul 06 14:13:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,408 +0,0 @@ -// The following identifier turns the IE conditional pre-compilation on. -/*@cc_on @*/ - -/** - * @namespace Parent namespace for the api.ovi.com project. - */ -if (typeof ovi == 'undefined') { - ovi = {}; -}; - -(function (ovi) { -// ovi = function() { - var that = {}; - - ovi.description = { - proxy_url: window.location.protocol + "//" + window.location.host + "/ovi-api", - sourceLocation: "/js", - urlSeperator: "/", - libFileExtension: ".js", - minified: false, - sign_method : "method-delegate-oauth", - env_path : "/alpha", - dispatch_path : "/api", - proxy_prefix : "", //useful during dev, so same consumer key can be reused for multiple instances of ovi-api - request_timeout : 30, // Network request timeout lapse (in seconds). - caller_id : "", //random id used for caller authentication - env_device : true // Do not change anything in this line, even the spacing. Else the project won't build properly for SPB. - }; - // that.description = description; - - //Ignore console calls, in case it is not imported - ovi.console = {init:function(){},log:function(){},error:function(){},debug:function(){},info:function(){}}; - - //Ignore config calls, in case config.js is not imported - ovi.config = {setenv:function(){},setServiceEndPoint:function(){}}; - - var _loaded = {}; //Mapping from script source URL to status (0 - not loaded, 1 - loaded) - var _libMappings = {}; //Mapping from script source URL to libName - var _pending_callbacks = []; //Used to delay callbacks, until all dependencies are loaded - - /** - * Method to initialize source URL using location of path from where oviapi.js was loaded - * - */ - var _initSourceURL = function() { - var scripts = document.getElementsByTagName('script'); - if (!scripts) return; // TODO Throw an exception instead. - - var srcFilePattern = new RegExp("/js/ovi/(oviapi|oviapi-min|oviapi_(.+)|oviapi_(.+)-min).js$", "gi"); - for(var index = 0; index < scripts.length; index++) { - - var ssrc = scripts.item(index).src; - if (typeof ssrc !== 'undefined') { - ssrc = ssrc.replace(/^\s*|\s*$/g,''); // To remove any white spaces. - - var startIndex = ssrc.search(srcFilePattern); - if (startIndex > 0) { - - // To determine whether the minified version of ovi libraries are used. - if (ssrc.indexOf("min") > 0) { - ovi.description.minified = true; - } - - // If only relative src can be accessed, then use window.location ro create sourceURL - if (ssrc.substr(0,6) !== 'http:/' && ssrc.substr(0,7) !== 'https:/') { - var rootdir = window.location.pathname.split('/'); - if (rootdir.length > 1) - ovi.description.proxy_url = window.location.protocol + "//" + window.location.host + "/" + rootdir[1]; - break; - } else { - ovi.description.proxy_url = ssrc.substring(0, startIndex); - break; - } - } - } - } - }; - _initSourceURL(); - - /** - * Get an array of the loaded libs - * @param {Integer} Optional param to specify the status of the loaded library. - * @return Array of libNames - */ - var _getLoadedLibNames = function(status){ - var loadedLibs = []; - if (typeof status === 'undefined') status = -1; - for (var item in _loaded){ - if ((status === -1) || (_loaded[item] === status)){ - loadedLibs.push(_libMappings[item]); - } - } - return loadedLibs; - }; - - /** - * Get an object with loaded lib name as key and load status as value (1 - loaded, 0 - not loaded) - * @param {Integer} Optional param to specify the status of the loaded library. - * @return Object with libNames as key and load status as value - */ - var _getLoadedLibNamesAsObject = function(status){ - var loadedLibs = {}; - if (typeof status === 'undefined') status = -1; - for (var item in _loaded){ - if ((status === -1) || (_loaded[item] === status)){ - loadedLibs[_libMappings[item]] = _loaded[item]; - } - } - return loadedLibs; - }; - - /** - * Test if script was already loaded - * @param {String} scriptSrcURL source URL of script - * @return {Boolean} - */ - var _isExistingScript = function(scriptSrcURL){ - for (var item in _loaded){ - if (scriptSrcURL === item){ - return true; - } - } - return false; - }; - - /** - * Method to verify if a library object has already been loaded. In case of packaged/minified - * version of ovi libraries all the libraries would reside in one single JS file. - * - * @param {String} libraryName Name of the library object to check. - * @return {Boolean} Based on whether the check is true/false. - */ - var _isExistingLib = function(libraryName) { - for (var lib in ovi.libName) { - if (libraryName == lib) { - return true; - } - } - return false; - } - - var _determineScriptSrc = function(libName, options){ - var fileName = libName; - var scriptSrcURL = ovi.description.proxy_url; - - // This helps while using this on a widget. - if (options != undefined && options.sourceURL != undefined) { - scriptSrcURL = options.sourceURL; - } - - var fileExt = ""; - // If not using slash path, then use ".js" file extension and replace dot with slash. - if(fileName.indexOf('/') == -1){ - fileExt = ovi.description.libFileExtension; - fileName = fileName.replace(/\./g,'/'); - } - - var rootDir = ""; - //If ovi package, then use source location as root dir - if (fileName.substr(0,3) === "ovi") - rootDir = ovi.description.sourceLocation; - - scriptSrcURL = scriptSrcURL + rootDir + "/" + fileName - + ((ovi.description.minified) ? "-min" : "") - + fileExt; - return scriptSrcURL; - }; - - var _loadScript = function(scriptSrcURL, srcLib, options){ - - function _loadedcallback(){ - - //console.log(new Date().getTime()+" Loaded script:"+scriptSrcURL+" "+_getLoadedLibNames(1)); - //console.log("not loaded:"+_getLoadedLibNames(0)); - - //Mark script as loaded - _loaded[scriptSrcURL] = 1; - - //If callback exists, then add to pending callbacks - if (options && options.callback != null) - _pending_callbacks.push(options.callback); - - //If 1 or more items are pending, then don't call callbacks - var done = true; - for (var item in _loaded){ - if (_loaded[item] === 0){ - done = false; - break; - } - } - - //If all libs are loaded, then call callbacks for all includes, if any - if (done == true){ - //console.log(new Date().getTime()+" DONE AT LAST\n"); - //Call all pending callbacks - for (var index = 0; index < _pending_callbacks.length; index++){ - try{ - _pending_callbacks[index].call(); - }catch(err){ - //console.log("failed to exec callback"); - } - } - _pending_callbacks = []; //Reset pending callbacks list - ovi.onReady(_getLoadedLibNamesAsObject(1)); //call onReady - } - } - - // If the library is already loaded (throug packaged/minified source file) then skip the download process. - if (!_isExistingLib(srcLib)) { - var scriptTag = document.createElement('script'); - scriptTag.type = 'text/javascript'; - scriptTag.src = scriptSrcURL; - - if(window.opera){ - scriptTag.onload = function(){ - scriptTag.onload = null; - _loadedcallback(); - }; - } - //From Nicholas C. Zakas (http://www.nczonline.net/blog/2009/06/23/loading-javascript-without-blocking/) - else if (scriptTag.readyState){ //IE - scriptTag.onreadystatechange = function(){ - if (scriptTag.readyState == "loaded" || scriptTag.readyState == "complete"){ - scriptTag.onreadystatechange = null; - _loadedcallback(); - } - }; - } else { //Others - scriptTag.onload = function(){ - _loadedcallback(); - }; - } - - var documentHead = document.getElementsByTagName("head")[0]; - var newScriptTag = documentHead.appendChild(scriptTag); - if (newScriptTag) return true; - } else { - _loadedcallback(); - return true; - } - return false; - }; - - /** - * ovi.include - Method to dynamically include JS libraries from "api.ovi.com".

- * The ovi.onReady(libs) function is triggered once the library and its - * dependencies are loaded. See documentation of ovi.onReady. - * - * @param {String,Array} - * libNames Names of one or more libraries to be included, specified as an - * array of strings or as a comma separated string. - * Library name can be specified in dot notation or as a relative path. e.g., "ovi.api.people", - * "ovi/api/people.1.0.js". External libraries must start - * with "lib" e.g., "lib.jquery", - * "lib/jquery.json.js". - * @param {Object} - * options Name/Value object to hold other optional parameters. - * @param {Function} - * options.callback Function to be called after a library has - * been loaded. - * - * @example - * ovi.include("ovi.api.maps"); - * ovi.include("ovi.api.people",{callback:function(){callMeBack()}}); - * ovi.include("ovi.api.people, ovi.api.share", {callback:function(){callMeBack()}}); - * - * - * - * @function - * @methodOf ovi - */ - ovi.include = function(libNames, options) { - var importStatus = true; - try { - if (libNames != undefined) { - if (typeof libNames === 'string') - libNames = libNames.split(','); - - // Determine which scripts (and also libraries) need to be loaded - var toLoadScript = []; - for (var index = 0; index < libNames.length; index++){ - var libName = libNames[index].replace(/^\s*|\s*$/g,''); // Remove any white spaces. - - // Determine script source URL from libName - var scriptSrcURL = _determineScriptSrc(libName, options); - if (!_isExistingScript(scriptSrcURL)) { - _loaded[scriptSrcURL] = 0; //Mark script as pending - _libMappings[scriptSrcURL] = libName; - toLoadScript.push(scriptSrcURL); - - } else { - if (options && options.callback) - toLoadScript.push(scriptSrcURL); - } - //console.log("o================o"); - } - - var lstatus; - //Load scripts that need to be loaded. Pass optional callback only for last script (since callback should be called only once). - for (var index = 0; index < toLoadScript.length; index ++){ - if (index == (toLoadScript.length-1)) // if last lib, then pass optional callback - lstatus = _loadScript(toLoadScript[index], _libMappings[toLoadScript[index]], options); - else - lstatus = _loadScript(toLoadScript[index], _libMappings[toLoadScript[index]]); - if (!lstatus) importStatus = false; - } - } - } catch (exception) { - importStatus = false; - } - return importStatus; - }; - // that.include = include; - - /** - * ovi.onReady - Callback function triggered after calling ovi.include, - * once the library and its dependencies are loaded. Developers can override the default - * implementation, with their own ovi.onReady function. If successive calls to ovi.include are made, - * ovi.onReady may be triggered only once. - * - * @param {Object} - * libs - library name as key and load status as value (0 - not - * loaded, 1 - loaded). Developer must check if the libraries - * they need are loaded before using them using the ovi.testIfLoaded function. - * - * @function - * @methodOf ovi - */ - ovi.onReady = function(libs) { - //default, do nothing - //console.log("onReady:"); - //console.log(libs); - }; - // that.onReady = onReady; - - /** - * ovi.testIfLoaded - Utility function to test if the specified lib names are marked as loaded in the specified loaded libs object. - * Used to test the status of libs in ovi.onReady. - * - * @param {String,Array} - * libNames Names of one or more libraries to be included, specified as an - * array of strings or as a comma separated string. - * - * @param {Object} - * loadedLibs A mapping of lib name string to load status (0 - not loaded, 1 - loaded) - * - * @return {Boolean} - * - * @function - * @methodOf ovi - */ - ovi.testIfLoaded = function(libNames, loadedLibs){ - var reqdlibs = libNames; - if (typeof libNames === 'string') - reqdlibs = libNames.split(','); - for (var index = 0; index < reqdlibs.length; index ++){ - var libName = reqdlibs[index].replace(/\s/g,''); - if ((libName in loadedLibs) && (loadedLibs[libName] == 1)) - continue; - else - return false; - } - return true; - }; - // that.testIfLoaded = testIfLoaded; - - /** - * ovi.setCallerId - Sets caller id required to authenticate API caller with Ovi API backend. - * - * @param {String} - * cid - Caller id string - * - * @function - * @methodOf ovi - */ - ovi.setCallerId = function(cid){ - ovi.description.caller_id = cid; - }; - - // return that; -// }(); -})(ovi); - - -/** - * @property {Object} services Object that holds configurable parameters of all the libraries. - * @memberOf ovi - */ -ovi.services = {}; -ovi.services["import"] = ovi.description; - -/** - * @property {Object} libName Object that holds the identified name of all the OVI API libraries. - * @memberOf ovi - */ -ovi.libName = {}; -ovi.libName["ovi.oviapi"] = ovi; - -ovi.include('ovi.config'); - -/* -@@todo: - -- if one include inside of another fails to load, then failure is silent -- file imports will fail silently if the path is wrong -- Safari reinclude doesn't work (seems that DOM removeChild doesn't really remove the script) -*/ \ No newline at end of file