Commit a8b164c7 authored by c.shu@samsung.com's avatar c.shu@samsung.com

Convert raw pointer to PassOwnPtrfor EventFactoryBase.

This should avoid memory leaks when the program exits gracefully.

Review URL: https://codereview.chromium.org/324813002

git-svn-id: svn://svn.chromium.org/blink/trunk@175887 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 1d74eca7
...@@ -74,7 +74,7 @@ void CoreInitializer::registerEventFactory() ...@@ -74,7 +74,7 @@ void CoreInitializer::registerEventFactory()
return; return;
isRegistered = true; isRegistered = true;
Document::registerEventFactory(new EventFactory()); Document::registerEventFactory(EventFactory::create());
} }
void CoreInitializer::init() void CoreInitializer::init()
......
...@@ -3915,9 +3915,9 @@ Document::EventFactorySet& Document::eventFactories() ...@@ -3915,9 +3915,9 @@ Document::EventFactorySet& Document::eventFactories()
return s_eventFactory; return s_eventFactory;
} }
void Document::registerEventFactory(EventFactoryBase* eventFactory) void Document::registerEventFactory(PassOwnPtr<EventFactoryBase> eventFactory)
{ {
ASSERT(!eventFactories().contains(eventFactory)); ASSERT(!eventFactories().contains(eventFactory.get()));
eventFactories().add(eventFactory); eventFactories().add(eventFactory);
} }
......
...@@ -691,7 +691,7 @@ public: ...@@ -691,7 +691,7 @@ public:
void setWindowAttributeEventListener(const AtomicString& eventType, PassRefPtr<EventListener>); void setWindowAttributeEventListener(const AtomicString& eventType, PassRefPtr<EventListener>);
EventListener* getWindowAttributeEventListener(const AtomicString& eventType); EventListener* getWindowAttributeEventListener(const AtomicString& eventType);
static void registerEventFactory(EventFactoryBase*); static void registerEventFactory(PassOwnPtr<EventFactoryBase>);
static PassRefPtrWillBeRawPtr<Event> createEvent(const String& eventType, ExceptionState&); static PassRefPtrWillBeRawPtr<Event> createEvent(const String& eventType, ExceptionState&);
// keep track of what types of event listeners are registered, so we don't // keep track of what types of event listeners are registered, so we don't
...@@ -1187,7 +1187,7 @@ private: ...@@ -1187,7 +1187,7 @@ private:
void setHoverNode(PassRefPtrWillBeRawPtr<Node>); void setHoverNode(PassRefPtrWillBeRawPtr<Node>);
Node* hoverNode() const { return m_hoverNode.get(); } Node* hoverNode() const { return m_hoverNode.get(); }
typedef HashSet<EventFactoryBase*> EventFactorySet; typedef HashSet<OwnPtr<EventFactoryBase> > EventFactorySet;
static EventFactorySet& eventFactories(); static EventFactorySet& eventFactories();
DocumentLifecycle m_lifecycle; DocumentLifecycle m_lifecycle;
......
...@@ -37,10 +37,19 @@ class Event; ...@@ -37,10 +37,19 @@ class Event;
class EventFactoryBase { class EventFactoryBase {
public: public:
virtual PassRefPtrWillBeRawPtr<Event> create(const String& eventType) = 0; virtual PassRefPtrWillBeRawPtr<Event> create(const String& eventType) = 0;
virtual ~EventFactoryBase() { }
protected:
EventFactoryBase() { }
}; };
class EventFactory : public EventFactoryBase { class EventFactory FINAL : public EventFactoryBase {
public: public:
static PassOwnPtr<EventFactory> create()
{
return adoptPtr(new EventFactory());
}
virtual PassRefPtrWillBeRawPtr<Event> create(const String& eventType) OVERRIDE; virtual PassRefPtrWillBeRawPtr<Event> create(const String& eventType) OVERRIDE;
}; };
......
...@@ -14,8 +14,13 @@ namespace WebCore { ...@@ -14,8 +14,13 @@ namespace WebCore {
class Event; class Event;
class EventModulesFactory : public EventFactoryBase { class EventModulesFactory FINAL : public EventFactoryBase {
public: public:
static PassOwnPtr<EventModulesFactory> create()
{
return adoptPtr(new EventModulesFactory());
}
virtual PassRefPtrWillBeRawPtr<Event> create(const String& eventType) OVERRIDE; virtual PassRefPtrWillBeRawPtr<Event> create(const String& eventType) OVERRIDE;
}; };
......
...@@ -28,7 +28,7 @@ void ModulesInitializer::initEventTargetNames() ...@@ -28,7 +28,7 @@ void ModulesInitializer::initEventTargetNames()
void ModulesInitializer::registerEventFactory() void ModulesInitializer::registerEventFactory()
{ {
CoreInitializer::registerEventFactory(); CoreInitializer::registerEventFactory();
Document::registerEventFactory(new EventModulesFactory()); Document::registerEventFactory(EventModulesFactory::create());
} }
} // namespace WebCore } // namespace WebCore
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment