You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by so...@apache.org on 2017/03/24 10:06:12 UTC

[02/13] incubator-weex git commit: * [jsfm] fix freeze error when assign name to Error && fix setInterval bug

* [jsfm] fix freeze error when assign name to Error && fix setInterval bug


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/51073431
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/51073431
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/51073431

Branch: refs/heads/0.12-dev
Commit: 510734311657d1af84d217cad99833b5a52a68f3
Parents: dded7ab
Author: fkysly <fk...@gmail.com>
Authored: Wed Mar 22 17:44:17 2017 +0800
Committer: fkysly <fk...@gmail.com>
Committed: Wed Mar 22 17:44:17 2017 +0800

----------------------------------------------------------------------
 html5/frameworks/legacy/app/ctrl/init.js |  2 ++
 html5/shared/freeze.js                   | 47 +++++++++++++++++----------
 2 files changed, 31 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/51073431/html5/frameworks/legacy/app/ctrl/init.js
----------------------------------------------------------------------
diff --git a/html5/frameworks/legacy/app/ctrl/init.js b/html5/frameworks/legacy/app/ctrl/init.js
index 0e5d0be..5048d68 100644
--- a/html5/frameworks/legacy/app/ctrl/init.js
+++ b/html5/frameworks/legacy/app/ctrl/init.js
@@ -88,12 +88,14 @@ export function init (app, code, data, services) {
           args[0](...args.slice(2))
         }
         timer.setTimeout(handler, args[1])
+        return app.doc.taskCenter.callbackManager.lastCallbackId.toString()
       },
       setInterval: (...args) => {
         const handler = function () {
           args[0](...args.slice(2))
         }
         timer.setInterval(handler, args[1])
+        return app.doc.taskCenter.callbackManager.lastCallbackId.toString()
       },
       clearTimeout: (n) => {
         timer.clearTimeout(n)

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/51073431/html5/shared/freeze.js
----------------------------------------------------------------------
diff --git a/html5/shared/freeze.js b/html5/shared/freeze.js
index 6f54881..8edd78c 100644
--- a/html5/shared/freeze.js
+++ b/html5/shared/freeze.js
@@ -7,35 +7,46 @@ export function freezePrototype () {
   Object.freeze(Array)
 
   // Object.freeze(Object.prototype)
-  freezeObjProto()
+  freezeObjectProto()
   Object.freeze(Array.prototype)
   Object.freeze(String.prototype)
   Object.freeze(Number.prototype)
   Object.freeze(Boolean.prototype)
 
-  Object.freeze(Error.prototype)
+  // Object.freeze(Error.prototype)
+  freezeErrorProto()
   Object.freeze(Date.prototype)
   Object.freeze(RegExp.prototype)
 }
 
-function freezeObjProto () {
-  freezeObjProtoProperty('__defineGetter__')
-  freezeObjProtoProperty('__defineSetter__')
-  freezeObjProtoProperty('__lookupGetter__')
-  freezeObjProtoProperty('__lookupSetter__')
-  freezeObjProtoProperty('constructor')
-  freezeObjProtoProperty('hasOwnProperty')
-  freezeObjProtoProperty('isPrototypeOf')
-  freezeObjProtoProperty('propertyIsEnumerable')
-  freezeObjProtoProperty('toLocaleString')
-  freezeObjProtoProperty('toString')
-  freezeObjProtoProperty('valueOf')
-  Object.seal(Object.prototype)
+function freezeObjectProto () {
+  const proto = Object.prototype
+  const protoName = 'Object.prototype'
+  freezeProtoProperty(proto, '__defineGetter__', protoName)
+  freezeProtoProperty(proto, '__defineSetter__', protoName)
+  freezeProtoProperty(proto, '__lookupGetter__', protoName)
+  freezeProtoProperty(proto, '__lookupSetter__', protoName)
+  freezeProtoProperty(proto, 'constructor', protoName)
+  freezeProtoProperty(proto, 'hasOwnProperty', protoName)
+  freezeProtoProperty(proto, 'isPrototypeOf', protoName)
+  freezeProtoProperty(proto, 'propertyIsEnumerable', protoName)
+  freezeProtoProperty(proto, 'toLocaleString', protoName)
+  freezeProtoProperty(proto, 'toString', protoName)
+  freezeProtoProperty(proto, 'valueOf', protoName)
+  Object.seal(proto)
 }
 
-function freezeObjProtoProperty (propertyName) {
-  const proto = Object.prototype
+function freezeErrorProto () {
+  const proto = Error.prototype
+  const protoName = 'Error.prototype'
+  freezeProtoProperty(proto, 'name', protoName)
+  freezeProtoProperty(proto, 'message', protoName)
+  freezeProtoProperty(proto, 'toString', protoName)
+  freezeProtoProperty(proto, 'constructor', protoName)
+  Object.seal(proto)
+}
 
+function freezeProtoProperty (proto, propertyName, protoName) {
   if (!proto.hasOwnProperty(propertyName)) {
     return
   }
@@ -47,7 +58,7 @@ function freezeObjProtoProperty (propertyName) {
     },
     set: function (value) {
       if (this === proto) {
-        throw Error(`Cannot assign to read only property ${propertyName} of Object.prototype`)
+        throw Error(`Cannot assign to read only property ${propertyName} of ${protoName}`)
       }
 
       Object.defineProperty(this, propertyName, {