2010-12-13 Justin Schuh <jschuh@chromium.org>
Reviewed by Dimitri Glazkov.
HTMLCanvasElement should handle multiple observers.
https://bugs.webkit.org/show_bug.cgi?id=50899
Test: fast/canvas/canvas-bg-multiple-removal.html
* css/CSSCanvasValue.cpp:
(WebCore::CSSCanvasValue::~CSSCanvasValue):
(WebCore::CSSCanvasValue::canvasDestroyed):
(WebCore::CSSCanvasValue::element):
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::HTMLCanvasElement):
(WebCore::HTMLCanvasElement::~HTMLCanvasElement):
(WebCore::HTMLCanvasElement::addObserver):
(WebCore::HTMLCanvasElement::removeObserver):
(WebCore::HTMLCanvasElement::didDraw):
(WebCore::HTMLCanvasElement::reset):
* html/HTMLCanvasElement.h:
2010-12-13 Justin Schuh <jschuh@chromium.org>
Reviewed by Dimitri Glazkov.
HTMLCanvasElement should handle multiple observers.
https://bugs.webkit.org/show_bug.cgi?id=50899
* fast/canvas/canvas-bg-multiple-removal-expected.txt: Added.
* fast/canvas/canvas-bg-multiple-removal.html: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@73927 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/css/CSSCanvasValue.cpp b/WebCore/css/CSSCanvasValue.cpp
index 767c11e..e9e83c5 100644
--- a/WebCore/css/CSSCanvasValue.cpp
+++ b/WebCore/css/CSSCanvasValue.cpp
@@ -34,7 +34,7 @@
CSSCanvasValue::~CSSCanvasValue()
{
if (m_element)
- m_element->setObserver(0);
+ m_element->removeObserver(this);
}
String CSSCanvasValue::cssText() const
@@ -62,8 +62,7 @@
void CSSCanvasValue::canvasDestroyed(HTMLCanvasElement* element)
{
ASSERT(element == m_element);
- if (element == m_element)
- m_element = 0;
+ m_element = 0;
}
IntSize CSSCanvasValue::fixedSize(const RenderObject* renderer)
@@ -79,7 +78,7 @@
m_element = document->getCSSCanvasElement(m_name);
if (!m_element)
return 0;
- m_element->setObserver(this);
+ m_element->addObserver(this);
}
return m_element;
}