Title: [243611] trunk/Source/WebCore
- Revision
- 243611
- Author
- [email protected]
- Date
- 2019-03-28 11:08:03 -0700 (Thu, 28 Mar 2019)
Log 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):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (243610 => 243611)
--- trunk/Source/WebCore/ChangeLog 2019-03-28 18:05:13 UTC (rev 243610)
+++ trunk/Source/WebCore/ChangeLog 2019-03-28 18:08:03 UTC (rev 243611)
@@ -1,3 +1,23 @@
+2019-03-28 Devin Rousso <[email protected]>
+
+ 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):
+
2019-03-28 Alicia Boya GarcĂa <[email protected]>
[MSE][GStreamer] Remove dead code in MediaPlayerPrivateGStreamer::doSeek()
Modified: trunk/Source/WebCore/html/CanvasBase.cpp (243610 => 243611)
--- trunk/Source/WebCore/html/CanvasBase.cpp 2019-03-28 18:05:13 UTC (rev 243610)
+++ trunk/Source/WebCore/html/CanvasBase.cpp 2019-03-28 18:08:03 UTC (rev 243611)
@@ -31,6 +31,7 @@
#include "Element.h"
#include "FloatRect.h"
#include "InspectorInstrumentation.h"
+#include <wtf/Vector.h>
namespace WebCore {
@@ -69,13 +70,13 @@
void CanvasBase::notifyObserversCanvasChanged(const FloatRect& rect)
{
- for (auto& observer : m_observers)
+ for (auto& observer : copyToVector(m_observers))
observer->canvasChanged(*this, rect);
}
void CanvasBase::notifyObserversCanvasResized()
{
- for (auto& observer : m_observers)
+ for (auto& observer : copyToVector(m_observers))
observer->canvasResized(*this);
}
@@ -83,7 +84,7 @@
{
ASSERT(!m_didNotifyObserversCanvasDestroyed);
- for (auto& observer : m_observers)
+ for (auto& observer : copyToVector(m_observers))
observer->canvasDestroyed(*this);
m_observers.clear();
Modified: trunk/Source/WebCore/inspector/agents/InspectorCanvasAgent.cpp (243610 => 243611)
--- trunk/Source/WebCore/inspector/agents/InspectorCanvasAgent.cpp 2019-03-28 18:05:13 UTC (rev 243610)
+++ trunk/Source/WebCore/inspector/agents/InspectorCanvasAgent.cpp 2019-03-28 18:08:03 UTC (rev 243611)
@@ -378,8 +378,6 @@
}
for (auto* inspectorCanvas : inspectorCanvases) {
- inspectorCanvas->context().canvasBase().removeObserver(*this);
-
String identifier = unbindCanvas(*inspectorCanvas);
m_frontendDispatcher->canvasRemoved(identifier);
}
@@ -647,11 +645,11 @@
InspectorCanvas& InspectorCanvasAgent::bindCanvas(CanvasRenderingContext& context, bool captureBacktrace)
{
- context.canvasBase().addObserver(*this);
-
auto inspectorCanvas = InspectorCanvas::create(context);
m_identifierToInspectorCanvas.set(inspectorCanvas->identifier(), inspectorCanvas.copyRef());
+ inspectorCanvas->context().canvasBase().addObserver(*this);
+
m_frontendDispatcher->canvasAdded(inspectorCanvas->buildObjectForCanvas(captureBacktrace));
#if ENABLE(WEBGL)
@@ -682,6 +680,8 @@
unbindProgram(*inspectorProgram);
#endif
+ inspectorCanvas.context().canvasBase().removeObserver(*this);
+
String identifier = inspectorCanvas.identifier();
m_identifierToInspectorCanvas.remove(identifier);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes