[X2Go-Commits] [pale-moon] 101/294: Change JS to MozMap conversion to more closely follow the record<> spec

git-admin at x2go.org git-admin at x2go.org
Sat Apr 27 08:57:55 CEST 2019


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch upstream/28.5.0
in repository pale-moon.

commit e17501d5ebc3eb019905be985a3addf3732b2fef
Author: JustOff <Off.Just.Off at gmail.com>
Date:   Wed Mar 13 19:03:07 2019 +0200

    Change JS to MozMap conversion to more closely follow the record<> spec
---
 dom/bindings/Codegen.py | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/dom/bindings/Codegen.py b/dom/bindings/Codegen.py
index 378ecf7..1f0f2d9 100644
--- a/dom/bindings/Codegen.py
+++ b/dom/bindings/Codegen.py
@@ -4780,8 +4780,11 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
             auto& mozMapEntries = ${mozMapRef}.Entries();
 
             JS::Rooted<JSObject*> mozMapObj(cx, &$${val}.toObject());
-            JS::Rooted<JS::IdVector> ids(cx, JS::IdVector(cx));
-            if (!JS_Enumerate(cx, mozMapObj, &ids)) {
+            JS::AutoIdVector ids(cx);
+            // Keep skipping symbols until
+            // https://github.com/heycam/webidl/issues/294 is sorted out.
+            if (!js::GetPropertyKeys(cx, mozMapObj,
+                                     JSITER_OWNONLY | JSITER_HIDDEN, &ids)) {
               $*{exceptionCode}
             }
             if (!mozMapEntries.SetCapacity(ids.length(), mozilla::fallible)) {
@@ -4793,14 +4796,29 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
             JS::Rooted<jsid> curId(cx);
             for (size_t i = 0; i < ids.length(); ++i) {
               curId = ids[i];
+
+              MOZ_ASSERT(!JSID_IS_SYMBOL(curId), "No symbols, we said!");
+
+              JS::Rooted<JS::PropertyDescriptor> desc(cx);
+              if (!JS_GetOwnPropertyDescriptorById(cx, mozMapObj, curId,
+                                                   &desc)) {
+                $*{exceptionCode}
+              }
+
+              if (!desc.object() /* == undefined in spec terms */ ||
+                  !desc.enumerable()) {
+                continue;
+              }
+
               binding_detail::FakeString propName;
               bool isSymbol;
-              if (!ConvertIdToString(cx, curId, propName, isSymbol) ||
-                  (!isSymbol && !JS_GetPropertyById(cx, mozMapObj, curId, &temp))) {
+              if (!ConvertIdToString(cx, curId, propName, isSymbol)) {
                 $*{exceptionCode}
               }
-              if (isSymbol) {
-                continue;
+              MOZ_ASSERT(!isSymbol, "We said, no symbols!");
+
+              if (!JS_GetPropertyById(cx, mozMapObj, curId, &temp)) {
+                $*{exceptionCode}
               }
 
               // Safe to do an infallible append here, because we did a

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/pale-moon.git


More information about the x2go-commits mailing list