- Revision
- 104279
- Author
- aba...@webkit.org
- Date
- 2012-01-06 02:28:24 -0800 (Fri, 06 Jan 2012)
Log Message
FrameDestructionObserver should be more full-service
https://bugs.webkit.org/show_bug.cgi?id=75690
Reviewed by Eric Seidel.
This patch moves code common to both subclasses of
FrameDestructionObserver into FrameDestructionObserver itself. As we
add more subclasses, we don't want to keep copy/pasting this code.
* page/Frame.cpp:
(WebCore::FrameDestructionObserver::FrameDestructionObserver):
(WebCore::FrameDestructionObserver::~FrameDestructionObserver):
(WebCore::FrameDestructionObserver::frameDestroyed):
* page/Frame.h:
(WebCore::FrameDestructionObserver::frame):
* plugins/DOMMimeType.cpp:
(WebCore::DOMMimeType::DOMMimeType):
(WebCore::DOMMimeType::~DOMMimeType):
* plugins/DOMMimeType.h:
* plugins/DOMPlugin.cpp:
(WebCore::DOMPlugin::DOMPlugin):
(WebCore::DOMPlugin::~DOMPlugin):
* plugins/DOMPlugin.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (104278 => 104279)
--- trunk/Source/WebCore/ChangeLog 2012-01-06 09:43:44 UTC (rev 104278)
+++ trunk/Source/WebCore/ChangeLog 2012-01-06 10:28:24 UTC (rev 104279)
@@ -1,3 +1,29 @@
+2012-01-06 Adam Barth <aba...@webkit.org>
+
+ FrameDestructionObserver should be more full-service
+ https://bugs.webkit.org/show_bug.cgi?id=75690
+
+ Reviewed by Eric Seidel.
+
+ This patch moves code common to both subclasses of
+ FrameDestructionObserver into FrameDestructionObserver itself. As we
+ add more subclasses, we don't want to keep copy/pasting this code.
+
+ * page/Frame.cpp:
+ (WebCore::FrameDestructionObserver::FrameDestructionObserver):
+ (WebCore::FrameDestructionObserver::~FrameDestructionObserver):
+ (WebCore::FrameDestructionObserver::frameDestroyed):
+ * page/Frame.h:
+ (WebCore::FrameDestructionObserver::frame):
+ * plugins/DOMMimeType.cpp:
+ (WebCore::DOMMimeType::DOMMimeType):
+ (WebCore::DOMMimeType::~DOMMimeType):
+ * plugins/DOMMimeType.h:
+ * plugins/DOMPlugin.cpp:
+ (WebCore::DOMPlugin::DOMPlugin):
+ (WebCore::DOMPlugin::~DOMPlugin):
+ * plugins/DOMPlugin.h:
+
2012-01-06 Dale Curtis <dalecur...@chromium.org>
Move MediaDocument styles into CSS. Set black background for chromium.
Modified: trunk/Source/WebCore/page/Frame.cpp (104278 => 104279)
--- trunk/Source/WebCore/page/Frame.cpp 2012-01-06 09:43:44 UTC (rev 104278)
+++ trunk/Source/WebCore/page/Frame.cpp 2012-01-06 10:28:24 UTC (rev 104279)
@@ -235,6 +235,24 @@
}
}
+FrameDestructionObserver::FrameDestructionObserver(Frame* frame)
+ : m_frame(frame)
+{
+ if (m_frame)
+ m_frame->addDestructionObserver(this);
+}
+
+FrameDestructionObserver::~FrameDestructionObserver()
+{
+ if (m_frame)
+ m_frame->removeDestructionObserver(this);
+}
+
+void FrameDestructionObserver::frameDestroyed()
+{
+ m_frame = 0;
+}
+
void Frame::addDestructionObserver(FrameDestructionObserver* observer)
{
m_destructionObservers.add(observer);
Modified: trunk/Source/WebCore/page/Frame.h (104278 => 104279)
--- trunk/Source/WebCore/page/Frame.h 2012-01-06 09:43:44 UTC (rev 104278)
+++ trunk/Source/WebCore/page/Frame.h 2012-01-06 10:28:24 UTC (rev 104279)
@@ -63,6 +63,7 @@
namespace WebCore {
class Document;
+ class Frame;
class FrameView;
class HTMLTableCellElement;
class RegularExpression;
@@ -75,9 +76,14 @@
class FrameDestructionObserver {
public:
- virtual ~FrameDestructionObserver() { }
+ explicit FrameDestructionObserver(Frame*);
+ virtual void frameDestroyed();
+ Frame* frame() const { return m_frame; }
- virtual void frameDestroyed() = 0;
+ protected:
+ virtual ~FrameDestructionObserver();
+
+ Frame* m_frame;
};
class Frame : public RefCounted<Frame>, public TiledBackingStoreClient {
Modified: trunk/Source/WebCore/plugins/DOMMimeType.cpp (104278 => 104279)
--- trunk/Source/WebCore/plugins/DOMMimeType.cpp 2012-01-06 09:43:44 UTC (rev 104278)
+++ trunk/Source/WebCore/plugins/DOMMimeType.cpp 2012-01-06 10:28:24 UTC (rev 104279)
@@ -30,18 +30,14 @@
namespace WebCore {
DOMMimeType::DOMMimeType(PassRefPtr<PluginData> pluginData, Frame* frame, unsigned index)
- : m_pluginData(pluginData)
- , m_frame(frame)
+ : FrameDestructionObserver(frame)
+ , m_pluginData(pluginData)
, m_index(index)
{
- if (m_frame)
- m_frame->addDestructionObserver(this);
}
DOMMimeType::~DOMMimeType()
{
- if (m_frame)
- m_frame->removeDestructionObserver(this);
}
const String &DOMMimeType::type() const
Modified: trunk/Source/WebCore/plugins/DOMMimeType.h (104278 => 104279)
--- trunk/Source/WebCore/plugins/DOMMimeType.h 2012-01-06 09:43:44 UTC (rev 104278)
+++ trunk/Source/WebCore/plugins/DOMMimeType.h 2012-01-06 10:28:24 UTC (rev 104279)
@@ -32,7 +32,7 @@
class DOMPlugin;
-class DOMMimeType : public RefCounted<DOMMimeType>, private FrameDestructionObserver {
+class DOMMimeType : public RefCounted<DOMMimeType>, public FrameDestructionObserver {
public:
static PassRefPtr<DOMMimeType> create(PassRefPtr<PluginData> pluginData, Frame* frame, unsigned index) { return adoptRef(new DOMMimeType(pluginData, frame, index)); }
~DOMMimeType();
@@ -42,15 +42,11 @@
const String &description() const;
PassRefPtr<DOMPlugin> enabledPlugin() const;
- // FrameDestructionObserver
- virtual void frameDestroyed() { m_frame = 0; }
-
private:
const MimeClassInfo& mimeClassInfo() const { return m_pluginData->mimes()[m_index]; }
-
+
DOMMimeType(PassRefPtr<PluginData>, Frame*, unsigned index);
RefPtr<PluginData> m_pluginData;
- Frame* m_frame;
unsigned m_index;
};
Modified: trunk/Source/WebCore/plugins/DOMPlugin.cpp (104278 => 104279)
--- trunk/Source/WebCore/plugins/DOMPlugin.cpp 2012-01-06 09:43:44 UTC (rev 104278)
+++ trunk/Source/WebCore/plugins/DOMPlugin.cpp 2012-01-06 10:28:24 UTC (rev 104279)
@@ -26,18 +26,14 @@
namespace WebCore {
DOMPlugin::DOMPlugin(PluginData* pluginData, Frame* frame, unsigned index)
- : m_pluginData(pluginData)
- , m_frame(frame)
+ : FrameDestructionObserver(frame)
+ , m_pluginData(pluginData)
, m_index(index)
{
- if (m_frame)
- m_frame->addDestructionObserver(this);
}
DOMPlugin::~DOMPlugin()
{
- if (m_frame)
- m_frame->removeDestructionObserver(this);
}
String DOMPlugin::name() const
Modified: trunk/Source/WebCore/plugins/DOMPlugin.h (104278 => 104279)
--- trunk/Source/WebCore/plugins/DOMPlugin.h 2012-01-06 09:43:44 UTC (rev 104278)
+++ trunk/Source/WebCore/plugins/DOMPlugin.h 2012-01-06 10:28:24 UTC (rev 104279)
@@ -30,7 +30,7 @@
class Plugin;
class PluginData;
-class DOMPlugin : public RefCounted<DOMPlugin>, private FrameDestructionObserver {
+class DOMPlugin : public RefCounted<DOMPlugin>, public FrameDestructionObserver {
public:
static PassRefPtr<DOMPlugin> create(PluginData* pluginData, Frame* frame, unsigned index) { return adoptRef(new DOMPlugin(pluginData, frame, index)); }
~DOMPlugin();
@@ -45,15 +45,11 @@
bool canGetItemsForName(const AtomicString& propertyName);
PassRefPtr<DOMMimeType> namedItem(const AtomicString& propertyName);
- // FrameDestructionObserver
- virtual void frameDestroyed() { m_frame = 0; }
-
private:
const PluginInfo& pluginInfo() const { return m_pluginData->plugins()[m_index]; }
DOMPlugin(PluginData*, Frame*, unsigned index);
RefPtr<PluginData> m_pluginData;
- Frame* m_frame;
unsigned m_index;
};