Title: [208206] trunk/Source/WebCore
Revision
208206
Author
mmaxfi...@apple.com
Date
2016-10-31 18:36:00 -0700 (Mon, 31 Oct 2016)

Log Message

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:

Modified Paths

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;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to