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()
return;
isRegistered = true;
Document::registerEventFactory(new EventFactory());
Document::registerEventFactory(EventFactory::create());
}
void CoreInitializer::init()
......
......@@ -3915,9 +3915,9 @@ Document::EventFactorySet& Document::eventFactories()
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);
}
......
......@@ -691,7 +691,7 @@ public:
void setWindowAttributeEventListener(const AtomicString& eventType, PassRefPtr<EventListener>);
EventListener* getWindowAttributeEventListener(const AtomicString& eventType);
static void registerEventFactory(EventFactoryBase*);
static void registerEventFactory(PassOwnPtr<EventFactoryBase>);
static PassRefPtrWillBeRawPtr<Event> createEvent(const String& eventType, ExceptionState&);
// keep track of what types of event listeners are registered, so we don't
......@@ -1187,7 +1187,7 @@ private:
void setHoverNode(PassRefPtrWillBeRawPtr<Node>);
Node* hoverNode() const { return m_hoverNode.get(); }
typedef HashSet<EventFactoryBase*> EventFactorySet;
typedef HashSet<OwnPtr<EventFactoryBase> > EventFactorySet;
static EventFactorySet& eventFactories();
DocumentLifecycle m_lifecycle;
......
......@@ -37,10 +37,19 @@ class Event;
class EventFactoryBase {
public:
virtual PassRefPtrWillBeRawPtr<Event> create(const String& eventType) = 0;
virtual ~EventFactoryBase() { }
protected:
EventFactoryBase() { }
};
class EventFactory : public EventFactoryBase {
class EventFactory FINAL : public EventFactoryBase {
public:
static PassOwnPtr<EventFactory> create()
{
return adoptPtr(new EventFactory());
}
virtual PassRefPtrWillBeRawPtr<Event> create(const String& eventType) OVERRIDE;
};
......
......@@ -14,8 +14,13 @@ namespace WebCore {
class Event;
class EventModulesFactory : public EventFactoryBase {
class EventModulesFactory FINAL : public EventFactoryBase {
public:
static PassOwnPtr<EventModulesFactory> create()
{
return adoptPtr(new EventModulesFactory());
}
virtual PassRefPtrWillBeRawPtr<Event> create(const String& eventType) OVERRIDE;
};
......
......@@ -28,7 +28,7 @@ void ModulesInitializer::initEventTargetNames()
void ModulesInitializer::registerEventFactory()
{
CoreInitializer::registerEventFactory();
Document::registerEventFactory(new EventModulesFactory());
Document::registerEventFactory(EventModulesFactory::create());
}
} // 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