Merge branch 'tizen_4.0' into tizen_5.0
[platform/core/api/webapi-plugins.git] / src / tizen / tizen_api.js
index eaa502b..5232c13 100644 (file)
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+/*eslint-disable */
 // Tizen API Specification:
-// https://developer.tizen.org/dev-guide/2.3.0/org.tizen.mobile.web.device.apireference/tizen/tizen.html
-
+//https://developer.tizen.org/dev-guide/2.3.0/org.tizen.mobile.web.device.apireference/tizen/tizen.html
+/*eslint-enable */
 
 // WebAPIException and WebAPIError definition moved to src/utils/utils_api.js
 // for compliance reasons. You can find more info there.
 
-
 /**
  * Filter match flags.
  * @enum {string}
  */
 var FilterMatchFlag = {
-  EXACTLY: 'EXACTLY',
-  FULLSTRING: 'FULLSTRING',
-  CONTAINS: 'CONTAINS',
-  STARTSWITH: 'STARTSWITH',
-  ENDSWITH: 'ENDSWITH',
-  EXISTS: 'EXISTS'
+    EXACTLY: 'EXACTLY',
+    FULLSTRING: 'FULLSTRING',
+    CONTAINS: 'CONTAINS',
+    STARTSWITH: 'STARTSWITH',
+    ENDSWITH: 'ENDSWITH',
+    EXISTS: 'EXISTS'
 };
 
-
 /**
  * An enumerator that indicates the sorting order.
  * @enum {string}
  */
 var SortModeOrder = {
-  ASC: 'ASC',
-  DESC: 'DESC'
+    ASC: 'ASC',
+    DESC: 'DESC'
 };
 
