Title: [104279] trunk/Source/WebCore
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;
 };
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to