This is an automated email from the ASF dual-hosted git repository.

harbs pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new ac64ed648e BinaryData in JS can accept a number array or a ArrayBuffer 
view.
ac64ed648e is described below

commit ac64ed648eeb9383bd3d22695ea1434725e169a0
Author: Harbs <[email protected]>
AuthorDate: Wed Feb 11 00:32:16 2026 +0200

    BinaryData in JS can accept a number array or a ArrayBuffer view.
---
 .../src/main/royale/org/apache/royale/utils/BinaryData.as   | 13 ++++++++++++-
 .../src/test/royale/flexUnitTests/BinaryDataTesterTest.as   | 10 ++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/BinaryData.as
 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/BinaryData.as
index 11f692dfa5..21dcb2f6e2 100644
--- 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/BinaryData.as
+++ 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/BinaryData.as
@@ -52,7 +52,12 @@ public class BinaryData implements IBinaryDataInput, 
IBinaryDataOutput
 {
     /**
      *  Constructor. The constructor takes an optional bytes argument.
-     *  In Flash this should be a ByteArray. In JS this should be an 
ArrayBuffer
+     *  In Flash this should be a ByteArray.
+     *  In JS this should be an ArrayBuffer.
+     *  
+     *  The JS constructor also accepts an Array of numbers,
+     *  or any ArrayBufferView (like Uint8Array) as a parameter,
+     *  but these are not valid types for the Flash constructor.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10.2
@@ -66,11 +71,17 @@ public class BinaryData implements IBinaryDataInput, 
IBinaryDataOutput
     }
 
     /**
+    * @royaleignorecoercion Array
     * @royaleignorecoercion ArrayBuffer
+    * @royaleignorecoercion ArrayBufferView
     */
     COMPILE::JS
     public function BinaryData(bytes:Object = null)
     {
+        if(bytes is Array)
+            bytes = new Uint8Array(bytes);
+        if(ArrayBuffer.isView(bytes))
+            bytes = (bytes as ArrayBufferView).buffer;
         if(goog.DEBUG)
         {
             if(bytes && typeof bytes.byteLength != "number" && bytes.buffer 
!== undefined)
diff --git 
a/frameworks/projects/Core/src/test/royale/flexUnitTests/BinaryDataTesterTest.as
 
b/frameworks/projects/Core/src/test/royale/flexUnitTests/BinaryDataTesterTest.as
index caadcf7c02..1572be3b7f 100644
--- 
a/frameworks/projects/Core/src/test/royale/flexUnitTests/BinaryDataTesterTest.as
+++ 
b/frameworks/projects/Core/src/test/royale/flexUnitTests/BinaryDataTesterTest.as
@@ -630,6 +630,16 @@ package flexUnitTests {
             assertEquals(0, ba.position, "BinaryData position after clear: 
should be 0");
             assertNotEquals(ba.data, olddata, "BinaryData data accessor after 
clear: should be new internal instance");
         }
+        [Test]
+        public function testArray():void
+        {
+            COMPILE::JS {
+                var ba:BinaryData = new 
BinaryData([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]);
+                assertEquals(15, ba.length, "BinaryData length should be 15");
+                assertEquals(0, ba.position, "BinaryData position should be 
0");
+                assertTrue(ba.data instanceof ArrayBuffer, "BinaryData data 
accessor should be an ArrayBuffer");
+            }
+        }
 
 }
 }

Reply via email to