| Index: Source/core/html/canvas/CanvasRenderingContext2D.cpp
|
| diff --git a/Source/core/html/canvas/CanvasRenderingContext2D.cpp b/Source/core/html/canvas/CanvasRenderingContext2D.cpp
|
| index c98b4a4759a096245ce17b716a1df0a8aa002901..92795cecba1e77eaf184ac50d74b1fcb20fb2c6b 100644
|
| --- a/Source/core/html/canvas/CanvasRenderingContext2D.cpp
|
| +++ b/Source/core/html/canvas/CanvasRenderingContext2D.cpp
|
| @@ -90,14 +90,27 @@ static bool contextLostRestoredEventsEnabled()
|
| return RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled();
|
| }
|
|
|
| -CanvasRenderingContext2D::CanvasRenderingContext2D(HTMLCanvasElement* canvas, const Canvas2DContextAttributes* attrs, Document& document)
|
| +static Canvas2DContextStorage storageFromAttributes(const CanvasContextCreationAttributes& attrs)
|
| +{
|
| + if (!RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled())
|
| + return PersistentStorage;
|
| +
|
| + // The other valid option is "persistent" -- but since the default
|
| + // is Persistent, it isn't necessary to test for it explicitly.
|
| + if (attrs.hasStorage() && attrs.storage() == "discardable") {
|
| + return DiscardableStorage;
|
| + }
|
| + return PersistentStorage;
|
| +}
|
| +
|
| +CanvasRenderingContext2D::CanvasRenderingContext2D(HTMLCanvasElement* canvas, const CanvasContextCreationAttributes& attrs, Document& document)
|
| : CanvasRenderingContext(canvas)
|
| , m_usesCSSCompatibilityParseMode(document.inQuirksMode())
|
| , m_clipAntialiasing(NotAntiAliased)
|
| - , m_hasAlpha(!attrs || attrs->alpha())
|
| + , m_hasAlpha(attrs.alpha())
|
| , m_isContextLost(false)
|
| , m_contextRestorable(true)
|
| - , m_storageMode(!attrs ? PersistentStorage : attrs->parsedStorage())
|
| + , m_storageMode(storageFromAttributes(attrs))
|
| , m_tryRestoreContextAttemptCount(0)
|
| , m_dispatchContextLostEventTimer(this, &CanvasRenderingContext2D::dispatchContextLostEvent)
|
| , m_dispatchContextRestoredEventTimer(this, &CanvasRenderingContext2D::dispatchContextRestoredEvent)
|
| @@ -2227,11 +2240,12 @@ void CanvasRenderingContext2D::setImageSmoothingEnabled(bool enabled)
|
| c->setImageInterpolationQuality(enabled ? CanvasDefaultInterpolationQuality : InterpolationNone);
|
| }
|
|
|
| -PassRefPtrWillBeRawPtr<Canvas2DContextAttributes> CanvasRenderingContext2D::getContextAttributes() const
|
| +void CanvasRenderingContext2D::getContextAttributes(Canvas2DContextAttributes& attrs) const
|
| {
|
| - RefPtrWillBeRawPtr<Canvas2DContextAttributes> attributes = Canvas2DContextAttributes::create();
|
| - attributes->setAlpha(m_hasAlpha);
|
| - return attributes.release();
|
| + attrs.setAlpha(m_hasAlpha);
|
| + if (RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled()) {
|
| + attrs.setStorage(m_storageMode == PersistentStorage ? "persistent" : "discardable");
|
| + }
|
| }
|
|
|
| void CanvasRenderingContext2D::drawFocusIfNeeded(Element* element)
|
|
|