Skip to content

Commit 7c149c8

Browse files
committed
WIP
1 parent 6c5a02f commit 7c149c8

File tree

8 files changed

+71
-49
lines changed

8 files changed

+71
-49
lines changed

dom/src/main/scala/org/scalajs/dom/ReadableStreamType.scala renamed to dom/src/main/scala-2/org/scalajs/dom/ReadableStreamType.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ sealed trait ReadableStreamType extends js.Any
88

99
object ReadableStreamType {
1010
val bytes: ReadableStreamType = "bytes".asInstanceOf[ReadableStreamType]
11-
}
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package org.scalajs.dom
2+
3+
opaque type ReadableStreamType <: String = String
4+
5+
object ReadableStreamType {
6+
val bytes: ReadableStreamType = "bytes"
7+
}

dom/src/main/scala/org/scalajs/dom/ReadableStreamController.scala

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.scalajs.dom
22

33
import scala.scalajs.js
4+
import scala.scalajs.js.annotation.JSGlobal
45

56
/** [[https://streams.spec.whatwg.org/#rs-controller-class ¶3.3 Class ReadableStreamController]] of whatwg spec
67
*
@@ -13,7 +14,8 @@ import scala.scalajs.js
1314
* Type of the Chunks to be enqueued to the Stream
1415
*/
1516
@js.native
16-
trait ReadableStreamController[-T] extends js.Object {
17+
@JSGlobal
18+
class ReadableStreamController[-T] private[this] (stream: ReadableStream[T] = null) extends js.Object {
1719

1820
/** The desiredSize getter returns the desired size to fill the controlled stream’s internal queue. It can be
1921
* negative, if the queue is over-full. An underlying source should use this information to determine when and how to

dom/src/main/scala/org/scalajs/dom/ReadableStreamReader.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ class ReadableStreamReader[+T](stream: ReadableStream[T]) extends js.Object {
3131
* If the reader is active, the cancel method behaves the same as that for the associated stream. When done, it
3232
* automatically releases the lock.
3333
*/
34-
def cancel[U](reason: js.UndefOr[U]): js.Promise[U] = js.native
34+
def cancel[U](reason: U): js.Promise[U] = js.native
35+
def cancel(): js.Promise[Unit] = js.native
3536

3637
/** See [[https://streams.spec.whatwg.org/#reader-read 3.4.4.3. read()]] of whatwg Stream spec.
3738
*

tests-chrome/src/test/scala/org/scalajs/dom/tests/chrome/ChromeTests.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ package org.scalajs.dom.tests.chrome
33
import org.scalajs.dom.tests.shared._
44
import org.scalajs.dom.tests.webworker._
55

6-
class ChromeTests extends SharedTests with WebWorkerTests
6+
class ChromeTests extends SharedTests with WebWorkerTests with BrowserTests

tests-firefox/src/test/scala/org/scalajs/dom/tests/firefox/FirefoxTests.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ package org.scalajs.dom.tests.firefox
33
import org.scalajs.dom.tests.shared._
44
import org.scalajs.dom.tests.webworker._
55

6-
class FirefoxTests extends SharedTests with WebWorkerTests
6+
class FirefoxTests extends SharedTests with WebWorkerTests with BrowserTests
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package org.scalajs.dom.tests.shared
2+
3+
import org.junit.Assert.assertEquals
4+
import org.junit.Test
5+
import org.scalajs.dom.ReadableStream
6+
import org.scalajs.dom.ReadableStreamController
7+
import org.scalajs.dom.ReadableStreamUnderlyingSource
8+
import org.scalajs.dom.tests.shared.AsyncTesting.AsyncResult
9+
import org.scalajs.dom.tests.shared.AsyncTesting._
10+
import org.scalajs.dom.tests.shared.AsyncTesting.async
11+
12+
import scala.concurrent.Future
13+
import scala.scalajs.js
14+
import scala.scalajs.js.Thenable.Implicits._
15+
16+
trait BrowserTests {
17+
18+
@Test
19+
final def ReadableStreamTest: AsyncResult = async {
20+
case class Tuna(color: String)
21+
22+
val expectedTunas = Seq(
23+
Tuna("blue"),
24+
Tuna("red")
25+
)
26+
27+
val stream = ReadableStream[Tuna](
28+
new ReadableStreamUnderlyingSource[Tuna] {
29+
start = { (controller: ReadableStreamController[Tuna]) =>
30+
controller.enqueue(Tuna("blue"))
31+
controller.enqueue(Tuna("red"))
32+
controller.close()
33+
}: js.Function1[ReadableStreamController[Tuna], Unit]
34+
}
35+
)
36+
37+
val reader = stream.getReader()
38+
39+
def read(tunas: Seq[Tuna]): Future[Seq[Tuna]] = {
40+
reader
41+
.read()
42+
.flatMap { chunk =>
43+
if (chunk.done) {
44+
Future.successful(tunas)
45+
} else {
46+
read(tunas :+ chunk.value)
47+
}
48+
}
49+
}
50+
read(Seq.empty)
51+
.map { receivedTunas =>
52+
assertEquals(receivedTunas, expectedTunas)
53+
}
54+
}
55+
}
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
package org.scalajs.dom.tests.shared
22

3-
import org.junit.Assert.assertEquals
4-
import org.junit.Test
53
import org.scalajs.dom.tests.shared.AsyncTesting._
6-
7-
import scala.concurrent.Future
8-
import scala.scalajs.js
9-
import scala.scalajs.js.Thenable.Implicits._
4+
import org.junit.Test
105

116
trait SharedTests {
127

@@ -41,42 +36,4 @@ trait SharedTests {
4136

4237
@Test final def WindowIdbTest(): AsyncResult =
4338
IdbTest(window.indexedDB)
44-
45-
@Test
46-
final def ReadableStreamTest: AsyncResult = async {
47-
case class Tuna(color: String)
48-
49-
val expectedTunas = Seq(
50-
Tuna("blue"),
51-
Tuna("red")
52-
)
53-
54-
val stream = ReadableStream[Tuna](
55-
new ReadableStreamUnderlyingSource[Tuna] {
56-
start = { (controller: ReadableStreamController[Tuna]) =>
57-
controller.enqueue(Tuna("blue"))
58-
controller.enqueue(Tuna("red"))
59-
controller.close()
60-
}: js.Function1[ReadableStreamController[Tuna], Unit]
61-
}
62-
)
63-
64-
val reader = stream.getReader()
65-
66-
def read(tunas: Seq[Tuna]): Future[Seq[Tuna]] = {
67-
reader
68-
.read()
69-
.flatMap { chunk =>
70-
if (chunk.done) {
71-
Future.successful(tunas)
72-
} else {
73-
read(tunas :+ chunk.value)
74-
}
75-
}
76-
}
77-
read(Seq.empty)
78-
.map { receivedTunas =>
79-
assertEquals(receivedTunas, expectedTunas)
80-
}
81-
}
8239
}

0 commit comments

Comments
 (0)