Diff
Modified: trunk/Source/WebCore/ChangeLog (208205 => 208206)
--- trunk/Source/WebCore/ChangeLog 2016-11-01 01:17:58 UTC (rev 208205)
+++ trunk/Source/WebCore/ChangeLog 2016-11-01 01:36:00 UTC (rev 208206)
@@ -1,3 +1,76 @@
+2016-10-31 Myles C. Maxfield <mmaxfi...@apple.com>
+
+ Migrate CanvasRenderingContext's internal canvas pointer to a reference
+ https://bugs.webkit.org/show_bug.cgi?id=164259
+
+ Reviewed by Dean Jackson.
+
+ It is never nullptr.
+
+ No new tests because there is no behavior change.
+
+ * html/HTMLCanvasElement.cpp:
+ (WebCore::HTMLCanvasElement::getContext):
+ * html/canvas/CanvasRenderingContext.cpp:
+ (WebCore::CanvasRenderingContext::CanvasRenderingContext):
+ (WebCore::CanvasRenderingContext::wouldTaintOrigin):
+ (WebCore::CanvasRenderingContext::checkOrigin):
+ * html/canvas/CanvasRenderingContext.h:
+ (WebCore::CanvasRenderingContext::ref):
+ (WebCore::CanvasRenderingContext::deref):
+ (WebCore::CanvasRenderingContext::canvas):
+ (WebCore::CanvasRenderingContext::checkOrigin):
+ * html/canvas/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::CanvasRenderingContext2D):
+ (WebCore::CanvasRenderingContext2D::unwindStateStack):
+ (WebCore::CanvasRenderingContext2D::isAccelerated):
+ (WebCore::CanvasRenderingContext2D::realizeSaves):
+ (WebCore::CanvasRenderingContext2D::setStrokeStyle):
+ (WebCore::CanvasRenderingContext2D::setFillStyle):
+ (WebCore::CanvasRenderingContext2D::setShadowColor):
+ (WebCore::CanvasRenderingContext2D::resetTransform):
+ (WebCore::CanvasRenderingContext2D::setStrokeColor):
+ (WebCore::CanvasRenderingContext2D::setFillColor):
+ (WebCore::CanvasRenderingContext2D::setShadow):
+ (WebCore::CanvasRenderingContext2D::clearCanvas):
+ (WebCore::CanvasRenderingContext2D::transformAreaToDevice):
+ (WebCore::CanvasRenderingContext2D::rectContainsCanvas):
+ (WebCore::CanvasRenderingContext2D::calculateCompositingBufferRect):
+ (WebCore::CanvasRenderingContext2D::compositeBuffer):
+ (WebCore::CanvasRenderingContext2D::createPattern):
+ (WebCore::CanvasRenderingContext2D::didDrawEntireCanvas):
+ (WebCore::CanvasRenderingContext2D::didDraw):
+ (WebCore::CanvasRenderingContext2D::paintRenderingResultsToCanvas):
+ (WebCore::CanvasRenderingContext2D::drawingContext):
+ (WebCore::CanvasRenderingContext2D::getImageData):
+ (WebCore::CanvasRenderingContext2D::drawFocusIfNeededInternal):
+ (WebCore::CanvasRenderingContext2D::putImageData):
+ (WebCore::CanvasRenderingContext2D::setFont):
+ (WebCore::CanvasRenderingContext2D::toTextDirection):
+ (WebCore::CanvasRenderingContext2D::direction):
+ (WebCore::CanvasRenderingContext2D::platformLayer):
+ * html/canvas/WebGL2RenderingContext.cpp:
+ (WebCore::WebGL2RenderingContext::WebGL2RenderingContext):
+ * html/canvas/WebGL2RenderingContext.h:
+ * html/canvas/WebGLRenderingContext.cpp:
+ (WebCore::WebGLRenderingContext::WebGLRenderingContext):
+ * html/canvas/WebGLRenderingContext.h:
+ * html/canvas/WebGLRenderingContextBase.cpp:
+ (WebCore::WebGLRenderingContextBase::create):
+ (WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase):
+ (WebCore::WebGLRenderingContextBase::setupFlags):
+ (WebCore::WebGLRenderingContextBase::markContextChanged):
+ (WebCore::WebGLRenderingContextBase::paintRenderingResultsToCanvas):
+ (WebCore::WebGLRenderingContextBase::reshape):
+ (WebCore::WebGLRenderingContextBase::isContextLostOrPending):
+ (WebCore::WebGLRenderingContextBase::readPixels):
+ (WebCore::WebGLRenderingContextBase::loseContextImpl):
+ (WebCore::WebGLRenderingContextBase::printWarningToConsole):
+ (WebCore::WebGLRenderingContextBase::dispatchContextLostEvent):
+ (WebCore::WebGLRenderingContextBase::maybeRestoreContext):
+ (WebCore::WebGLRenderingContextBase::clampedCanvasSize):
+ * html/canvas/WebGLRenderingContextBase.h:
+
2016-10-31 Brady Eidson <beid...@apple.com>
Address style feedback in https://bugs.webkit.org/show_bug.cgi?id=164097
Modified: trunk/Source/WebCore/html/HTMLCanvasElement.cpp (208205 => 208206)
--- trunk/Source/WebCore/html/HTMLCanvasElement.cpp 2016-11-01 01:17:58 UTC (rev 208205)
+++ trunk/Source/WebCore/html/HTMLCanvasElement.cpp 2016-11-01 01:36:00 UTC (rev 208206)
@@ -247,7 +247,7 @@
if (m_context && !m_context->is3d())
return nullptr;
if (!m_context) {
- m_context = WebGLRenderingContextBase::create(this, static_cast<WebGLContextAttributes*>(attrs), type);
+ m_context = WebGLRenderingContextBase::create(*this, static_cast<WebGLContextAttributes*>(attrs), type);
if (m_context) {
// Need to make sure a RenderLayer and compositing layer get created for the Canvas
invalidateStyleAndLayerComposition();
Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext.cpp (208205 => 208206)
--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext.cpp 2016-11-01 01:17:58 UTC (rev 208205)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext.cpp 2016-11-01 01:36:00 UTC (rev 208206)
@@ -36,7 +36,7 @@
namespace WebCore {
-CanvasRenderingContext::CanvasRenderingContext(HTMLCanvasElement* canvas)
+CanvasRenderingContext::CanvasRenderingContext(HTMLCanvasElement& canvas)
: m_canvas(canvas)
{
}
@@ -43,7 +43,7 @@
bool CanvasRenderingContext::wouldTaintOrigin(const CanvasPattern* pattern)
{
- if (canvas()->originClean() && pattern && !pattern->originClean())
+ if (canvas().originClean() && pattern && !pattern->originClean())
return true;
return false;
}
@@ -50,7 +50,7 @@
bool CanvasRenderingContext::wouldTaintOrigin(const HTMLCanvasElement* sourceCanvas)
{
- if (canvas()->originClean() && sourceCanvas && !sourceCanvas->originClean())
+ if (canvas().originClean() && sourceCanvas && !sourceCanvas->originClean())
return true;
return false;
}
@@ -57,7 +57,7 @@
bool CanvasRenderingContext::wouldTaintOrigin(const HTMLImageElement* element)
{
- if (!element || !canvas()->originClean())
+ if (!element || !canvas().originClean())
return false;
auto* cachedImage = element->cachedImage();
@@ -74,9 +74,9 @@
if (!cachedImage->isCORSSameOrigin())
return true;
- ASSERT(canvas()->securityOrigin());
+ ASSERT(canvas().securityOrigin());
ASSERT(cachedImage->origin());
- ASSERT(canvas()->securityOrigin()->toString() == cachedImage->origin()->toString());
+ ASSERT(canvas().securityOrigin()->toString() == cachedImage->origin()->toString());
return false;
}
@@ -87,7 +87,7 @@
// to test the finalURL. Please be careful when fixing this issue not to
// make currentSrc be the final URL because then the
// HTMLMediaElement.currentSrc DOM API would leak redirect destinations!
- if (!video || !canvas()->originClean())
+ if (!video || !canvas().originClean())
return false;
if (!video->hasSingleSecurityOrigin())
@@ -105,19 +105,19 @@
bool CanvasRenderingContext::wouldTaintOrigin(const URL& url)
{
- if (!canvas()->originClean())
+ if (!canvas().originClean())
return false;
if (url.protocolIsData())
return false;
- return !canvas()->securityOrigin()->canRequest(url);
+ return !canvas().securityOrigin()->canRequest(url);
}
void CanvasRenderingContext::checkOrigin(const URL& url)
{
if (wouldTaintOrigin(url))
- canvas()->setOriginTainted();
+ canvas().setOriginTainted();
}
} // namespace WebCore
Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext.h (208205 => 208206)
--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext.h 2016-11-01 01:17:58 UTC (rev 208205)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext.h 2016-11-01 01:36:00 UTC (rev 208206)
@@ -46,9 +46,9 @@
public:
virtual ~CanvasRenderingContext() { }
- void ref() { m_canvas->ref(); }
- void deref() { m_canvas->deref(); }
- HTMLCanvasElement* canvas() const { return m_canvas; }
+ void ref() { m_canvas.ref(); }
+ void deref() { m_canvas.deref(); }
+ HTMLCanvasElement& canvas() const { return m_canvas; }
virtual bool is2d() const { return false; }
virtual bool isWebGL1() const { return false; }
@@ -60,7 +60,7 @@
virtual PlatformLayer* platformLayer() const { return 0; }
protected:
- CanvasRenderingContext(HTMLCanvasElement*);
+ CanvasRenderingContext(HTMLCanvasElement&);
bool wouldTaintOrigin(const CanvasPattern*);
bool wouldTaintOrigin(const HTMLCanvasElement*);
bool wouldTaintOrigin(const HTMLImageElement*);
@@ -70,12 +70,12 @@
template<class T> void checkOrigin(const T* arg)
{
if (wouldTaintOrigin(arg))
- canvas()->setOriginTainted();
+ canvas().setOriginTainted();
}
void checkOrigin(const URL&);
private:
- HTMLCanvasElement* m_canvas;
+ HTMLCanvasElement& m_canvas;
};
} // namespace WebCore
Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp (208205 => 208206)
--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp 2016-11-01 01:17:58 UTC (rev 208205)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp 2016-11-01 01:36:00 UTC (rev 208206)
@@ -133,7 +133,7 @@
};
CanvasRenderingContext2D::CanvasRenderingContext2D(HTMLCanvasElement& canvas, bool usesCSSCompatibilityParseMode, bool usesDashboardCompatibilityMode)
- : CanvasRenderingContext(&canvas)
+ : CanvasRenderingContext(canvas)
, m_stateStack(1)
, m_usesCSSCompatibilityParseMode(usesCSSCompatibilityParseMode)
#if ENABLE(DASHBOARD_SUPPORT)
@@ -151,7 +151,7 @@
// is cleared before destruction, to avoid assertions in the
// GraphicsContext dtor.
if (size_t stackSize = m_stateStack.size()) {
- if (GraphicsContext* context = canvas()->existingDrawingContext()) {
+ if (GraphicsContext* context = canvas().existingDrawingContext()) {
while (--stackSize)
context->restore();
}
@@ -171,7 +171,7 @@
bool CanvasRenderingContext2D::isAccelerated() const
{
#if USE(IOSURFACE_CANVAS_BACKING_STORE) || ENABLE(ACCELERATED_2D_CANVAS)
- if (!canvas()->hasCreatedImageBuffer())
+ if (!canvas().hasCreatedImageBuffer())
return false;
GraphicsContext* context = drawingContext();
return context && context->isAcceleratedContext();
@@ -358,7 +358,7 @@
if (m_unrealizedSaveCount) {
static NeverDestroyed<String> consoleMessage(ASCIILiteral("CanvasRenderingContext2D.save() has been called without a matching restore() too many times. Ignoring save()."));
- canvas()->document().addConsoleMessage(MessageSource::Rendering, MessageLevel::Error, consoleMessage);
+ canvas().document().addConsoleMessage(MessageSource::Rendering, MessageLevel::Error, consoleMessage);
}
}
@@ -406,9 +406,9 @@
if (style.isCurrentColor()) {
if (style.hasOverrideAlpha()) {
// FIXME: Should not use RGBA32 here.
- style = CanvasStyle(colorWithOverrideAlpha(currentColor(canvas()).rgb(), style.overrideAlpha()));
+ style = CanvasStyle(colorWithOverrideAlpha(currentColor(&canvas()).rgb(), style.overrideAlpha()));
} else
- style = CanvasStyle(currentColor(canvas()));
+ style = CanvasStyle(currentColor(&canvas()));
} else
checkOrigin(style.canvasPattern());
@@ -433,9 +433,9 @@
if (style.isCurrentColor()) {
if (style.hasOverrideAlpha()) {
// FIXME: Should not use RGBA32 here.
- style = CanvasStyle(colorWithOverrideAlpha(currentColor(canvas()).rgb(), style.overrideAlpha()));
+ style = CanvasStyle(colorWithOverrideAlpha(currentColor(&canvas()).rgb(), style.overrideAlpha()));
} else
- style = CanvasStyle(currentColor(canvas()));
+ style = CanvasStyle(currentColor(&canvas()));
} else
checkOrigin(style.canvasPattern());
@@ -582,7 +582,7 @@
void CanvasRenderingContext2D::setShadowColor(const String& colorString)
{
- Color color = parseColorOrCurrentColor(colorString, canvas());
+ Color color = parseColorOrCurrentColor(colorString, &canvas());
if (!color.isValid())
return;
if (state().shadowColor == color)
@@ -824,7 +824,7 @@
realizeSaves();
- c->setCTM(canvas()->baseTransform());
+ c->setCTM(canvas().baseTransform());
modifiableState().transform = AffineTransform();
if (hasInvertibleTransform)
@@ -844,7 +844,7 @@
return;
realizeSaves();
- setStrokeStyle(CanvasStyle::createFromString(color, &canvas()->document()));
+ setStrokeStyle(CanvasStyle::createFromString(color, &canvas().document()));
modifiableState().unparsedStrokeColor = color;
}
@@ -880,7 +880,7 @@
return;
realizeSaves();
- setFillStyle(CanvasStyle::createFromString(color, &canvas()->document()));
+ setFillStyle(CanvasStyle::createFromString(color, &canvas().document()));
modifiableState().unparsedFillColor = color;
}
@@ -1252,7 +1252,7 @@
void CanvasRenderingContext2D::setShadow(float width, float height, float blur, const String& colorString, Optional<float> alpha)
{
- Color color = parseColorOrCurrentColor(colorString, canvas());
+ Color color = parseColorOrCurrentColor(colorString, &canvas());
if (!colorString.isNull() && !color.isValid())
return;
if (!color.isValid())
@@ -1603,13 +1603,13 @@
void CanvasRenderingContext2D::clearCanvas()
{
- FloatRect canvasRect(0, 0, canvas()->width(), canvas()->height());
+ FloatRect canvasRect(0, 0, canvas().width(), canvas().height());
GraphicsContext* c = drawingContext();
if (!c)
return;
c->save();
- c->setCTM(canvas()->baseTransform());
+ c->setCTM(canvas().baseTransform());
c->clearRect(canvasRect);
c->restore();
}
@@ -1618,7 +1618,7 @@
{
Path transformed(path);
transformed.transform(state().transform);
- transformed.transform(canvas()->baseTransform());
+ transformed.transform(canvas().baseTransform());
return transformed;
}
@@ -1632,14 +1632,14 @@
bool CanvasRenderingContext2D::rectContainsCanvas(const FloatRect& rect) const
{
FloatQuad quad(rect);
- FloatQuad canvasQuad(FloatRect(0, 0, canvas()->width(), canvas()->height()));
+ FloatQuad canvasQuad(FloatRect(0, 0, canvas().width(), canvas().height()));
return state().transform.mapQuad(quad).containsQuad(canvasQuad);
}
template<class T> IntRect CanvasRenderingContext2D::calculateCompositingBufferRect(const T& area, IntSize* croppedOffset)
{
- IntRect canvasRect(0, 0, canvas()->width(), canvas()->height());
- canvasRect = canvas()->baseTransform().mapRect(canvasRect);
+ IntRect canvasRect(0, 0, canvas().width(), canvas().height());
+ canvasRect = canvas().baseTransform().mapRect(canvasRect);
Path path = transformAreaToDevice(area);
IntRect bufferRect = enclosingIntRect(path.fastBoundingRect());
IntPoint originalLocation = bufferRect.location();
@@ -1656,8 +1656,8 @@
void CanvasRenderingContext2D::compositeBuffer(ImageBuffer& buffer, const IntRect& bufferRect, CompositeOperator op)
{
- IntRect canvasRect(0, 0, canvas()->width(), canvas()->height());
- canvasRect = canvas()->baseTransform().mapRect(canvasRect);
+ IntRect canvasRect(0, 0, canvas().width(), canvas().height());
+ canvasRect = canvas().baseTransform().mapRect(canvasRect);
GraphicsContext* c = drawingContext();
if (!c)
@@ -1764,7 +1764,7 @@
if (cachedImage->status() == CachedResource::LoadError)
return Exception { INVALID_STATE_ERR };
- bool originClean = cachedImage->isOriginClean(canvas()->securityOrigin());
+ bool originClean = cachedImage->isOriginClean(canvas().securityOrigin());
// FIXME: SVG images with animations can switch between clean and dirty (leaking cross-origin
// data). We should either:
@@ -1802,7 +1802,7 @@
return Exception { SYNTAX_ERR };
checkOrigin(&videoElement);
- bool originClean = canvas()->originClean();
+ bool originClean = canvas().originClean();
#if USE(CG) || (ENABLE(ACCELERATED_2D_CANVAS) && USE(GSTREAMER_GL) && USE(CAIRO))
if (auto nativeImage = videoElement.nativeImageForCurrentTime())
@@ -1819,7 +1819,7 @@
void CanvasRenderingContext2D::didDrawEntireCanvas()
{
- didDraw(FloatRect(FloatPoint::zero(), canvas()->size()), CanvasDidDrawApplyClip);
+ didDraw(FloatRect(FloatPoint::zero(), canvas().size()), CanvasDidDrawApplyClip);
}
void CanvasRenderingContext2D::didDraw(const FloatRect& r, unsigned options)
@@ -1833,11 +1833,11 @@
#if ENABLE(ACCELERATED_2D_CANVAS)
// If we are drawing to hardware and we have a composited layer, just call contentChanged().
if (isAccelerated()) {
- RenderBox* renderBox = canvas()->renderBox();
+ RenderBox* renderBox = canvas().renderBox();
if (renderBox && renderBox->hasAcceleratedCompositing()) {
renderBox->contentChanged(CanvasPixelsChanged);
- canvas()->clearCopiedImage();
- canvas()->notifyObserversCanvasChanged(r);
+ canvas().clearCopiedImage();
+ canvas().notifyObserversCanvasChanged(r);
return;
}
}
@@ -1863,7 +1863,7 @@
// we'd have to keep the clip path around.
}
- canvas()->didDraw(dirtyRect);
+ canvas().didDraw(dirtyRect);
}
void CanvasRenderingContext2D::setTracksDisplayListReplay(bool tracksDisplayListReplay)
@@ -1902,8 +1902,8 @@
if (!m_recordingContext)
return;
- FloatRect clip(FloatPoint::zero(), canvas()->size());
- DisplayList::Replayer replayer(*canvas()->drawingContext(), m_recordingContext->displayList);
+ FloatRect clip(FloatPoint::zero(), canvas().size());
+ DisplayList::Replayer replayer(*canvas().drawingContext(), m_recordingContext->displayList);
if (UNLIKELY(m_tracksDisplayListReplay)) {
auto replayList = replayer.replay(clip, m_tracksDisplayListReplay);
@@ -1919,12 +1919,12 @@
{
if (UNLIKELY(m_usesDisplayListDrawing)) {
if (!m_recordingContext)
- m_recordingContext = std::make_unique<DisplayListDrawingContext>(FloatRect(FloatPoint::zero(), canvas()->size()));
+ m_recordingContext = std::make_unique<DisplayListDrawingContext>(FloatRect(FloatPoint::zero(), canvas().size()));
return &m_recordingContext->context;
}
- return canvas()->drawingContext();
+ return canvas().drawingContext();
}
static RefPtr<ImageData> createEmptyImageData(const IntSize& size)
@@ -1975,9 +1975,9 @@
ExceptionOr<RefPtr<ImageData>> CanvasRenderingContext2D::getImageData(ImageBuffer::CoordinateSystem coordinateSystem, float sx, float sy, float sw, float sh) const
{
- if (!canvas()->originClean()) {
+ if (!canvas().originClean()) {
static NeverDestroyed<String> consoleMessage(ASCIILiteral("Unable to get image data from canvas because the canvas has been tainted by cross-origin data."));
- canvas()->document().addConsoleMessage(MessageSource::Security, MessageLevel::Error, consoleMessage);
+ canvas().document().addConsoleMessage(MessageSource::Security, MessageLevel::Error, consoleMessage);
return Exception { SECURITY_ERR };
}
@@ -2002,7 +2002,7 @@
return nullptr;
IntRect imageDataRect = enclosingIntRect(logicalRect);
- ImageBuffer* buffer = canvas()->buffer();
+ ImageBuffer* buffer = canvas().buffer();
if (!buffer)
return createEmptyImageData(imageDataRect.size());
@@ -2014,7 +2014,7 @@
consoleMessage.appendLiteral(" x ");
consoleMessage.appendNumber(imageDataRect.height());
- canvas()->document().addConsoleMessage(MessageSource::Rendering, MessageLevel::Error, consoleMessage.toString());
+ canvas().document().addConsoleMessage(MessageSource::Rendering, MessageLevel::Error, consoleMessage.toString());
return Exception { INVALID_STATE_ERR };
}
@@ -2055,7 +2055,7 @@
{
GraphicsContext* context = drawingContext();
- if (!element.focused() || !state().hasInvertibleTransform || path.isEmpty() || !element.isDescendantOf(canvas()) || !context)
+ if (!element.focused() || !state().hasInvertibleTransform || path.isEmpty() || !element.isDescendantOf(&canvas()) || !context)
return;
context->drawFocusRing(path, 1, 1, RenderTheme::focusRingColor());
@@ -2063,7 +2063,7 @@
void CanvasRenderingContext2D::putImageData(ImageData& data, ImageBuffer::CoordinateSystem coordinateSystem, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight)
{
- ImageBuffer* buffer = canvas()->buffer();
+ ImageBuffer* buffer = canvas().buffer();
if (!buffer)
return;
@@ -2152,10 +2152,10 @@
// relative to the canvas.
auto newStyle = RenderStyle::createPtr();
- Document& document = canvas()->document();
+ Document& document = canvas().document();
document.updateStyleIfNeeded();
- if (auto* computedStyle = canvas()->computedStyle())
+ if (auto* computedStyle = canvas().computedStyle())
newStyle->setFontDescription(computedStyle->fontDescription());
else {
FontCascadeDescription defaultFontDescription;
@@ -2169,7 +2169,7 @@
newStyle->fontCascade().update(&document.fontSelector());
// Now map the font property longhands into the style.
- StyleResolver& styleResolver = canvas()->styleResolver();
+ StyleResolver& styleResolver = canvas().styleResolver();
styleResolver.applyPropertyToStyle(CSSPropertyFontFamily, parsedStyle->getPropertyCSSValue(CSSPropertyFontFamily).get(), WTFMove(newStyle));
styleResolver.applyPropertyToCurrentStyle(CSSPropertyFontStyle, parsedStyle->getPropertyCSSValue(CSSPropertyFontStyle).get());
styleResolver.applyPropertyToCurrentStyle(CSSPropertyFontVariantCaps, parsedStyle->getPropertyCSSValue(CSSPropertyFontVariantCaps).get());
@@ -2220,7 +2220,7 @@
inline TextDirection CanvasRenderingContext2D::toTextDirection(Direction direction, const RenderStyle** computedStyle) const
{
- auto* style = (computedStyle || direction == Direction::Inherit) ? canvas()->computedStyle() : nullptr;
+ auto* style = (computedStyle || direction == Direction::Inherit) ? canvas().computedStyle() : nullptr;
if (computedStyle)
*computedStyle = style;
switch (direction) {
@@ -2238,7 +2238,7 @@
String CanvasRenderingContext2D::direction() const
{
if (state().direction == Direction::Inherit)
- canvas()->document().updateStyleIfNeeded();
+ canvas().document().updateStyleIfNeeded();
return toTextDirection(state().direction) == RTL ? ASCIILiteral("rtl") : ASCIILiteral("ltr");
}
@@ -2508,7 +2508,7 @@
auto CanvasRenderingContext2D::fontProxy() -> const FontProxy&
{
- canvas()->document().updateStyleIfNeeded();
+ canvas().document().updateStyleIfNeeded();
if (!state().font.realized())
setFont(state().unparsedFont);
@@ -2518,7 +2518,7 @@
#if ENABLE(ACCELERATED_2D_CANVAS)
PlatformLayer* CanvasRenderingContext2D::platformLayer() const
{
- return canvas()->buffer() ? canvas()->buffer()->platformLayer() : 0;
+ return canvas().buffer() ? canvas().buffer()->platformLayer() : 0;
}
#endif
Modified: trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp (208205 => 208206)
--- trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp 2016-11-01 01:17:58 UTC (rev 208205)
+++ trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp 2016-11-01 01:36:00 UTC (rev 208206)
@@ -59,12 +59,12 @@
namespace WebCore {
-WebGL2RenderingContext::WebGL2RenderingContext(HTMLCanvasElement* passedCanvas, GraphicsContext3D::Attributes attributes)
+WebGL2RenderingContext::WebGL2RenderingContext(HTMLCanvasElement& passedCanvas, GraphicsContext3D::Attributes attributes)
: WebGLRenderingContextBase(passedCanvas, attributes)
{
}
-WebGL2RenderingContext::WebGL2RenderingContext(HTMLCanvasElement* passedCanvas, RefPtr<GraphicsContext3D>&& context, GraphicsContext3D::Attributes attributes)
+WebGL2RenderingContext::WebGL2RenderingContext(HTMLCanvasElement& passedCanvas, RefPtr<GraphicsContext3D>&& context, GraphicsContext3D::Attributes attributes)
: WebGLRenderingContextBase(passedCanvas, WTFMove(context), attributes)
{
initializeShaderExtensions();
Modified: trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.h (208205 => 208206)
--- trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.h 2016-11-01 01:17:58 UTC (rev 208205)
+++ trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.h 2016-11-01 01:36:00 UTC (rev 208206)
@@ -40,8 +40,8 @@
class WebGL2RenderingContext final : public WebGLRenderingContextBase {
public:
- WebGL2RenderingContext(HTMLCanvasElement*, GraphicsContext3D::Attributes);
- WebGL2RenderingContext(HTMLCanvasElement*, RefPtr<GraphicsContext3D>&&, GraphicsContext3D::Attributes);
+ WebGL2RenderingContext(HTMLCanvasElement&, GraphicsContext3D::Attributes);
+ WebGL2RenderingContext(HTMLCanvasElement&, RefPtr<GraphicsContext3D>&&, GraphicsContext3D::Attributes);
/* Buffer objects */
using WebGLRenderingContextBase::bufferData;
Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp (208205 => 208206)
--- trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp 2016-11-01 01:17:58 UTC (rev 208205)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp 2016-11-01 01:36:00 UTC (rev 208206)
@@ -64,12 +64,12 @@
namespace WebCore {
-WebGLRenderingContext::WebGLRenderingContext(HTMLCanvasElement* passedCanvas, GraphicsContext3D::Attributes attributes)
+WebGLRenderingContext::WebGLRenderingContext(HTMLCanvasElement& passedCanvas, GraphicsContext3D::Attributes attributes)
: WebGLRenderingContextBase(passedCanvas, attributes)
{
}
-WebGLRenderingContext::WebGLRenderingContext(HTMLCanvasElement* passedCanvas, PassRefPtr<GraphicsContext3D> context,
+WebGLRenderingContext::WebGLRenderingContext(HTMLCanvasElement& passedCanvas, PassRefPtr<GraphicsContext3D> context,
GraphicsContext3D::Attributes attributes) : WebGLRenderingContextBase(passedCanvas, context, attributes)
{
initializeVertexArrayObjects();
Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContext.h (208205 => 208206)
--- trunk/Source/WebCore/html/canvas/WebGLRenderingContext.h 2016-11-01 01:17:58 UTC (rev 208205)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContext.h 2016-11-01 01:36:00 UTC (rev 208206)
@@ -31,8 +31,8 @@
class WebGLRenderingContext final : public WebGLRenderingContextBase {
public:
- WebGLRenderingContext(HTMLCanvasElement*, GraphicsContext3D::Attributes);
- WebGLRenderingContext(HTMLCanvasElement*, PassRefPtr<GraphicsContext3D>, GraphicsContext3D::Attributes);
+ WebGLRenderingContext(HTMLCanvasElement&, GraphicsContext3D::Attributes);
+ WebGLRenderingContext(HTMLCanvasElement&, PassRefPtr<GraphicsContext3D>, GraphicsContext3D::Attributes);
private:
bool isWebGL1() const final { return true; }
Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp (208205 => 208206)
--- trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp 2016-11-01 01:17:58 UTC (rev 208205)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp 2016-11-01 01:36:00 UTC (rev 208206)
@@ -348,7 +348,7 @@
WebGLRenderingContextBase* m_context;
};
-std::unique_ptr<WebGLRenderingContextBase> WebGLRenderingContextBase::create(HTMLCanvasElement* canvas, WebGLContextAttributes* attrs, const String& type)
+std::unique_ptr<WebGLRenderingContextBase> WebGLRenderingContextBase::create(HTMLCanvasElement& canvas, WebGLContextAttributes* attrs, const String& type)
{
#if ENABLE(WEBGL2)
if (type == "webgl2" && !RuntimeEnabledFeatures::sharedFeatures().webGL2Enabled())
@@ -357,7 +357,7 @@
UNUSED_PARAM(type);
#endif
- Document& document = canvas->document();
+ Document& document = canvas.document();
Frame* frame = document.frame();
if (!frame)
return nullptr;
@@ -365,7 +365,7 @@
// The FrameLoaderClient might block creation of a new WebGL context despite the page settings; in
// particular, if WebGL contexts were lost one or more times via the GL_ARB_robustness extension.
if (!frame->loader().client().allowWebGL(frame->settings().webGLEnabled())) {
- canvas->dispatchEvent(WebGLContextEvent::create(eventNames().webglcontextcreationerrorEvent, false, true, "Web page was not allowed to create a WebGL context."));
+ canvas.dispatchEvent(WebGLContextEvent::create(eventNames().webglcontextcreationerrorEvent, false, true, "Web page was not allowed to create a WebGL context."));
return nullptr;
}
@@ -426,7 +426,7 @@
RefPtr<GraphicsContext3D> context(GraphicsContext3D::create(attributes, hostWindow));
if (!context || !context->makeContextCurrent()) {
- canvas->dispatchEvent(WebGLContextEvent::create(eventNames().webglcontextcreationerrorEvent, false, true, "Could not create a WebGL context."));
+ canvas.dispatchEvent(WebGLContextEvent::create(eventNames().webglcontextcreationerrorEvent, false, true, "Could not create a WebGL context."));
return nullptr;
}
@@ -446,9 +446,9 @@
return renderingContext;
}
-WebGLRenderingContextBase::WebGLRenderingContextBase(HTMLCanvasElement* passedCanvas, GraphicsContext3D::Attributes attributes)
+WebGLRenderingContextBase::WebGLRenderingContextBase(HTMLCanvasElement& passedCanvas, GraphicsContext3D::Attributes attributes)
: CanvasRenderingContext(passedCanvas)
- , ActiveDOMObject(&passedCanvas->document())
+ , ActiveDOMObject(&passedCanvas.document())
, m_context(nullptr)
, m_dispatchContextLostEventTimer(*this, &WebGLRenderingContextBase::dispatchContextLostEvent)
, m_restoreAllowed(false)
@@ -464,9 +464,9 @@
{
}
-WebGLRenderingContextBase::WebGLRenderingContextBase(HTMLCanvasElement* passedCanvas, RefPtr<GraphicsContext3D>&& context, GraphicsContext3D::Attributes attributes)
+WebGLRenderingContextBase::WebGLRenderingContextBase(HTMLCanvasElement& passedCanvas, RefPtr<GraphicsContext3D>&& context, GraphicsContext3D::Attributes attributes)
: CanvasRenderingContext(passedCanvas)
- , ActiveDOMObject(&passedCanvas->document())
+ , ActiveDOMObject(&passedCanvas.document())
, m_context(WTFMove(context))
, m_dispatchContextLostEventTimer(*this, &WebGLRenderingContextBase::dispatchContextLostEvent)
, m_restoreAllowed(false)
@@ -571,7 +571,7 @@
{
ASSERT(m_context);
- if (Page* page = canvas()->document().page())
+ if (Page* page = canvas().document().page())
m_synthesizedErrorsToConsole = page->settings().webGLErrorsToConsoleEnabled();
m_isGLES2Compliant = m_context->isGLES2Compliant();
@@ -640,15 +640,15 @@
m_context->markContextChanged();
m_layerCleared = false;
- RenderBox* renderBox = canvas()->renderBox();
+ RenderBox* renderBox = canvas().renderBox();
if (isAccelerated() && renderBox && renderBox->hasAcceleratedCompositing()) {
m_markedCanvasDirty = true;
- canvas()->clearCopiedImage();
+ canvas().clearCopiedImage();
renderBox->contentChanged(CanvasChanged);
} else {
if (!m_markedCanvasDirty) {
m_markedCanvasDirty = true;
- canvas()->didDraw(FloatRect(FloatPoint(0, 0), clampedCanvasSize()));
+ canvas().didDraw(FloatRect(FloatPoint(0, 0), clampedCanvasSize()));
}
}
}
@@ -730,26 +730,26 @@
if (isContextLostOrPending())
return;
- if (canvas()->document().printing())
- canvas()->clearPresentationCopy();
+ if (canvas().document().printing())
+ canvas().clearPresentationCopy();
// Until the canvas is written to by the application, the clear that
// happened after it was composited should be ignored by the compositor.
if (m_context->layerComposited() && !m_attributes.preserveDrawingBuffer) {
- m_context->paintCompositedResultsToCanvas(canvas()->buffer());
+ m_context->paintCompositedResultsToCanvas(canvas().buffer());
- canvas()->makePresentationCopy();
+ canvas().makePresentationCopy();
} else
- canvas()->clearPresentationCopy();
+ canvas().clearPresentationCopy();
clearIfComposited();
if (!m_markedCanvasDirty && !m_layerCleared)
return;
- canvas()->clearCopiedImage();
+ canvas().clearCopiedImage();
m_markedCanvasDirty = false;
- m_context->paintRenderingResultsToCanvas(canvas()->buffer());
+ m_context->paintRenderingResultsToCanvas(canvas().buffer());
}
RefPtr<ImageData> WebGLRenderingContextBase::paintRenderingResultsToImageData()
@@ -782,7 +782,7 @@
height = clamp(height, 1, maxHeight);
if (m_needsUpdate) {
- RenderBox* renderBox = canvas()->renderBox();
+ RenderBox* renderBox = canvas().renderBox();
if (renderBox && renderBox->hasAcceleratedCompositing())
renderBox->contentChanged(CanvasChanged);
m_needsUpdate = false;
@@ -2680,7 +2680,7 @@
{
if (m_isPendingPolicyResolution && !m_hasRequestedPolicyResolution) {
LOG(WebGL, "Context is being used. Attempt to resolve the policy.");
- Document& document = canvas()->document().topDocument();
+ Document& document = canvas().document().topDocument();
Page* page = document.page();
if (page && !document.url().isLocalFile())
page->mainFrame().loader().client().resolveWebGLPolicyForURL(document.url());
@@ -2825,7 +2825,7 @@
return;
// Due to WebGL's same-origin restrictions, it is not possible to
// taint the origin using the WebGL API.
- ASSERT(canvas()->originClean());
+ ASSERT(canvas().originClean());
// Validate input parameters.
switch (format) {
case GraphicsContext3D::ALPHA:
@@ -3810,7 +3810,7 @@
if (mode == RealLostContext) {
// Inform the embedder that a lost context was received. In response, the embedder might
// decide to take action such as asking the user for permission to use WebGL again.
- if (Frame* frame = canvas()->document().frame())
+ if (Frame* frame = canvas().document().frame())
frame->loader().client().didLoseWebGLContext(m_context->getExtensions()->getGraphicsResetStatusARB());
}
@@ -4434,9 +4434,7 @@
void WebGLRenderingContextBase::printWarningToConsole(const String& message)
{
- if (!canvas())
- return;
- canvas()->document().addConsoleMessage(MessageSource::Rendering, MessageLevel::Warning, message);
+ canvas().document().addConsoleMessage(MessageSource::Rendering, MessageLevel::Warning, message);
}
bool WebGLRenderingContextBase::validateBlendFuncFactors(const char* functionName, GC3Denum src, GC3Denum dst)
@@ -4780,7 +4778,7 @@
void WebGLRenderingContextBase::dispatchContextLostEvent()
{
Ref<WebGLContextEvent> event = WebGLContextEvent::create(eventNames().webglcontextlostEvent, false, true, emptyString());
- canvas()->dispatchEvent(event);
+ canvas().dispatchEvent(event);
m_restoreAllowed = event->defaultPrevented();
if (m_contextLostMode == RealLostContext && m_restoreAllowed)
m_restoreTimer.startOneShot(0);
@@ -4828,7 +4826,7 @@
break;
}
- Frame* frame = canvas()->document().frame();
+ Frame* frame = canvas().document().frame();
if (!frame)
return;
@@ -4860,7 +4858,7 @@
setupFlags();
initializeNewContext();
initializeVertexArrayObjects();
- canvas()->dispatchEvent(WebGLContextEvent::create(eventNames().webglcontextrestoredEvent, false, true, emptyString()));
+ canvas().dispatchEvent(WebGLContextEvent::create(eventNames().webglcontextrestoredEvent, false, true, emptyString()));
}
String WebGLRenderingContextBase::ensureNotNull(const String& text) const
@@ -4973,8 +4971,8 @@
IntSize WebGLRenderingContextBase::clampedCanvasSize()
{
- return IntSize(clamp(canvas()->width(), 1, m_maxViewportDims[0]),
- clamp(canvas()->height(), 1, m_maxViewportDims[1]));
+ return IntSize(clamp(canvas().width(), 1, m_maxViewportDims[0]),
+ clamp(canvas().height(), 1, m_maxViewportDims[1]));
}
GC3Dint WebGLRenderingContextBase::getMaxDrawBuffers()
Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h (208205 => 208206)
--- trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h 2016-11-01 01:17:58 UTC (rev 208205)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h 2016-11-01 01:36:00 UTC (rev 208206)
@@ -108,7 +108,7 @@
class WebGLRenderingContextBase : public CanvasRenderingContext, public ActiveDOMObject {
public:
- static std::unique_ptr<WebGLRenderingContextBase> create(HTMLCanvasElement*, WebGLContextAttributes*, const String&);
+ static std::unique_ptr<WebGLRenderingContextBase> create(HTMLCanvasElement&, WebGLContextAttributes*, const String&);
virtual ~WebGLRenderingContextBase();
#if PLATFORM(WIN)
@@ -334,8 +334,8 @@
void vertexAttribDivisor(GC3Duint index, GC3Duint divisor);
protected:
- WebGLRenderingContextBase(HTMLCanvasElement*, GraphicsContext3D::Attributes);
- WebGLRenderingContextBase(HTMLCanvasElement*, RefPtr<GraphicsContext3D>&&, GraphicsContext3D::Attributes);
+ WebGLRenderingContextBase(HTMLCanvasElement&, GraphicsContext3D::Attributes);
+ WebGLRenderingContextBase(HTMLCanvasElement&, RefPtr<GraphicsContext3D>&&, GraphicsContext3D::Attributes);
friend class WebGLDrawBuffers;
friend class WebGLFramebuffer;