From df03142ef85011d10981d937f3c78ce6ef71d1cb Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 12 Jan 2022 22:42:15 +0000 Subject: [PATCH 1/6] Move crypto test to BrowserTests --- .../dom/tests/chrome/CryptoTests.scala | 21 ------------------- .../dom/tests/shared/BrowserTests.scala | 6 ++++++ 2 files changed, 6 insertions(+), 21 deletions(-) delete mode 100644 tests-chrome/src/test/scala/org/scalajs/dom/tests/chrome/CryptoTests.scala diff --git a/tests-chrome/src/test/scala/org/scalajs/dom/tests/chrome/CryptoTests.scala b/tests-chrome/src/test/scala/org/scalajs/dom/tests/chrome/CryptoTests.scala deleted file mode 100644 index 91d011079..000000000 --- a/tests-chrome/src/test/scala/org/scalajs/dom/tests/chrome/CryptoTests.scala +++ /dev/null @@ -1,21 +0,0 @@ -package org.scalajs.dom.tests.chrome - -import org.junit.Test - -class CryptoTests { - import org.scalajs.dom - import scala.scalajs.js.typedarray._ - - @Test final def cryptoGetRandomValuesWork(): Unit = { - // This fails - dom.crypto.getRandomValues(Array.ofDim[Byte](8).toTypedArray) - } - - @Test final def webcryptoGetRandomValuesWork(): Unit = { - dom.webcrypto.getRandomValues(Array.ofDim[Byte](8).toTypedArray) - } - - @Test final def cryptoCryptoGetRandomValuesWork(): Unit = { - dom.crypto.crypto.getRandomValues(Array.ofDim[Byte](8).toTypedArray) - } -} diff --git a/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala b/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala index 10d8c26a8..28d037267 100644 --- a/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala +++ b/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala @@ -2,6 +2,7 @@ package org.scalajs.dom.tests.shared import org.junit.Assert.assertEquals import org.junit.Test +import org.scalajs.dom import org.scalajs.dom.QueuingStrategy import org.scalajs.dom.ReadableStream import org.scalajs.dom.ReadableStreamController @@ -15,10 +16,15 @@ import scala.concurrent.Future import scala.concurrent.Promise import scala.scalajs.js import scala.scalajs.js.Thenable.Implicits._ +import scala.scalajs.js.typedarray._ import scala.util.Try trait BrowserTests { + // https://github.com/scala-js/scala-js-dom/issues/668 + @Test final def cryptoGetRandomValues(): Unit = + dom.crypto.getRandomValues(new Uint8Array(1)) + def read[T](reader: ReadableStreamReader[T])(values: Seq[T]): Future[Seq[T]] = { reader .read() From d1335210713bd2421453ab175d32335a3fdff62e Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 12 Jan 2022 23:00:52 +0000 Subject: [PATCH 2/6] Fix dom.crypto.getRandomValues --- api-reports/2_12.txt | 2 +- api-reports/2_13.txt | 2 +- dom/src/main/scala/org/scalajs/dom/crypto/package.scala | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/api-reports/2_12.txt b/api-reports/2_12.txt index 88725ae45..4a065f9df 100644 --- a/api-reports/2_12.txt +++ b/api-reports/2_12.txt @@ -25514,7 +25514,7 @@ crypto/package[SO] @deprecated("use dom.RsaKeyGenParams instead", "2.0.0") val R crypto/package[SO] @deprecated("use dom.RsaOaepParams instead", "2.0.0") val RsaOaepParams = dom.RsaOaepParams crypto/package[SO] @deprecated("use dom.RsaPssParams instead", "2.0.0") val RsaPssParams = dom.RsaPssParams crypto/package[SO] def crypto: Crypto (@deprecated in 2.0.0) -crypto/package[SO] @JSGlobal("crypto.getRandomValues") @js.native def getRandomValues(array: ArrayBufferView): ArrayBufferView +crypto/package[SO] def getRandomValues(array: ArrayBufferView): ArrayBufferView crypto/package[SO] @JSGlobal("crypto.subtle") @js.native val subtle: dom.SubtleCrypto experimental/Fullscreen[SO] (@deprecated in 2.0.0) experimental/PointerLock[SO] type PointerLockDocument = dom.Document (@deprecated in 2.0.0) diff --git a/api-reports/2_13.txt b/api-reports/2_13.txt index 88725ae45..4a065f9df 100644 --- a/api-reports/2_13.txt +++ b/api-reports/2_13.txt @@ -25514,7 +25514,7 @@ crypto/package[SO] @deprecated("use dom.RsaKeyGenParams instead", "2.0.0") val R crypto/package[SO] @deprecated("use dom.RsaOaepParams instead", "2.0.0") val RsaOaepParams = dom.RsaOaepParams crypto/package[SO] @deprecated("use dom.RsaPssParams instead", "2.0.0") val RsaPssParams = dom.RsaPssParams crypto/package[SO] def crypto: Crypto (@deprecated in 2.0.0) -crypto/package[SO] @JSGlobal("crypto.getRandomValues") @js.native def getRandomValues(array: ArrayBufferView): ArrayBufferView +crypto/package[SO] def getRandomValues(array: ArrayBufferView): ArrayBufferView crypto/package[SO] @JSGlobal("crypto.subtle") @js.native val subtle: dom.SubtleCrypto experimental/Fullscreen[SO] (@deprecated in 2.0.0) experimental/PointerLock[SO] type PointerLockDocument = dom.Document (@deprecated in 2.0.0) diff --git a/dom/src/main/scala/org/scalajs/dom/crypto/package.scala b/dom/src/main/scala/org/scalajs/dom/crypto/package.scala index 9b2d3dbd0..6c61a8c45 100644 --- a/dom/src/main/scala/org/scalajs/dom/crypto/package.scala +++ b/dom/src/main/scala/org/scalajs/dom/crypto/package.scala @@ -15,9 +15,8 @@ package object crypto { val subtle: dom.SubtleCrypto = js.native /** Fills the passed TypedArray with cryptographically sound random values. */ - @JSGlobal("crypto.getRandomValues") - @js.native - def getRandomValues(array: ArrayBufferView): ArrayBufferView = js.native + @inline def getRandomValues(array: ArrayBufferView): ArrayBufferView = + webcrypto.getRandomValues(array) @deprecated("use dom.crypto instead", "2.0.0") @inline def crypto: Crypto = GlobalCrypto.crypto From c268215a98808576bd9338b4d069891718edc919 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 19 Jan 2022 18:28:01 +0000 Subject: [PATCH 3/6] Tap dance for bincompat --- api-reports/2_12.txt | 2 +- api-reports/2_13.txt | 2 +- dom/src/main/scala/org/scalajs/dom/crypto/package.scala | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/api-reports/2_12.txt b/api-reports/2_12.txt index 4a065f9df..7fd0c3c34 100644 --- a/api-reports/2_12.txt +++ b/api-reports/2_12.txt @@ -25514,7 +25514,7 @@ crypto/package[SO] @deprecated("use dom.RsaKeyGenParams instead", "2.0.0") val R crypto/package[SO] @deprecated("use dom.RsaOaepParams instead", "2.0.0") val RsaOaepParams = dom.RsaOaepParams crypto/package[SO] @deprecated("use dom.RsaPssParams instead", "2.0.0") val RsaPssParams = dom.RsaPssParams crypto/package[SO] def crypto: Crypto (@deprecated in 2.0.0) -crypto/package[SO] def getRandomValues(array: ArrayBufferView): ArrayBufferView +crypto/package[SO] def getRandomValues(array: ArrayBufferView)(implicit dummy: DummyImplicit): ArrayBufferView crypto/package[SO] @JSGlobal("crypto.subtle") @js.native val subtle: dom.SubtleCrypto experimental/Fullscreen[SO] (@deprecated in 2.0.0) experimental/PointerLock[SO] type PointerLockDocument = dom.Document (@deprecated in 2.0.0) diff --git a/api-reports/2_13.txt b/api-reports/2_13.txt index 4a065f9df..7fd0c3c34 100644 --- a/api-reports/2_13.txt +++ b/api-reports/2_13.txt @@ -25514,7 +25514,7 @@ crypto/package[SO] @deprecated("use dom.RsaKeyGenParams instead", "2.0.0") val R crypto/package[SO] @deprecated("use dom.RsaOaepParams instead", "2.0.0") val RsaOaepParams = dom.RsaOaepParams crypto/package[SO] @deprecated("use dom.RsaPssParams instead", "2.0.0") val RsaPssParams = dom.RsaPssParams crypto/package[SO] def crypto: Crypto (@deprecated in 2.0.0) -crypto/package[SO] def getRandomValues(array: ArrayBufferView): ArrayBufferView +crypto/package[SO] def getRandomValues(array: ArrayBufferView)(implicit dummy: DummyImplicit): ArrayBufferView crypto/package[SO] @JSGlobal("crypto.subtle") @js.native val subtle: dom.SubtleCrypto experimental/Fullscreen[SO] (@deprecated in 2.0.0) experimental/PointerLock[SO] type PointerLockDocument = dom.Document (@deprecated in 2.0.0) diff --git a/dom/src/main/scala/org/scalajs/dom/crypto/package.scala b/dom/src/main/scala/org/scalajs/dom/crypto/package.scala index 6c61a8c45..735b07f2f 100644 --- a/dom/src/main/scala/org/scalajs/dom/crypto/package.scala +++ b/dom/src/main/scala/org/scalajs/dom/crypto/package.scala @@ -14,8 +14,13 @@ package object crypto { @js.native val subtle: dom.SubtleCrypto = js.native + // for binary compat; unusable + @JSGlobal("crypto.getRandomValues") + @js.native + protected[crypto] def getRandomValues(array: ArrayBufferView): ArrayBufferView = js.native + /** Fills the passed TypedArray with cryptographically sound random values. */ - @inline def getRandomValues(array: ArrayBufferView): ArrayBufferView = + @inline def getRandomValues(array: ArrayBufferView)(implicit dummy: DummyImplicit): ArrayBufferView = webcrypto.getRandomValues(array) @deprecated("use dom.crypto instead", "2.0.0") From 390faff6fd03f80043d4566361680a25d4bf0a4b Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 19 Jan 2022 18:31:41 +0000 Subject: [PATCH 4/6] Relocate test --- .../scala/org/scalajs/dom/tests/shared/BrowserTests.scala | 4 ---- .../org/scalajs/dom/tests/shared/WebCryptoApiTests.scala | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala b/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala index aae3838be..e1085d9c8 100644 --- a/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala +++ b/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala @@ -21,10 +21,6 @@ import scala.util.Try trait BrowserTests extends WebCryptoApiTests { - // https://github.com/scala-js/scala-js-dom/issues/668 - @Test final def cryptoGetRandomValues(): Unit = - dom.crypto.getRandomValues(new Uint8Array(1)) - def read[T](reader: ReadableStreamReader[T])(values: Seq[T]): Future[Seq[T]] = { reader .read() diff --git a/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/WebCryptoApiTests.scala b/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/WebCryptoApiTests.scala index 17b0c8725..2d28f7535 100644 --- a/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/WebCryptoApiTests.scala +++ b/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/WebCryptoApiTests.scala @@ -10,6 +10,10 @@ import scala.scalajs.js.typedarray._ trait WebCryptoApiTests { + // https://github.com/scala-js/scala-js-dom/issues/668 + @Test final def cryptoGetRandomValues(): Unit = + dom.crypto.getRandomValues(new Uint8Array(1)) + @Test final def getRandomValuesWork: Unit = { dom.webcrypto.getRandomValues(Array.ofDim[Byte](8).toTypedArray) } From e836956818912ba6554261a750468e75e4be053d Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 19 Jan 2022 18:38:41 +0000 Subject: [PATCH 5/6] Remove unused import --- .../main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala b/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala index e1085d9c8..5eca6b29a 100644 --- a/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala +++ b/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala @@ -16,7 +16,6 @@ import scala.concurrent.Future import scala.concurrent.Promise import scala.scalajs.js import scala.scalajs.js.Thenable.Implicits._ -import scala.scalajs.js.typedarray._ import scala.util.Try trait BrowserTests extends WebCryptoApiTests { From 4cc7429dd594fe178eadc11a067c0103465fc457 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 19 Jan 2022 18:46:00 +0000 Subject: [PATCH 6/6] Another unused import --- .../main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala b/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala index 5eca6b29a..c0e55b4ad 100644 --- a/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala +++ b/tests-shared/src/main/scala/org/scalajs/dom/tests/shared/BrowserTests.scala @@ -2,7 +2,6 @@ package org.scalajs.dom.tests.shared import org.junit.Assert.assertEquals import org.junit.Test -import org.scalajs.dom import org.scalajs.dom.QueuingStrategy import org.scalajs.dom.ReadableStream import org.scalajs.dom.ReadableStreamController