-
 /**
  * An enumerator that indicates the type of composite filter.
  * @enum {string}
  */
 var CompositeFilterType = {
-  UNION: 'UNION',
-  INTERSECTION: 'INTERSECTION'
+    UNION: 'UNION',
+    INTERSECTION: 'INTERSECTION'
 };
 
 // Tizen Filters
 // either AttributeFilter, AttributeRangeFilter, or CompositeFilter
 function is_tizen_filter(f) {
-  return (f instanceof tizen.AttributeFilter) ||
-         (f instanceof tizen.AttributeRangeFilter) ||
-         (f instanceof tizen.CompositeFilter);
+    return (
+        f instanceof tizen.AttributeFilter ||
+        f instanceof tizen.AttributeRangeFilter ||
+        f instanceof tizen.CompositeFilter
+    );
 }
 
 //Extract property by string
 function _extractProperty(obj, attributeName) {
-  var props = attributeName.split('.');
-  for (var i = 0; i < props.length; ++i) {
-    if (obj instanceof Array) {
-      var ret = [];
-      for (var j = 0; j < obj.length; ++j)
-      {
-        ret.push(_extractProperty(obj[j], props.slice(i).join('.')));
-      }
-      return ret;
-    }
-    if (!obj.hasOwnProperty(props[i])) {
-      if (i === props.length - 1) {
-        throw new WebAPIException('InvalidValuesError', 'Property "' + attributeName +
-                '" is not valid');
-      }
-      return null;
+    var props = attributeName.split('.');
+    for (var i = 0; i < props.length; ++i) {
+        if (obj instanceof Array) {
+            var ret = [];
+            for (var j = 0; j < obj.length; ++j) {
+                ret.push(_extractProperty(obj[j], props.slice(i).join('.')));
+            }
+            return ret;
+        }
+        if (!obj.hasOwnProperty(props[i])) {
+            if (i === props.length - 1) {
+                throw new WebAPIException(
+                    'InvalidValuesError',
+                    'Property "' + attributeName + '" is not valid'
+                );
+            }
+            return null;
+        }
+        obj = obj[props[i]];
     }
-    obj = obj[props[i]];
-  }
-  return obj;
+    return obj;
 }
 
-
 /**
  * This is a common interface used by different types of object filters.
  */
 var AbstractFilter = function() {};
 
-
 /**
  * Represents a set of filters.
  */
 exports.AttributeFilter = function(attrName, matchFlag, matchValue) {
+    xwalk.utils.validator.isConstructorCall(this, exports.AttributeFilter);
+
+    var name_ = '';
+    var flag_ = 'EXACTLY';
+    var value_ = null;
+
+    function attributeNameSetter(name) {
+        name_ = String(name);
+    }
+
+    if (arguments.length > 0) attributeNameSetter(attrName);
+
+    function matchFlagSetter(flag) {
+        if (Object.keys(FilterMatchFlag).indexOf(flag) >= 0) flag_ = flag;
+    }
+
+    function matchValueSetter(value) {
+        value_ = value;
+    }
 
-  xwalk.utils.validator.isConstructorCall(this, exports.AttributeFilter);
-
-  var name_ = '';
-  var flag_ = 'EXACTLY';
-  var value_ = null;
-
-  function attributeNameSetter(name) {
-    name_ = String(name);
-  }
-
-  if (arguments.length > 0)
-    attributeNameSetter(attrName);
-
-  function matchFlagSetter(flag) {
-    if (Object.keys(FilterMatchFlag).indexOf(flag) >= 0)
-      flag_ = flag;
-  }
-
-  function matchValueSetter(value) {
-    value_ = value;
-  }
-
-  if (arguments.length > 2) {
-    matchFlagSetter(matchFlag);
-    matchValueSetter(matchValue);
-  } else if (arguments.length > 1) {
-    // if matchValue is not used then matchFlag is set to 'EXISTS'.
-    matchFlagSetter('EXISTS');
-  }
-
-  Object.defineProperties(this, {
-    attributeName: {
-      enumerable: true,
-      set: attributeNameSetter,
-      get: function() {
-        return name_;
-      }
-    },
-    matchFlag: {
-      enumerable: true,
-      set: matchFlagSetter,
-      get: function() {
-        return flag_;
-      }
-    },
-    matchValue: {
-      enumerable: true,
-      set: matchValueSetter,
-      get: function() {
-        return value_;
-      }
+    if (arguments.length > 2) {
+        matchFlagSetter(matchFlag);
+        matchValueSetter(matchValue);
+    } else if (arguments.length > 1) {
+        // if matchValue is not used then matchFlag is set to 'EXISTS'.
+        matchFlagSetter('EXISTS');
     }
-  });
+
+    Object.defineProperties(this, {
+        attributeName: {
+            enumerable: true,
+            set: attributeNameSetter,
+            get: function() {
+                return name_;
+            }
+        },
+        matchFlag: {
+            enumerable: true,
+            set: matchFlagSetter,
+            get: function() {
+                return flag_;
+            }
+        },
+        matchValue: {
+            enumerable: true,
+            set: matchValueSetter,
+            get: function() {
+                return value_;
+            }
+        }
+    });
 };
 exports.AttributeFilter.prototype = new AbstractFilter();
 
 //TODO: Move filtering to native code
 exports.AttributeFilter.prototype._filter = function(element) {
-  var elemValue = _extractProperty(element, this.attributeName);
-
-  if (!(elemValue instanceof Array)) {
-    elemValue = [elemValue];
-  }
-
-  var ret = false;
-  for (var i = 0; i < elemValue.length; ++i) {
-    var elemValueStr = String(elemValue[i]);
-    var elemValueStrU = elemValueStr.toUpperCase();
-    var matchValueStr = String(this.matchValue);
-    var matchValueStrU = matchValueStr.toUpperCase();
-
-    switch (this.matchFlag) {
-      case 'EXACTLY':
-        ret = elemValue[i] === this.matchValue;
-        break;
-      case 'FULLSTRING':
-        ret = elemValueStrU === matchValueStrU;
-        break;
-      case 'CONTAINS':
-        ret = elemValueStrU.indexOf(matchValueStrU) > -1;
-        break;
-      case 'STARTSWITH':
-        ret = elemValueStrU.indexOf(matchValueStrU) === 0;
-        break;
-      case 'ENDSWITH':
-        ret = elemValueStrU.lastIndexOf(matchValueStrU) +
-                matchValueStrU.length === elemValueStrU.length;
-        break;
-      case 'EXISTS':
-        ret = elemValue[i] !== undefined;
-        break;
+    var elemValue = _extractProperty(element, this.attributeName);
+
+    if (!(elemValue instanceof Array)) {
+        elemValue = [elemValue];
     }
-    if (ret) {
-      return ret;
+
+    var ret = false;
+    for (var i = 0; i < elemValue.length; ++i) {
+        var elemValueStr = String(elemValue[i]);
+        var elemValueStrU = elemValueStr.toUpperCase();
+        var matchValueStr = String(this.matchValue);
+        var matchValueStrU = matchValueStr.toUpperCase();
+
+        switch (this.matchFlag) {
+        case 'EXACTLY':
+            ret = elemValue[i] === this.matchValue;
+            break;
+        case 'FULLSTRING':
+            ret = elemValueStrU === matchValueStrU;
+            break;
+        case 'CONTAINS':
+            ret = elemValueStrU.indexOf(matchValueStrU) > -1;
+            break;
+        case 'STARTSWITH':
+            ret = elemValueStrU.indexOf(matchValueStrU) === 0;
+            break;
+        case 'ENDSWITH':
+            ret =
+                    elemValueStrU.lastIndexOf(matchValueStrU) + matchValueStrU.length ===
+                    elemValueStrU.length;
+            break;
+        case 'EXISTS':
+            ret = elemValue[i] !== undefined;
+            break;
+        }
+        if (ret) {
+            return ret;
+        }
     }
-  }
-  return ret;
+    return ret;
 };
 exports.AttributeFilter.prototype.constructor = exports.AttributeFilter;
 
-
 /**
  * Represents a filter based on an object attribute which has values that are
  * within a particular range.
  */
 exports.AttributeRangeFilter = function(attrName, start, end) {
+    xwalk.utils.validator.isConstructorCall(this, exports.AttributeRangeFilter);
+
+    var name_ = '';
+    var start_ = null;
+    var end_ = null;
 
-  xwalk.utils.validator.isConstructorCall(this, exports.AttributeRangeFilter);
-
-  var name_ = '';
-  var start_ = null;
-  var end_ = null;
-
-  function attributeNameSetter(name) {
-    name_ = String(name);
-  }
-
-  if (arguments.length > 0)
-    attributeNameSetter(attrName);
-
-  function initSetter(init) {
-    start_ = init;
-  }
-
-  if (arguments.length > 1)
-    initSetter(start);
-
-  function endSetter(end) {
-    end_ = end;
-  }
-
-  if (arguments.length > 2)
-    endSetter(end);
-
-  Object.defineProperties(this, {
-    attributeName: {
-      enumerable: true,
-      set: attributeNameSetter,
-      get: function() {
-        return name_;
-      }
-    },
-    initialValue: {
-      enumerable: true,
-      set: initSetter,
-      get: function() {
-        return start_;
-      }
-    },
-    endValue: {
-      enumerable: true,
-      set: endSetter,
-      get: function() {
-        return end_;
-      }
+    function attributeNameSetter(name) {
+        name_ = String(name);
     }
-  });
+
+    if (arguments.length > 0) attributeNameSetter(attrName);
+
+    function initSetter(init) {
+        start_ = init;
+    }
+
+    if (arguments.length > 1) initSetter(start);
+
+    function endSetter(end) {
+        end_ = end;
+    }
+
+    if (arguments.length > 2) endSetter(end);
+
+    Object.defineProperties(this, {
+        attributeName: {
+            enumerable: true,
+            set: attributeNameSetter,
+            get: function() {
+                return name_;
+            }
+        },
+        initialValue: {
+            enumerable: true,
+            set: initSetter,
+            get: function() {
+                return start_;
+            }
+        },
+        endValue: {
+            enumerable: true,
+            set: endSetter,
+            get: function() {
+                return end_;
+            }
+        }
+    });
 };
 
 exports.AttributeRangeFilter.prototype = new AbstractFilter();
 
 //TODO: Move filtering to native code
 exports.AttributeRangeFilter.prototype._filter = function(element) {
-  var elemValue = _extractProperty(element, this.attributeName);
+    var elemValue = _extractProperty(element, this.attributeName);
 
-  if (!(elemValue instanceof Array)) {
-    elemValue = [elemValue];
-  }
-
-  for (var i = 0; i < elemValue.length; ++i) {
-    var value = elemValue[i];
+    if (!(elemValue instanceof Array)) {
+        elemValue = [elemValue];
+    }
 
-    if ((this.initialValue !== undefined && this.initialValue !== null) &&
-            (this.endValue !== undefined && this.endValue !== null)) {
-      if (value instanceof tizen.TZDate) {
-        if (this.initialValue.earlierThan(value) && this.endValue.laterThan(value)) {
-          return true;
-        }
-      } else {
-        if (this.initialValue <= value && this.endValue > value) {
-          return true;
-        }
-      }
-    } else if ((this.initialValue !== undefined && this.initialValue !== null) &&
-            (this.endValue === undefined || this.endValue === null)) {
-      if (value instanceof tizen.TZDate) {
-        if (this.initialValue.earlierThan(value)) {
-          return true;
-        }
-      } else {
-        if (this.initialValue <= value) {
-          return true;
+    for (var i = 0; i < elemValue.length; ++i) {
+        var value = elemValue[i];
+
+        if (
+            this.initialValue !== undefined &&
+            this.initialValue !== null &&
+            (this.endValue !== undefined && this.endValue !== null)
+        ) {
+            if (value instanceof tizen.TZDate) {
+                if (
+                    this.initialValue.earlierThan(value) &&
+                    this.endValue.laterThan(value)
+                ) {
+                    return true;
+                }
+            } else {
+                if (this.initialValue <= value && this.endValue > value) {
+                    return true;
+                }
+            }
+        } else if (
+            this.initialValue !== undefined &&
+            this.initialValue !== null &&
+            (this.endValue === undefined || this.endValue === null)
+        ) {
+            if (value instanceof tizen.TZDate) {
+                if (this.initialValue.earlierThan(value)) {
+                    return true;
+                }
+            } else {
+                if (this.initialValue <= value) {
+                    return true;
+                }
+            }
+        } else if (
+            (this.initialValue === undefined || this.initialValue === null) &&
+            (this.endValue !== undefined && this.endValue !== null)
+        ) {
+            if (value instanceof tizen.TZDate) {
+                if (this.endValue.laterThan(value)) {
+                    return true;
+                }
+            } else {
+                if (this.endValue > value) {
+                    return true;
+                }
+            }
         }
-      }
-    } else if ((this.initialValue === undefined || this.initialValue === null) &&
-            (this.endValue !== undefined && this.endValue !== null)) {
-      if (value instanceof tizen.TZDate) {
-        if (this.endValue.laterThan(value)) {
-          return true;
-        }
-      } else {
-        if (this.endValue > value) {
-          return true;
-        }
-      }
     }
-  }
-  return false;
+    return false;
 };
 
 exports.AttributeRangeFilter.prototype.constructor = exports.AttributeRangeFilter;
 
-
 /**
  * Represents a set of filters.
  */
 exports.CompositeFilter = function(type, filters) {
+    xwalk.utils.validator.isConstructorCall(this, exports.CompositeFilter);
 
-  xwalk.utils.validator.isConstructorCall(this, exports.CompositeFilter);
+    var filterTypes = Object.keys(CompositeFilterType);
 
-  var filterTypes = Object.keys(CompositeFilterType);
+    var type_ = filterTypes[0];
+    var filters_ = [];
 
-  var type_ = filterTypes[0];
-  var filters_ = [];
+    function typeSetter(filterType) {
+        if (filterTypes.indexOf(filterType) >= 0) type_ = filterType;
+    }
 
-  function typeSetter(filterType) {
-    if (filterTypes.indexOf(filterType) >= 0)
-      type_ = filterType;
-  }
+    if (arguments.length > 0) typeSetter(type);
 
-  if (arguments.length > 0)
-    typeSetter(type);
+    function filtersSetter(filterList) {
+        if (!(filterList instanceof Array)) return;
 
-  function filtersSetter(filterList) {
-    if (!(filterList instanceof Array))
-      return;
+        for (var i in filterList) {
+            var valid = filterList[i] instanceof AbstractFilter;
+            if (!valid) return;
+        }
 
-    for (var i in filterList) {
-      var valid = (filterList[i] instanceof AbstractFilter);
-      if (!valid)
-        return;
+        filters_ = filterList.slice(0);
     }
 
-    filters_ = filterList.slice(0);
-  }
-
-  if (arguments.length > 1)
-    filtersSetter(filters);
-
-  Object.defineProperties(this, {
-    type: {
-      enumerable: true,
-      set: typeSetter,
-      get: function() {
-        return type_;
-      }
-    },
-    filters: {
-      enumerable: true,
-      set: filtersSetter,
-      get: function() {
-        return filters_;
-      }
-    }
-  });
+    if (arguments.length > 1) filtersSetter(filters);
+
+    Object.defineProperties(this, {
+        type: {
+            enumerable: true,
+            set: typeSetter,
+            get: function() {
+                return type_;
+            }
+        },
+        filters: {
+            enumerable: true,
+            set: filtersSetter,
+            get: function() {
+                return filters_;
+            }
+        }
+    });
 };
 
 exports.CompositeFilter.prototype = new AbstractFilter();
 
 //TODO: Move filtering to native code
 exports.CompositeFilter.prototype._filter = function(element) {
-  var filters = this.filters;
-  if (this.type === 'UNION') {
-    for (var i = 0; i < filters.length; ++i) {
-      if (filters[i]._filter(element)) {
-        return true;
-      }
-    }
-    return false;
-  } else if (this.type === 'INTERSECTION') {
-    if (filters.length === 0)
-      return false;
-    for (var i = 0; i < filters.length; ++i) {
-      if (!filters[i]._filter(element)) {
+    var filters = this.filters;
+    if (this.type === 'UNION') {
+        for (var i = 0; i < filters.length; ++i) {
+            if (filters[i]._filter(element)) {
+                return true;
+            }
+        }
         return false;
-      }
+    } else if (this.type === 'INTERSECTION') {
+        if (filters.length === 0) return false;
+        for (var i = 0; i < filters.length; ++i) {
+            if (!filters[i]._filter(element)) {
+                return false;
+            }
+        }
+        return true;
     }
-    return true;
-  }
 };
 
 exports.CompositeFilter.prototype.constructor = exports.CompositeFilter;
 
-
 /**
  * SortMode is a common interface used for sorting of queried data.
  */
 exports.SortMode = function(attrName, order) {
+    xwalk.utils.validator.isConstructorCall(this, exports.SortMode);
 
-  xwalk.utils.validator.isConstructorCall(this, exports.SortMode);
-
-  var sortModeOrder = Object.keys(SortModeOrder);
+    var sortModeOrder = Object.keys(SortModeOrder);
 
-  var attributeName_ = '';
-  var order_ = 'ASC';
+    var attributeName_ = '';
+    var order_ = 'ASC';
 
-  function nameSetter(name) {
-    attributeName_ = String(name);
-  }
-
-  if (arguments.length > 0)
-    nameSetter(attrName);
-
-  function orderSetter(sortOrder) {
-    if (sortModeOrder.indexOf(sortOrder) >= 0)
-      order_ = sortOrder;
-  }
+    function nameSetter(name) {
+        attributeName_ = String(name);
+    }
 
-  if (arguments.length > 1)
-    orderSetter(order);
+    if (arguments.length > 0) nameSetter(attrName);
 
-  Object.defineProperties(this, {
-    attributeName: {
-      enumerable: true, set: nameSetter, get: function() {
-        return attributeName_;
-      }
-    },
-    order: {
-      enumerable: true, set: orderSetter, get: function() {
-        return order_;
-      }
+    function orderSetter(sortOrder) {
+        if (sortModeOrder.indexOf(sortOrder) >= 0) order_ = sortOrder;
     }
-  });
+
+    if (arguments.length > 1) orderSetter(order);
+
+    Object.defineProperties(this, {
+        attributeName: {
+            enumerable: true,
+            set: nameSetter,
+            get: function() {
+                return attributeName_;
+            }
+        },
+        order: {
+            enumerable: true,
+            set: orderSetter,
+            get: function() {
+                return order_;
+            }
+        }
+    });
 };
 exports.SortMode.prototype.constructor = exports.SortMode;
 
-
 /**
  * Represents a point (latitude and longitude) in the map coordinate system.
  */
 exports.SimpleCoordinates = function(lat, lng) {
+    xwalk.utils.validator.isConstructorCall(this, exports.SimpleCoordinates);
 
-  xwalk.utils.validator.isConstructorCall(this, exports.SimpleCoordinates);
+    var latitude = 0;
+    var longitude = 0;
 
-  var latitude = 0;
-  var longitude = 0;
+    function latSetter(lat) {
+        var tmp = Number(lat);
+        if (!isNaN(tmp)) {
+            if (tmp > 90) tmp = 90;
+            else if (tmp < -90) tmp = -90;
 
-  function latSetter(lat) {
-    var tmp = Number(lat);
-    if (!isNaN(tmp)) {
-      if (tmp > 90) tmp = 90;
-      else if (tmp < -90) tmp = -90;
-
-      latitude = tmp;
+            latitude = tmp;
+        }
     }
-  }
 
-  latSetter(lat);
+    latSetter(lat);
 
-  function lonSetter(lon) {
-    var tmp = Number(lon);
-    if (!isNaN(tmp)) {
-      if (tmp > 180) tmp = 180;
-      else if (tmp < -180) tmp = -180;
+    function lonSetter(lon) {
+        var tmp = Number(lon);
+        if (!isNaN(tmp)) {
+            if (tmp > 180) tmp = 180;
+            else if (tmp < -180) tmp = -180;
 
-      longitude = tmp;
-    }
-  }
-
-  lonSetter(lng);
-
-  Object.defineProperties(this, {
-    latitude: {
-      enumerable: true, set: latSetter, get: function() {
-        return latitude;
-      }
-    },
-    longitude: {
-      enumerable: true, set: lonSetter, get: function() {
-        return longitude;
-      }
+            longitude = tmp;
+        }
     }
-  });
+
+    lonSetter(lng);
+
+    Object.defineProperties(this, {
+        latitude: {
+            enumerable: true,
+            set: latSetter,
+            get: function() {
+                return latitude;
+            }
+        },
+        longitude: {
+            enumerable: true,
+            set: lonSetter,
+            get: function() {
+                return longitude;
+            }
+        }
+    });
 };
 exports.SimpleCoordinates.prototype.constructor = exports.SimpleCoordinates;