Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(413)

Unified Diff: third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp

Issue 1455763002: Use union type in ImageBitmapFactories.idl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: better argument passing Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp
diff --git a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp
index 2b5eb6b93d4b19f34a9dcbbb709458564ef028b9..11c981c40518a2852efc971c4d3a0360c4afb0c2 100644
--- a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp
+++ b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp
@@ -5,6 +5,7 @@
#include "config.h"
#include "modules/canvas2d/CanvasRenderingContext2D.h"
+#include "core/fetch/MemoryCache.h"
#include "core/frame/FrameView.h"
#include "core/frame/ImageBitmap.h"
#include "core/html/HTMLCanvasElement.h"
@@ -80,11 +81,13 @@ protected:
CanvasRenderingContext2D* context2d() const { return static_cast<CanvasRenderingContext2D*>(canvasElement().renderingContext()); }
void createContext(OpacityMode);
+ void TearDown();
private:
OwnPtr<DummyPageHolder> m_dummyPageHolder;
RefPtrWillBePersistent<HTMLDocument> m_document;
RefPtrWillBePersistent<HTMLCanvasElement> m_canvasElement;
+ Persistent<MemoryCache> m_globalMemoryCache;
class WrapGradients final : public NoBaseWillBeGarbageCollectedFinalized<WrapGradients> {
public:
@@ -159,6 +162,14 @@ void CanvasRenderingContext2DTest::SetUp()
EXPECT_FALSE(exceptionState.hadException());
StringOrCanvasGradientOrCanvasPattern wrappedAlphaGradient;
this->alphaGradient().setCanvasGradient(alphaGradient);
+
+ m_globalMemoryCache = replaceMemoryCacheForTesting(MemoryCache::create());
+}
+
+void CanvasRenderingContext2DTest::TearDown()
+{
+ Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, BlinkGC::ForcedGC);
+ replaceMemoryCacheForTesting(m_globalMemoryCache.release());
}
//============================================================================
@@ -600,4 +611,22 @@ TEST_F(CanvasRenderingContext2DTest, FallbackWithLargeState)
canvasElement().doDeferredPaintInvalidation(); // To close the current frame
}
+TEST_F(CanvasRenderingContext2DTest, ImageResourceLifetime)
+{
+ RefPtrWillBeRawPtr<HTMLCanvasElement> canvasElement = HTMLCanvasElement::create(*Document::create().get());
+ canvasElement->setHeight(40);
+ canvasElement->setWidth(40);
+ RefPtrWillBeRawPtr<ImageBitmap> imageBitmapDerived = nullptr;
+ {
+ RefPtrWillBeRawPtr<ImageBitmap> imageBitmapFromCanvas = ImageBitmap::create(canvasElement.get(), IntRect(0, 0, canvasElement->width(), canvasElement->height()));
+ imageBitmapDerived = ImageBitmap::create(imageBitmapFromCanvas.get(), IntRect(0, 0, 20, 20));
+ }
+ CanvasContextCreationAttributes attributes;
+ CanvasRenderingContext2D* context = static_cast<CanvasRenderingContext2D*>(canvasElement->getCanvasRenderingContext("2d", attributes));
+ TrackExceptionState exceptionState;
+ CanvasImageSourceUnion imageSource;
+ imageSource.setImageBitmap(imageBitmapDerived);
+ context->drawImage(imageSource, 0, 0, exceptionState);
+}
+
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698