⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 243611 in webkit


Ignore:
Timestamp:
Mar 28, 2019, 11:08:03 AM (7 years ago)
Author:
Devin Rousso
Message:

Web Inspector: Canvas: unbinding a canvas should always remove the agent as an observer
https://bugs.webkit.org/show_bug.cgi?id=196324
<rdar://problem/49357109>

Reviewed by Matt Baker.

No change in functionality.

  • html/CanvasBase.cpp:

(WebCore::CanvasBase::notifyObserversCanvasChanged):
(WebCore::CanvasBase::notifyObserversCanvasResized):
(WebCore::CanvasBase::notifyObserversCanvasDestroyed):

  • inspector/agents/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::bindCanvas):
(WebCore::InspectorCanvasAgent::unbindCanvas):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r243610 r243611  
     12019-03-28  Devin Rousso  <drousso@apple.com>
     2
     3        Web Inspector: Canvas: unbinding a canvas should always remove the agent as an observer
     4        https://bugs.webkit.org/show_bug.cgi?id=196324
     5        <rdar://problem/49357109>
     6
     7        Reviewed by Matt Baker.
     8
     9        No change in functionality.
     10
     11        * html/CanvasBase.cpp:
     12        (WebCore::CanvasBase::notifyObserversCanvasChanged):
     13        (WebCore::CanvasBase::notifyObserversCanvasResized):
     14        (WebCore::CanvasBase::notifyObserversCanvasDestroyed):
     15
     16        * inspector/agents/InspectorCanvasAgent.cpp:
     17        (WebCore::InspectorCanvasAgent::frameNavigated):
     18        (WebCore::InspectorCanvasAgent::bindCanvas):
     19        (WebCore::InspectorCanvasAgent::unbindCanvas):
     20
    1212019-03-28  Alicia Boya García  <aboya@igalia.com>
    222
  • trunk/Source/WebCore/html/CanvasBase.cpp

    r237777 r243611  
    3232#include "FloatRect.h"
    3333#include "InspectorInstrumentation.h"
     34#include <wtf/Vector.h>
    3435
    3536namespace WebCore {
     
    7071void CanvasBase::notifyObserversCanvasChanged(const FloatRect& rect)
    7172{
    72     for (auto& observer : m_observers)
     73    for (auto& observer : copyToVector(m_observers))
    7374        observer->canvasChanged(*this, rect);
    7475}
     
    7677void CanvasBase::notifyObserversCanvasResized()
    7778{
    78     for (auto& observer : m_observers)
     79    for (auto& observer : copyToVector(m_observers))
    7980        observer->canvasResized(*this);
    8081}
     
    8485    ASSERT(!m_didNotifyObserversCanvasDestroyed);
    8586
    86     for (auto& observer : m_observers)
     87    for (auto& observer : copyToVector(m_observers))
    8788        observer->canvasDestroyed(*this);
    8889
  • trunk/Source/WebCore/inspector/agents/InspectorCanvasAgent.cpp

    r243400 r243611  
    379379
    380380    for (auto* inspectorCanvas : inspectorCanvases) {
    381         inspectorCanvas->context().canvasBase().removeObserver(*this);
    382 
    383381        String identifier = unbindCanvas(*inspectorCanvas);
    384382        m_frontendDispatcher->canvasRemoved(identifier);
     
    648646InspectorCanvas& InspectorCanvasAgent::bindCanvas(CanvasRenderingContext& context, bool captureBacktrace)
    649647{
    650     context.canvasBase().addObserver(*this);
    651 
    652648    auto inspectorCanvas = InspectorCanvas::create(context);
    653649    m_identifierToInspectorCanvas.set(inspectorCanvas->identifier(), inspectorCanvas.copyRef());
     650
     651    inspectorCanvas->context().canvasBase().addObserver(*this);
    654652
    655653    m_frontendDispatcher->canvasAdded(inspectorCanvas->buildObjectForCanvas(captureBacktrace));
     
    683681#endif
    684682
     683    inspectorCanvas.context().canvasBase().removeObserver(*this);
     684
    685685    String identifier = inspectorCanvas.identifier();
    686686    m_identifierToInspectorCanvas.remove(identifier);
Note: See TracChangeset for help on using the changeset viewer.