Bug 1391405: Part 6 - Use native helper for extracting enumerable properties. r?zombie draft
authorKris Maglione <maglione.k@gmail.com>
Thu, 17 Aug 2017 16:06:15 -0700
changeset 649178 1ffb3fdc2688052d768264f105492199e3ced598
parent 649177 7f7d5df605bc6544cb7f1c0c7e224d81b211e09c
child 727027 5560a94bce450728790de35fe14d3bcf2dc540d3
push id74977
push usermaglione.k@gmail.com
push dateFri, 18 Aug 2017 18:50:35 +0000
reviewerszombie
bugs1391405
milestone57.0a1
Bug 1391405: Part 6 - Use native helper for extracting enumerable properties. r?zombie MozReview-Commit-ID: JqSrGUVVauE
toolkit/components/extensions/Schemas.jsm
--- a/toolkit/components/extensions/Schemas.jsm
+++ b/toolkit/components/extensions/Schemas.jsm
@@ -1551,32 +1551,17 @@ class ObjectType extends Type {
     // object using a waiver wrapper.
 
     let klass = ChromeUtils.getClassName(value, true);
     if (klass != "Object") {
       throw context.error(`Expected a plain JavaScript object, got a ${klass}`,
                           `be a plain JavaScript object`);
     }
 
-    let properties = Object.create(null);
-
-    let waived = ChromeUtils.waiveXrays(value);
-    for (let prop of Object.getOwnPropertyNames(waived)) {
-      let desc = Object.getOwnPropertyDescriptor(waived, prop);
-      if (desc.get || desc.set) {
-        throw context.error("Objects cannot have getters or setters on properties",
-                            "contain no getter or setter properties");
-      }
-      // Chrome ignores non-enumerable properties.
-      if (desc.enumerable) {
-        properties[prop] = ChromeUtils.unwaiveXrays(desc.value);
-      }
-    }
-
-    return properties;
+    return ChromeUtils.shallowClone(value);
   }
 
   checkProperty(context, prop, propType, result, properties, remainingProps) {
     let {type, optional, unsupported, onError} = propType;
     let error = null;
 
     if (unsupported) {
       if (prop in properties) {