[Preference] Fix for PreferenceData objects. 63/78163/1
authorTomasz Marciniak <t.marciniak@samsung.com>
Mon, 4 Jul 2016 11:03:44 +0000 (13:03 +0200)
committerTomasz Marciniak <t.marciniak@samsung.com>
Mon, 4 Jul 2016 11:10:46 +0000 (13:10 +0200)
[Feature] PreferenceData is now created correctly
by new and its attributes are read only.

[Verification] TCT tests related to PreferenceData pass.

Change-Id: I3ecf4cc6566c6550e6371d97981f51a7885817b3
Signed-off-by: Tomasz Marciniak <t.marciniak@samsung.com>
src/preference/preference_api.js

index 23434021cf569dd1d3d3f35fad817286885a4eea..8a0ed15b2628d3ade618c2a1d1863e1ba7d72174 100644 (file)
@@ -20,6 +20,21 @@ var type_ = xwalk.utils.type;
 var types_ = validator_.Types;
 var native_ = new xwalk.utils.NativeManager(extension);
 
+function PreferenceData(data) {
+  Object.defineProperties(this, {
+    key: {
+      value: data.key,
+      writable: false,
+      enumerable: true
+    },
+    value: {
+      value: data.value,
+      writable: false,
+      enumerable: true
+    },
+  });
+}
+
 function PreferenceManager() {
 }
 
@@ -33,7 +48,14 @@ PreferenceManager.prototype.getAll = function() {
     if (native_.isFailure(result)) {
       native_.callIfPossible(args.errorCallback, native_.getErrorObject(result));
     } else {
-      args.successCallback(native_.getResultObject(result));
+      var array = [];
+      var objects = native_.getResultObject(result);
+
+      objects.forEach(function (d) {
+        array.push(new PreferenceData(d));
+      });
+
+      args.successCallback(array);
     }
   };
 
@@ -116,12 +138,11 @@ function PreferenceChangedListener() {
   this.appListener = function (result) {
     var data = native_.getResultObject(result);
     var key = data.key;
-    var value = data.value;
 
     if (that.instances[key]) {
       var listener = that.instances[key];
       if (type_.isFunction(listener)) {
-        listener({ key: key, value: value });
+        listener(new PreferenceData(data));
       }
     }
   };