happstack-yui-7373.5.2: bundle/cache-offline/cache-offline-coverage.js
/*
YUI 3.7.3 (build 5687)
Copyright 2012 Yahoo! Inc. All rights reserved.
Licensed under the BSD License.
http://yuilibrary.com/license/
*/
if (typeof _yuitest_coverage == "undefined"){
_yuitest_coverage = {};
_yuitest_coverline = function(src, line){
var coverage = _yuitest_coverage[src];
if (!coverage.lines[line]){
coverage.calledLines++;
}
coverage.lines[line]++;
};
_yuitest_coverfunc = function(src, name, line){
var coverage = _yuitest_coverage[src],
funcId = name + ":" + line;
if (!coverage.functions[funcId]){
coverage.calledFunctions++;
}
coverage.functions[funcId]++;
};
}
_yuitest_coverage["build/cache-offline/cache-offline.js"] = {
lines: {},
functions: {},
coveredLines: 0,
calledLines: 0,
coveredFunctions: 0,
calledFunctions: 0,
path: "build/cache-offline/cache-offline.js",
code: []
};
_yuitest_coverage["build/cache-offline/cache-offline.js"].code=["YUI.add('cache-offline', function (Y, NAME) {","","/**"," * Provides a Cache subclass which uses HTML5 `localStorage` for persistence."," * "," * @module cache"," * @submodule cache-offline"," */","","/**"," * Extends Cache utility with offline functionality."," * @class CacheOffline"," * @extends Cache"," * @constructor"," */","function CacheOffline() {"," CacheOffline.superclass.constructor.apply(this, arguments);","}","","var localStorage = null,"," JSON = Y.JSON;","","// Bug 2529572","try {"," localStorage = Y.config.win.localStorage;","}","catch(e) {","}","","/////////////////////////////////////////////////////////////////////////////","//","// CacheOffline events","//","/////////////////////////////////////////////////////////////////////////////","","/**","* @event error","* @description Fired when an entry could not be added, most likely due to","* exceeded browser quota.","* <dl>","* <dt>error (Object)</dt> <dd>The error object.</dd>","* </dl>","*/","","/////////////////////////////////////////////////////////////////////////////","//","// CacheOffline static","//","/////////////////////////////////////////////////////////////////////////////","Y.mix(CacheOffline, {"," /**"," * Class name."," *"," * @property NAME"," * @type String"," * @static"," * @final"," * @value \"cacheOffline\""," */"," NAME: \"cacheOffline\",",""," ATTRS: {"," /////////////////////////////////////////////////////////////////////////////"," //"," // CacheOffline Attributes"," //"," /////////////////////////////////////////////////////////////////////////////",""," /**"," * @attribute sandbox"," * @description A string that must be passed in via the constructor."," * This identifier is used to sandbox one cache instance's entries"," * from another. Calling the cache instance's flush and length methods"," * or get(\"entries\") will apply to only these sandboxed entries."," * @type String"," * @default \"default\""," * @initOnly"," */"," sandbox: {"," value: \"default\","," writeOnce: \"initOnly\""," },",""," /**"," * @attribute expires"," * @description Absolute Date when data expires or"," * relative number of milliseconds. Zero disables expiration."," * @type Date | Number"," * @default 86400000 (one day)"," */"," expires: {"," value: 86400000"," },",""," /**"," * @attribute max"," * @description Disabled."," * @readOnly"," * @default null"," */"," max: {"," value: null,"," readOnly: true"," },",""," /**"," * @attribute uniqueKeys"," * @description Always true for CacheOffline."," * @readOnly"," * @default true"," */"," uniqueKeys: {"," value: true,"," readOnly: true,"," setter: function() {"," return true;"," }"," }"," },",""," /**"," * Removes all items from all sandboxes. Useful if localStorage has"," * exceeded quota. Only supported on browsers that implement HTML 5"," * localStorage."," *"," * @method flushAll"," * @static"," */"," flushAll: function() {"," var store = localStorage, key;"," if(store) {"," if(store.clear) {"," store.clear();"," }"," // FF2.x and FF3.0.x"," else {"," for (key in store) {"," if (store.hasOwnProperty(key)) {"," store.removeItem(key);"," delete store[key];"," }"," }"," }"," }"," else {"," }"," }","});","","Y.extend(CacheOffline, Y.Cache, localStorage ? {","/////////////////////////////////////////////////////////////////////////////","//","// Offline is supported","//","/////////////////////////////////////////////////////////////////////////////",""," /////////////////////////////////////////////////////////////////////////////"," //"," // CacheOffline protected methods"," //"," /////////////////////////////////////////////////////////////////////////////"," /**"," * Always return null."," *"," * @method _setMax"," * @protected"," */"," _setMax: function(value) {"," return null;"," },",""," /**"," * Gets size."," *"," * @method _getSize"," * @protected"," */"," _getSize: function() {"," var count = 0,"," i=0,"," l=localStorage.length;"," for(; i<l; ++i) {"," // Match sandbox id"," if(localStorage.key(i).indexOf(this.get(\"sandbox\")) === 0) {"," count++;"," }"," }"," return count;"," },",""," /**"," * Gets all entries."," *"," * @method _getEntries"," * @protected"," */"," _getEntries: function() {"," var entries = [],"," i=0,"," l=localStorage.length,"," sandbox = this.get(\"sandbox\");"," for(; i<l; ++i) {"," // Match sandbox id"," if(localStorage.key(i).indexOf(sandbox) === 0) {"," entries[i] = JSON.parse(localStorage.key(i).substring(sandbox.length));"," }"," }"," return entries;"," },",""," /**"," * Adds entry to cache."," *"," * @method _defAddFn"," * @param e {Event.Facade} Event Facade with the following properties:"," * <dl>"," * <dt>entry (Object)</dt> <dd>The cached entry.</dd>"," * </dl>"," * @protected"," */"," _defAddFn: function(e) {"," var entry = e.entry,"," request = entry.request,"," cached = entry.cached,"," expires = entry.expires;",""," // Convert Dates to msecs on the way into localStorage"," entry.cached = cached.getTime();"," entry.expires = expires ? expires.getTime() : expires;",""," try {"," localStorage.setItem(this.get(\"sandbox\")+JSON.stringify({\"request\":request}), JSON.stringify(entry));"," }"," catch(error) {"," this.fire(\"error\", {error:error});"," }"," },",""," /**"," * Flushes cache."," *"," * @method _defFlushFn"," * @param e {Event.Facade} Event Facade object."," * @protected"," */"," _defFlushFn: function(e) {"," var key,"," i=localStorage.length-1;"," for(; i>-1; --i) {"," // Match sandbox id"," key = localStorage.key(i);"," if(key.indexOf(this.get(\"sandbox\")) === 0) {"," localStorage.removeItem(key);"," }"," }"," },",""," /////////////////////////////////////////////////////////////////////////////"," //"," // CacheOffline public methods"," //"," /////////////////////////////////////////////////////////////////////////////"," /**"," * Adds a new entry to the cache of the format"," * {request:request, response:response, cached:cached, expires: expires}."," *"," * @method add"," * @param request {Object} Request value must be a String or JSON."," * @param response {Object} Response value must be a String or JSON."," */",""," /**"," * Retrieves cached object for given request, if available."," * Returns null if there is no cache match."," *"," * @method retrieve"," * @param request {Object} Request object."," * @return {Object} Cached object with the properties request, response,"," * and expires, or null."," */"," retrieve: function(request) {"," this.fire(\"request\", {request: request});",""," var entry, expires, sandboxedrequest;",""," try {"," sandboxedrequest = this.get(\"sandbox\")+JSON.stringify({\"request\":request});"," try {"," entry = JSON.parse(localStorage.getItem(sandboxedrequest));"," }"," catch(e) {"," }"," }"," catch(e2) {"," }",""," if(entry) {"," // Convert msecs to Dates on the way out of localStorage"," entry.cached = new Date(entry.cached);"," expires = entry.expires;"," expires = !expires ? null : new Date(expires);"," entry.expires = expires;",""," if(this._isMatch(request, entry)) {"," this.fire(\"retrieve\", {entry: entry});"," return entry;"," }"," }"," return null;"," }","} :","/////////////////////////////////////////////////////////////////////////////","//","// Offline is not supported","//","/////////////////////////////////////////////////////////////////////////////","{"," /**"," * Always return null."," *"," * @method _setMax"," * @protected"," */"," _setMax: function(value) {"," return null;"," }","});","","","Y.CacheOffline = CacheOffline;","","","}, '3.7.3', {\"requires\": [\"cache-base\", \"json\"]});"];
_yuitest_coverage["build/cache-offline/cache-offline.js"].lines = {"1":0,"16":0,"17":0,"20":0,"24":0,"25":0,"50":0,"116":0,"130":0,"131":0,"132":0,"133":0,"137":0,"138":0,"139":0,"140":0,"150":0,"169":0,"179":0,"182":0,"184":0,"185":0,"188":0,"198":0,"202":0,"204":0,"205":0,"208":0,"222":0,"228":0,"229":0,"231":0,"232":0,"235":0,"247":0,"249":0,"251":0,"252":0,"253":0,"282":0,"284":0,"286":0,"287":0,"288":0,"289":0,"297":0,"299":0,"300":0,"301":0,"302":0,"304":0,"305":0,"306":0,"309":0,"325":0,"330":0};
_yuitest_coverage["build/cache-offline/cache-offline.js"].functions = {"CacheOffline:16":0,"setter:115":0,"flushAll:129":0,"_setMax:168":0,"_getSize:178":0,"_getEntries:197":0,"_defAddFn:221":0,"_defFlushFn:246":0,"retrieve:281":0,"_setMax:324":0,"(anonymous 1):1":0};
_yuitest_coverage["build/cache-offline/cache-offline.js"].coveredLines = 56;
_yuitest_coverage["build/cache-offline/cache-offline.js"].coveredFunctions = 11;
_yuitest_coverline("build/cache-offline/cache-offline.js", 1);
YUI.add('cache-offline', function (Y, NAME) {
/**
* Provides a Cache subclass which uses HTML5 `localStorage` for persistence.
*
* @module cache
* @submodule cache-offline
*/
/**
* Extends Cache utility with offline functionality.
* @class CacheOffline
* @extends Cache
* @constructor
*/
_yuitest_coverfunc("build/cache-offline/cache-offline.js", "(anonymous 1)", 1);
_yuitest_coverline("build/cache-offline/cache-offline.js", 16);
function CacheOffline() {
_yuitest_coverfunc("build/cache-offline/cache-offline.js", "CacheOffline", 16);
_yuitest_coverline("build/cache-offline/cache-offline.js", 17);
CacheOffline.superclass.constructor.apply(this, arguments);
}
_yuitest_coverline("build/cache-offline/cache-offline.js", 20);
var localStorage = null,
JSON = Y.JSON;
// Bug 2529572
_yuitest_coverline("build/cache-offline/cache-offline.js", 24);
try {
_yuitest_coverline("build/cache-offline/cache-offline.js", 25);
localStorage = Y.config.win.localStorage;
}
catch(e) {
}
/////////////////////////////////////////////////////////////////////////////
//
// CacheOffline events
//
/////////////////////////////////////////////////////////////////////////////
/**
* @event error
* @description Fired when an entry could not be added, most likely due to
* exceeded browser quota.
* <dl>
* <dt>error (Object)</dt> <dd>The error object.</dd>
* </dl>
*/
/////////////////////////////////////////////////////////////////////////////
//
// CacheOffline static
//
/////////////////////////////////////////////////////////////////////////////
_yuitest_coverline("build/cache-offline/cache-offline.js", 50);
Y.mix(CacheOffline, {
/**
* Class name.
*
* @property NAME
* @type String
* @static
* @final
* @value "cacheOffline"
*/
NAME: "cacheOffline",
ATTRS: {
/////////////////////////////////////////////////////////////////////////////
//
// CacheOffline Attributes
//
/////////////////////////////////////////////////////////////////////////////
/**
* @attribute sandbox
* @description A string that must be passed in via the constructor.
* This identifier is used to sandbox one cache instance's entries
* from another. Calling the cache instance's flush and length methods
* or get("entries") will apply to only these sandboxed entries.
* @type String
* @default "default"
* @initOnly
*/
sandbox: {
value: "default",
writeOnce: "initOnly"
},
/**
* @attribute expires
* @description Absolute Date when data expires or
* relative number of milliseconds. Zero disables expiration.
* @type Date | Number
* @default 86400000 (one day)
*/
expires: {
value: 86400000
},
/**
* @attribute max
* @description Disabled.
* @readOnly
* @default null
*/
max: {
value: null,
readOnly: true
},
/**
* @attribute uniqueKeys
* @description Always true for CacheOffline.
* @readOnly
* @default true
*/
uniqueKeys: {
value: true,
readOnly: true,
setter: function() {
_yuitest_coverfunc("build/cache-offline/cache-offline.js", "setter", 115);
_yuitest_coverline("build/cache-offline/cache-offline.js", 116);
return true;
}
}
},
/**
* Removes all items from all sandboxes. Useful if localStorage has
* exceeded quota. Only supported on browsers that implement HTML 5
* localStorage.
*
* @method flushAll
* @static
*/
flushAll: function() {
_yuitest_coverfunc("build/cache-offline/cache-offline.js", "flushAll", 129);
_yuitest_coverline("build/cache-offline/cache-offline.js", 130);
var store = localStorage, key;
_yuitest_coverline("build/cache-offline/cache-offline.js", 131);
if(store) {
_yuitest_coverline("build/cache-offline/cache-offline.js", 132);
if(store.clear) {
_yuitest_coverline("build/cache-offline/cache-offline.js", 133);
store.clear();
}
// FF2.x and FF3.0.x
else {
_yuitest_coverline("build/cache-offline/cache-offline.js", 137);
for (key in store) {
_yuitest_coverline("build/cache-offline/cache-offline.js", 138);
if (store.hasOwnProperty(key)) {
_yuitest_coverline("build/cache-offline/cache-offline.js", 139);
store.removeItem(key);
_yuitest_coverline("build/cache-offline/cache-offline.js", 140);
delete store[key];
}
}
}
}
else {
}
}
});
_yuitest_coverline("build/cache-offline/cache-offline.js", 150);
Y.extend(CacheOffline, Y.Cache, localStorage ? {
/////////////////////////////////////////////////////////////////////////////
//
// Offline is supported
//
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//
// CacheOffline protected methods
//
/////////////////////////////////////////////////////////////////////////////
/**
* Always return null.
*
* @method _setMax
* @protected
*/
_setMax: function(value) {
_yuitest_coverfunc("build/cache-offline/cache-offline.js", "_setMax", 168);
_yuitest_coverline("build/cache-offline/cache-offline.js", 169);
return null;
},
/**
* Gets size.
*
* @method _getSize
* @protected
*/
_getSize: function() {
_yuitest_coverfunc("build/cache-offline/cache-offline.js", "_getSize", 178);
_yuitest_coverline("build/cache-offline/cache-offline.js", 179);
var count = 0,
i=0,
l=localStorage.length;
_yuitest_coverline("build/cache-offline/cache-offline.js", 182);
for(; i<l; ++i) {
// Match sandbox id
_yuitest_coverline("build/cache-offline/cache-offline.js", 184);
if(localStorage.key(i).indexOf(this.get("sandbox")) === 0) {
_yuitest_coverline("build/cache-offline/cache-offline.js", 185);
count++;
}
}
_yuitest_coverline("build/cache-offline/cache-offline.js", 188);
return count;
},
/**
* Gets all entries.
*
* @method _getEntries
* @protected
*/
_getEntries: function() {
_yuitest_coverfunc("build/cache-offline/cache-offline.js", "_getEntries", 197);
_yuitest_coverline("build/cache-offline/cache-offline.js", 198);
var entries = [],
i=0,
l=localStorage.length,
sandbox = this.get("sandbox");
_yuitest_coverline("build/cache-offline/cache-offline.js", 202);
for(; i<l; ++i) {
// Match sandbox id
_yuitest_coverline("build/cache-offline/cache-offline.js", 204);
if(localStorage.key(i).indexOf(sandbox) === 0) {
_yuitest_coverline("build/cache-offline/cache-offline.js", 205);
entries[i] = JSON.parse(localStorage.key(i).substring(sandbox.length));
}
}
_yuitest_coverline("build/cache-offline/cache-offline.js", 208);
return entries;
},
/**
* Adds entry to cache.
*
* @method _defAddFn
* @param e {Event.Facade} Event Facade with the following properties:
* <dl>
* <dt>entry (Object)</dt> <dd>The cached entry.</dd>
* </dl>
* @protected
*/
_defAddFn: function(e) {
_yuitest_coverfunc("build/cache-offline/cache-offline.js", "_defAddFn", 221);
_yuitest_coverline("build/cache-offline/cache-offline.js", 222);
var entry = e.entry,
request = entry.request,
cached = entry.cached,
expires = entry.expires;
// Convert Dates to msecs on the way into localStorage
_yuitest_coverline("build/cache-offline/cache-offline.js", 228);
entry.cached = cached.getTime();
_yuitest_coverline("build/cache-offline/cache-offline.js", 229);
entry.expires = expires ? expires.getTime() : expires;
_yuitest_coverline("build/cache-offline/cache-offline.js", 231);
try {
_yuitest_coverline("build/cache-offline/cache-offline.js", 232);
localStorage.setItem(this.get("sandbox")+JSON.stringify({"request":request}), JSON.stringify(entry));
}
catch(error) {
_yuitest_coverline("build/cache-offline/cache-offline.js", 235);
this.fire("error", {error:error});
}
},
/**
* Flushes cache.
*
* @method _defFlushFn
* @param e {Event.Facade} Event Facade object.
* @protected
*/
_defFlushFn: function(e) {
_yuitest_coverfunc("build/cache-offline/cache-offline.js", "_defFlushFn", 246);
_yuitest_coverline("build/cache-offline/cache-offline.js", 247);
var key,
i=localStorage.length-1;
_yuitest_coverline("build/cache-offline/cache-offline.js", 249);
for(; i>-1; --i) {
// Match sandbox id
_yuitest_coverline("build/cache-offline/cache-offline.js", 251);
key = localStorage.key(i);
_yuitest_coverline("build/cache-offline/cache-offline.js", 252);
if(key.indexOf(this.get("sandbox")) === 0) {
_yuitest_coverline("build/cache-offline/cache-offline.js", 253);
localStorage.removeItem(key);
}
}
},
/////////////////////////////////////////////////////////////////////////////
//
// CacheOffline public methods
//
/////////////////////////////////////////////////////////////////////////////
/**
* Adds a new entry to the cache of the format
* {request:request, response:response, cached:cached, expires: expires}.
*
* @method add
* @param request {Object} Request value must be a String or JSON.
* @param response {Object} Response value must be a String or JSON.
*/
/**
* Retrieves cached object for given request, if available.
* Returns null if there is no cache match.
*
* @method retrieve
* @param request {Object} Request object.
* @return {Object} Cached object with the properties request, response,
* and expires, or null.
*/
retrieve: function(request) {
_yuitest_coverfunc("build/cache-offline/cache-offline.js", "retrieve", 281);
_yuitest_coverline("build/cache-offline/cache-offline.js", 282);
this.fire("request", {request: request});
_yuitest_coverline("build/cache-offline/cache-offline.js", 284);
var entry, expires, sandboxedrequest;
_yuitest_coverline("build/cache-offline/cache-offline.js", 286);
try {
_yuitest_coverline("build/cache-offline/cache-offline.js", 287);
sandboxedrequest = this.get("sandbox")+JSON.stringify({"request":request});
_yuitest_coverline("build/cache-offline/cache-offline.js", 288);
try {
_yuitest_coverline("build/cache-offline/cache-offline.js", 289);
entry = JSON.parse(localStorage.getItem(sandboxedrequest));
}
catch(e) {
}
}
catch(e2) {
}
_yuitest_coverline("build/cache-offline/cache-offline.js", 297);
if(entry) {
// Convert msecs to Dates on the way out of localStorage
_yuitest_coverline("build/cache-offline/cache-offline.js", 299);
entry.cached = new Date(entry.cached);
_yuitest_coverline("build/cache-offline/cache-offline.js", 300);
expires = entry.expires;
_yuitest_coverline("build/cache-offline/cache-offline.js", 301);
expires = !expires ? null : new Date(expires);
_yuitest_coverline("build/cache-offline/cache-offline.js", 302);
entry.expires = expires;
_yuitest_coverline("build/cache-offline/cache-offline.js", 304);
if(this._isMatch(request, entry)) {
_yuitest_coverline("build/cache-offline/cache-offline.js", 305);
this.fire("retrieve", {entry: entry});
_yuitest_coverline("build/cache-offline/cache-offline.js", 306);
return entry;
}
}
_yuitest_coverline("build/cache-offline/cache-offline.js", 309);
return null;
}
} :
/////////////////////////////////////////////////////////////////////////////
//
// Offline is not supported
//
/////////////////////////////////////////////////////////////////////////////
{
/**
* Always return null.
*
* @method _setMax
* @protected
*/
_setMax: function(value) {
_yuitest_coverfunc("build/cache-offline/cache-offline.js", "_setMax", 324);
_yuitest_coverline("build/cache-offline/cache-offline.js", 325);
return null;
}
});
_yuitest_coverline("build/cache-offline/cache-offline.js", 330);
Y.CacheOffline = CacheOffline;
}, '3.7.3', {"requires": ["cache-base", "json"]});