Skip to content

Commit 498e59f

Browse files
Lubrsigmta
authored andcommitted
LibWeb: Set width/height of ImageBitmap when deserializing or receiving
1 parent 3ca4ff6 commit 498e59f

File tree

3 files changed

+50
-2
lines changed

3 files changed

+50
-2
lines changed

Libraries/LibWeb/HTML/ImageBitmap.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ WebIDL::ExceptionOr<void> ImageBitmap::serialization_steps(HTML::TransferDataEnc
8484
WebIDL::ExceptionOr<void> ImageBitmap::deserialization_steps(HTML::TransferDataDecoder& serialized, HTML::DeserializationMemory&)
8585
{
8686
// 1. Set value's bitmap data to serialized.[[BitmapData]].
87-
m_bitmap = TRY(deserialize_bitmap(this->realm(), serialized));
87+
set_bitmap(TRY(deserialize_bitmap(this->realm(), serialized)));
8888

8989
return {};
9090
}
@@ -107,7 +107,7 @@ WebIDL::ExceptionOr<void> ImageBitmap::transfer_steps(HTML::TransferDataEncoder&
107107
WebIDL::ExceptionOr<void> ImageBitmap::transfer_receiving_steps(HTML::TransferDataDecoder& data_holder)
108108
{
109109
// 1. Set value's bitmap data to dataHolder.[[BitmapData]].
110-
m_bitmap = TRY(deserialize_bitmap(this->realm(), data_holder));
110+
set_bitmap(TRY(deserialize_bitmap(this->realm(), data_holder)));
111111

112112
return {};
113113
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
before cloning:
2+
original imageBitmap width: 120
3+
original imageBitmap height: 120
4+
after cloning, before transferring:
5+
original imageBitmap width: 120
6+
original imageBitmap height: 120
7+
cloned imageBitmap width: 120
8+
cloned imageBitmap height: 120
9+
after cloning, after transferring:
10+
original imageBitmap width: 0
11+
original imageBitmap height: 0
12+
cloned imageBitmap width: 120
13+
cloned imageBitmap height: 120
14+
transferred imageBitmap width: 120
15+
transferred imageBitmap height: 120
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<!DOCTYPE html>
2+
<script src="../include.js"></script>
3+
<script>
4+
asyncTest((done) => {
5+
const image = document.createElement("img");
6+
7+
image.onload = async () => {
8+
const printDimensions = (name, imageBitmapToPrint) => {
9+
println(`${name} imageBitmap width: ${imageBitmapToPrint.width}`);
10+
println(`${name} imageBitmap height: ${imageBitmapToPrint.height}`);
11+
};
12+
13+
const imageBitmap = await createImageBitmap(image);
14+
println("before cloning:");
15+
printDimensions("original", imageBitmap);
16+
17+
println("after cloning, before transferring:");
18+
const clonedImageBitmap = structuredClone(imageBitmap);
19+
printDimensions("original", imageBitmap);
20+
printDimensions("cloned", clonedImageBitmap);
21+
22+
println("after cloning, after transferring:");
23+
const transferredImageBitmap = structuredClone(imageBitmap, { transfer: [imageBitmap] });
24+
printDimensions("original", imageBitmap);
25+
printDimensions("cloned", clonedImageBitmap);
26+
printDimensions("transferred", transferredImageBitmap);
27+
28+
done();
29+
};
30+
31+
image.src = "../../../Assets/120.png";
32+
});
33+
</script>

0 commit comments

Comments
 (0)