transferFromImageBitmap should update canvas dimensions
authordino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 1 Nov 2017 18:43:57 +0000 (18:43 +0000)
committerdino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 1 Nov 2017 18:43:57 +0000 (18:43 +0000)
https://bugs.webkit.org/show_bug.cgi?id=179096
<rdar://problem/35285218>

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Update expected results now that we pass more of this test.

* web-platform-tests/imagebitmap-renderingcontext/bitmaprenderer-as-imagesource-expected.txt:

Source/WebCore:

When transferFromImageBitmap is called, the dimensions of the HTMLCanvasElement
should be updated to reflect the size of the passed ImageBitmap.

Update an existing WPT result.

* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::setImageBuffer const): Update the
size of the element based on the incoming buffer.
* html/HTMLCanvasElement.h: Mark m_size as mutable so we can
call it from the const function setImageBuffer.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@224283 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/imagebitmap-renderingcontext/bitmaprenderer-as-imagesource-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/html/HTMLCanvasElement.cpp
Source/WebCore/html/HTMLCanvasElement.h

index d1ae6ab..61b9b5a 100644 (file)
@@ -1,3 +1,15 @@
+2017-10-31  Dean Jackson  <dino@apple.com>
+
+        transferFromImageBitmap should update canvas dimensions
+        https://bugs.webkit.org/show_bug.cgi?id=179096
+        <rdar://problem/35285218>
+
+        Reviewed by Sam Weinig.
+
+        Update expected results now that we pass more of this test.
+
+        * web-platform-tests/imagebitmap-renderingcontext/bitmaprenderer-as-imagesource-expected.txt:
+
 2017-10-31  Chris Dumez  <cdumez@apple.com>
 
         Fix a couple of service worker tests and unskip them
index 39e7cc2..29103dc 100644 (file)
@@ -1,5 +1,5 @@
 
-FAIL Test that createImageBitmap from a bitmaprenderer canvas produces correct result assert_equals: expected 10 but got 20
+PASS Test that createImageBitmap from a bitmaprenderer canvas produces correct result 
 PASS Test that createImageBitmap on a bitmaprenderer canvas that never consumes any source produces correct result 
 PASS Test that createImageBitmap on a bitmaprenderer canvas that consumes null produces correct result 
 
index 552c923..49e7b1c 100644 (file)
@@ -1,3 +1,22 @@
+2017-10-31  Dean Jackson  <dino@apple.com>
+
+        transferFromImageBitmap should update canvas dimensions
+        https://bugs.webkit.org/show_bug.cgi?id=179096
+        <rdar://problem/35285218>
+
+        Reviewed by Sam Weinig.
+
+        When transferFromImageBitmap is called, the dimensions of the HTMLCanvasElement
+        should be updated to reflect the size of the passed ImageBitmap.
+
+        Update an existing WPT result.
+
+        * html/HTMLCanvasElement.cpp:
+        (WebCore::HTMLCanvasElement::setImageBuffer const): Update the
+        size of the element based on the incoming buffer.
+        * html/HTMLCanvasElement.h: Mark m_size as mutable so we can
+        call it from the const function setImageBuffer.
+
 2017-11-01  Yusuke Suzuki  <utatane.tea@gmail.com>
 
         [JSC] Introduce @toObject
index 78a4fef..26ab458 100644 (file)
@@ -978,6 +978,9 @@ void HTMLCanvasElement::setImageBuffer(std::unique_ptr<ImageBuffer>&& buffer) co
         m_imageBuffer = WTFMove(buffer);
     }
 
+    if (m_imageBuffer && m_size != m_imageBuffer->internalSize())
+        m_size = m_imageBuffer->internalSize();
+
     size_t currentMemoryCost = memoryCost();
     activePixelMemory += currentMemoryCost;
 
index 417935b..b4e2e2c 100644 (file)
@@ -200,7 +200,7 @@ private:
     std::unique_ptr<CanvasRenderingContext> m_context;
 
     FloatRect m_dirtyRect;
-    IntSize m_size;
+    mutable IntSize m_size;
 
     bool m_originClean { true };
     bool m_ignoreReset { false };