Commit 4396d8b1 authored by keishi@chromium.org's avatar keishi@chromium.org

Oilpan: Prepare moving DateTimeChooser to Oilpan

BUG=

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

git-svn-id: svn://svn.chromium.org/blink/trunk@176293 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent bf34b82e
...@@ -39,7 +39,6 @@ namespace WebCore { ...@@ -39,7 +39,6 @@ namespace WebCore {
BaseChooserOnlyDateAndTimeInputType::~BaseChooserOnlyDateAndTimeInputType() BaseChooserOnlyDateAndTimeInputType::~BaseChooserOnlyDateAndTimeInputType()
{ {
closeDateTimeChooser();
} }
void BaseChooserOnlyDateAndTimeInputType::handleDOMActivateEvent(Event*) void BaseChooserOnlyDateAndTimeInputType::handleDOMActivateEvent(Event*)
...@@ -142,5 +141,12 @@ void BaseChooserOnlyDateAndTimeInputType::accessKeyAction(bool sendMouseEvents) ...@@ -142,5 +141,12 @@ void BaseChooserOnlyDateAndTimeInputType::accessKeyAction(bool sendMouseEvents)
BaseClickableWithKeyInputType::accessKeyAction(element(), sendMouseEvents); BaseClickableWithKeyInputType::accessKeyAction(element(), sendMouseEvents);
} }
void BaseChooserOnlyDateAndTimeInputType::trace(Visitor* visitor)
{
visitor->trace(m_dateTimeChooser);
BaseDateAndTimeInputType::trace(visitor);
DateTimeChooserClient::trace(visitor);
}
} }
#endif #endif
...@@ -35,10 +35,13 @@ ...@@ -35,10 +35,13 @@
namespace WebCore { namespace WebCore {
class BaseChooserOnlyDateAndTimeInputType : public BaseDateAndTimeInputType, public DateTimeChooserClient { class BaseChooserOnlyDateAndTimeInputType : public BaseDateAndTimeInputType, public DateTimeChooserClient {
WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(BaseChooserOnlyDateAndTimeInputType);
protected: protected:
BaseChooserOnlyDateAndTimeInputType(HTMLInputElement& element) : BaseDateAndTimeInputType(element) { } explicit BaseChooserOnlyDateAndTimeInputType(HTMLInputElement& element) : BaseDateAndTimeInputType(element) { }
virtual ~BaseChooserOnlyDateAndTimeInputType(); virtual ~BaseChooserOnlyDateAndTimeInputType();
virtual void trace(Visitor*) OVERRIDE;
private: private:
void closeDateTimeChooser(); void closeDateTimeChooser();
...@@ -58,7 +61,7 @@ private: ...@@ -58,7 +61,7 @@ private:
virtual void didChooseValue(double) OVERRIDE; virtual void didChooseValue(double) OVERRIDE;
virtual void didEndChooser() OVERRIDE; virtual void didEndChooser() OVERRIDE;
RefPtr<DateTimeChooser> m_dateTimeChooser; RefPtrWillBeMember<DateTimeChooser> m_dateTimeChooser;
}; };
} }
......
...@@ -62,8 +62,6 @@ PassRefPtrWillBeRawPtr<PickerIndicatorElement> PickerIndicatorElement::create(Do ...@@ -62,8 +62,6 @@ PassRefPtrWillBeRawPtr<PickerIndicatorElement> PickerIndicatorElement::create(Do
PickerIndicatorElement::~PickerIndicatorElement() PickerIndicatorElement::~PickerIndicatorElement()
{ {
closePopup();
ASSERT(!m_chooser);
} }
RenderObject* PickerIndicatorElement::createRenderer(RenderStyle*) RenderObject* PickerIndicatorElement::createRenderer(RenderStyle*)
...@@ -154,7 +152,9 @@ bool PickerIndicatorElement::isPickerIndicatorElement() const ...@@ -154,7 +152,9 @@ bool PickerIndicatorElement::isPickerIndicatorElement() const
void PickerIndicatorElement::trace(Visitor* visitor) void PickerIndicatorElement::trace(Visitor* visitor)
{ {
visitor->trace(m_pickerIndicatorOwner); visitor->trace(m_pickerIndicatorOwner);
visitor->trace(m_chooser);
HTMLDivElement::trace(visitor); HTMLDivElement::trace(visitor);
DateTimeChooserClient::trace(visitor);
} }
} }
......
...@@ -42,6 +42,7 @@ class HTMLInputElement; ...@@ -42,6 +42,7 @@ class HTMLInputElement;
class PagePopup; class PagePopup;
class PickerIndicatorElement FINAL : public HTMLDivElement, public DateTimeChooserClient { class PickerIndicatorElement FINAL : public HTMLDivElement, public DateTimeChooserClient {
WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(PickerIndicatorElement);
public: public:
// PickerIndicatorOwner implementer must call removePickerIndicatorOwner when // PickerIndicatorOwner implementer must call removePickerIndicatorOwner when
// it doesn't handle event, e.g. at destruction. // it doesn't handle event, e.g. at destruction.
...@@ -79,7 +80,7 @@ private: ...@@ -79,7 +80,7 @@ private:
HTMLInputElement* hostInput(); HTMLInputElement* hostInput();
RawPtrWillBeMember<PickerIndicatorOwner> m_pickerIndicatorOwner; RawPtrWillBeMember<PickerIndicatorOwner> m_pickerIndicatorOwner;
RefPtr<DateTimeChooser> m_chooser; RefPtrWillBeMember<DateTimeChooser> m_chooser;
bool m_isInOpenPopup; bool m_isInOpenPopup;
}; };
......
...@@ -86,9 +86,9 @@ PassOwnPtr<ColorChooser> EmptyChromeClient::createColorChooser(LocalFrame*, Colo ...@@ -86,9 +86,9 @@ PassOwnPtr<ColorChooser> EmptyChromeClient::createColorChooser(LocalFrame*, Colo
return nullptr; return nullptr;
} }
PassRefPtr<DateTimeChooser> EmptyChromeClient::openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&) PassRefPtrWillBeRawPtr<DateTimeChooser> EmptyChromeClient::openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&)
{ {
return PassRefPtr<DateTimeChooser>(); return nullptr;
} }
void EmptyChromeClient::openTextDataListChooser(HTMLInputElement&) void EmptyChromeClient::openTextDataListChooser(HTMLInputElement&)
......
...@@ -144,7 +144,7 @@ public: ...@@ -144,7 +144,7 @@ public:
virtual void enumerateChosenDirectory(FileChooser*) OVERRIDE { } virtual void enumerateChosenDirectory(FileChooser*) OVERRIDE { }
virtual PassOwnPtr<ColorChooser> createColorChooser(LocalFrame*, ColorChooserClient*, const Color&) OVERRIDE; virtual PassOwnPtr<ColorChooser> createColorChooser(LocalFrame*, ColorChooserClient*, const Color&) OVERRIDE;
virtual PassRefPtr<DateTimeChooser> openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&) OVERRIDE; virtual PassRefPtrWillBeRawPtr<DateTimeChooser> openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&) OVERRIDE;
virtual void openTextDataListChooser(HTMLInputElement&) OVERRIDE; virtual void openTextDataListChooser(HTMLInputElement&) OVERRIDE;
virtual void runOpenPanel(LocalFrame*, PassRefPtr<FileChooser>) OVERRIDE; virtual void runOpenPanel(LocalFrame*, PassRefPtr<FileChooser>) OVERRIDE;
......
...@@ -341,7 +341,7 @@ PassOwnPtr<ColorChooser> Chrome::createColorChooser(LocalFrame* frame, ColorChoo ...@@ -341,7 +341,7 @@ PassOwnPtr<ColorChooser> Chrome::createColorChooser(LocalFrame* frame, ColorChoo
return m_client->createColorChooser(frame, client, initialColor); return m_client->createColorChooser(frame, client, initialColor);
} }
PassRefPtr<DateTimeChooser> Chrome::openDateTimeChooser(DateTimeChooserClient* client, const DateTimeChooserParameters& parameters) PassRefPtrWillBeRawPtr<DateTimeChooser> Chrome::openDateTimeChooser(DateTimeChooserClient* client, const DateTimeChooserParameters& parameters)
{ {
notifyPopupOpeningObservers(); notifyPopupOpeningObservers();
return m_client->openDateTimeChooser(client, parameters); return m_client->openDateTimeChooser(client, parameters);
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include "core/page/FocusType.h" #include "core/page/FocusType.h"
#include "platform/Cursor.h" #include "platform/Cursor.h"
#include "platform/HostWindow.h" #include "platform/HostWindow.h"
#include "platform/heap/Handle.h"
#include "wtf/Forward.h" #include "wtf/Forward.h"
namespace WebCore { namespace WebCore {
...@@ -117,7 +118,7 @@ public: ...@@ -117,7 +118,7 @@ public:
void print(LocalFrame*); void print(LocalFrame*);
PassOwnPtr<ColorChooser> createColorChooser(LocalFrame*, ColorChooserClient*, const Color& initialColor); PassOwnPtr<ColorChooser> createColorChooser(LocalFrame*, ColorChooserClient*, const Color& initialColor);
PassRefPtr<DateTimeChooser> openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&); PassRefPtrWillBeRawPtr<DateTimeChooser> openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&);
void openTextDataListChooser(HTMLInputElement&); void openTextDataListChooser(HTMLInputElement&);
void runOpenPanel(LocalFrame*, PassRefPtr<FileChooser>); void runOpenPanel(LocalFrame*, PassRefPtr<FileChooser>);
......
...@@ -175,7 +175,7 @@ public: ...@@ -175,7 +175,7 @@ public:
// returns true, if ENABLE(INPUT_MULTIPLE_FIELDS_UI) // returns true, if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
// - <datalist> UI for date/time input types regardless of // - <datalist> UI for date/time input types regardless of
// ENABLE(INPUT_MULTIPLE_FIELDS_UI) // ENABLE(INPUT_MULTIPLE_FIELDS_UI)
virtual PassRefPtr<DateTimeChooser> openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&) = 0; virtual PassRefPtrWillBeRawPtr<DateTimeChooser> openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&) = 0;
virtual void openTextDataListChooser(HTMLInputElement&) = 0; virtual void openTextDataListChooser(HTMLInputElement&) = 0;
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include "platform/PlatformExport.h" #include "platform/PlatformExport.h"
#include "platform/geometry/IntRect.h" #include "platform/geometry/IntRect.h"
#include "platform/heap/Handle.h"
#include "wtf/RefCounted.h" #include "wtf/RefCounted.h"
#include "wtf/text/WTFString.h" #include "wtf/text/WTFString.h"
...@@ -63,12 +64,12 @@ struct DateTimeChooserParameters { ...@@ -63,12 +64,12 @@ struct DateTimeChooserParameters {
bool isAnchorElementRTL; bool isAnchorElementRTL;
}; };
// For pickers like color pickers and date pickers. class PLATFORM_EXPORT DateTimeChooser : public RefCountedWillBeGarbageCollectedFinalized<DateTimeChooser> {
class PLATFORM_EXPORT DateTimeChooser : public RefCounted<DateTimeChooser> {
public: public:
virtual ~DateTimeChooser(); virtual ~DateTimeChooser();
virtual void endChooser() = 0; virtual void endChooser() = 0;
virtual void trace(Visitor*) { }
}; };
} // namespace WebCore } // namespace WebCore
......
...@@ -33,8 +33,6 @@ ...@@ -33,8 +33,6 @@
namespace WebCore { namespace WebCore {
DateTimeChooserClient::~DateTimeChooserClient() DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(DateTimeChooserClient)
{
}
} // namespace WebCore } // namespace WebCore
...@@ -32,20 +32,22 @@ ...@@ -32,20 +32,22 @@
#define DateTimeChooserClient_h #define DateTimeChooserClient_h
#include "platform/PlatformExport.h" #include "platform/PlatformExport.h"
#include "platform/heap/Handle.h"
#include "wtf/text/WTFString.h" #include "wtf/text/WTFString.h"
namespace WebCore { namespace WebCore {
class PLATFORM_EXPORT DateTimeChooserClient { class PLATFORM_EXPORT DateTimeChooserClient : public WillBeGarbageCollectedMixin {
DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(DateTimeChooserClient);
public: public:
virtual ~DateTimeChooserClient();
// Called when user picked a value. // Called when user picked a value.
virtual void didChooseValue(const String&) = 0; virtual void didChooseValue(const String&) = 0;
// Called when user picked a value. // Called when user picked a value.
virtual void didChooseValue(double) = 0; virtual void didChooseValue(double) = 0;
// Called when chooser has ended. // Called when chooser has ended.
virtual void didEndChooser() = 0; virtual void didEndChooser() = 0;
virtual void trace(Visitor*) { }
}; };
} // namespace WebCore } // namespace WebCore
......
...@@ -892,6 +892,10 @@ public: ...@@ -892,6 +892,10 @@ public:
~DummyBase() { } ~DummyBase() { }
}; };
// Export this instance to support WillBeGarbageCollectedMixin
// uses by code residing in non-webcore components.
template class PLATFORM_EXPORT DummyBase<void>;
#define PassRefPtrWillBeRawPtr WTF::PassRefPtr #define PassRefPtrWillBeRawPtr WTF::PassRefPtr
#define RefCountedWillBeGarbageCollected WTF::RefCounted #define RefCountedWillBeGarbageCollected WTF::RefCounted
#define RefCountedWillBeGarbageCollectedFinalized WTF::RefCounted #define RefCountedWillBeGarbageCollectedFinalized WTF::RefCounted
......
...@@ -604,7 +604,7 @@ PassOwnPtr<ColorChooser> ChromeClientImpl::createColorChooser(LocalFrame* frame, ...@@ -604,7 +604,7 @@ PassOwnPtr<ColorChooser> ChromeClientImpl::createColorChooser(LocalFrame* frame,
return controller.release(); return controller.release();
} }
PassRefPtr<DateTimeChooser> ChromeClientImpl::openDateTimeChooser(DateTimeChooserClient* pickerClient, const DateTimeChooserParameters& parameters) PassRefPtrWillBeRawPtr<DateTimeChooser> ChromeClientImpl::openDateTimeChooser(DateTimeChooserClient* pickerClient, const DateTimeChooserParameters& parameters)
{ {
#if ENABLE(INPUT_MULTIPLE_FIELDS_UI) #if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
return DateTimeChooserImpl::create(this, pickerClient, parameters); return DateTimeChooserImpl::create(this, pickerClient, parameters);
......
...@@ -134,7 +134,7 @@ public: ...@@ -134,7 +134,7 @@ public:
virtual void annotatedRegionsChanged() OVERRIDE; virtual void annotatedRegionsChanged() OVERRIDE;
virtual bool paintCustomOverhangArea(WebCore::GraphicsContext*, const WebCore::IntRect&, const WebCore::IntRect&, const WebCore::IntRect&) OVERRIDE; virtual bool paintCustomOverhangArea(WebCore::GraphicsContext*, const WebCore::IntRect&, const WebCore::IntRect&, const WebCore::IntRect&) OVERRIDE;
virtual PassOwnPtr<WebCore::ColorChooser> createColorChooser(WebCore::LocalFrame*, WebCore::ColorChooserClient*, const WebCore::Color&) OVERRIDE; virtual PassOwnPtr<WebCore::ColorChooser> createColorChooser(WebCore::LocalFrame*, WebCore::ColorChooserClient*, const WebCore::Color&) OVERRIDE;
virtual PassRefPtr<WebCore::DateTimeChooser> openDateTimeChooser(WebCore::DateTimeChooserClient*, const WebCore::DateTimeChooserParameters&) OVERRIDE; virtual PassRefPtrWillBeRawPtr<WebCore::DateTimeChooser> openDateTimeChooser(WebCore::DateTimeChooserClient*, const WebCore::DateTimeChooserParameters&) OVERRIDE;
virtual void openTextDataListChooser(WebCore::HTMLInputElement&) OVERRIDE; virtual void openTextDataListChooser(WebCore::HTMLInputElement&) OVERRIDE;
virtual void runOpenPanel(WebCore::LocalFrame*, PassRefPtr<WebCore::FileChooser>) OVERRIDE; virtual void runOpenPanel(WebCore::LocalFrame*, PassRefPtr<WebCore::FileChooser>) OVERRIDE;
virtual void enumerateChosenDirectory(WebCore::FileChooser*) OVERRIDE; virtual void enumerateChosenDirectory(WebCore::FileChooser*) OVERRIDE;
......
...@@ -60,9 +60,9 @@ DateTimeChooserImpl::DateTimeChooserImpl(ChromeClientImpl* chromeClient, WebCore ...@@ -60,9 +60,9 @@ DateTimeChooserImpl::DateTimeChooserImpl(ChromeClientImpl* chromeClient, WebCore
m_popup = m_chromeClient->openPagePopup(this, m_parameters.anchorRectInRootView); m_popup = m_chromeClient->openPagePopup(this, m_parameters.anchorRectInRootView);
} }
PassRefPtr<DateTimeChooserImpl> DateTimeChooserImpl::create(ChromeClientImpl* chromeClient, WebCore::DateTimeChooserClient* client, const WebCore::DateTimeChooserParameters& parameters) PassRefPtrWillBeRawPtr<DateTimeChooserImpl> DateTimeChooserImpl::create(ChromeClientImpl* chromeClient, WebCore::DateTimeChooserClient* client, const WebCore::DateTimeChooserParameters& parameters)
{ {
return adoptRef(new DateTimeChooserImpl(chromeClient, client, parameters)); return adoptRefWillBeNoop(new DateTimeChooserImpl(chromeClient, client, parameters));
} }
DateTimeChooserImpl::~DateTimeChooserImpl() DateTimeChooserImpl::~DateTimeChooserImpl()
...@@ -174,7 +174,7 @@ WebCore::Locale& DateTimeChooserImpl::locale() ...@@ -174,7 +174,7 @@ WebCore::Locale& DateTimeChooserImpl::locale()
void DateTimeChooserImpl::setValueAndClosePopup(int numValue, const String& stringValue) void DateTimeChooserImpl::setValueAndClosePopup(int numValue, const String& stringValue)
{ {
RefPtr<DateTimeChooserImpl> protector(this); RefPtrWillBeRawPtr<DateTimeChooserImpl> protector(this);
if (numValue >= 0) if (numValue >= 0)
setValue(stringValue); setValue(stringValue);
endChooser(); endChooser();
...@@ -197,6 +197,12 @@ void DateTimeChooserImpl::didClosePopup() ...@@ -197,6 +197,12 @@ void DateTimeChooserImpl::didClosePopup()
m_client->didEndChooser(); m_client->didEndChooser();
} }
void DateTimeChooserImpl::trace(Visitor* visitor)
{
visitor->trace(m_client);
DateTimeChooser::trace(visitor);
}
} // namespace blink } // namespace blink
#endif // ENABLE(INPUT_MULTIPLE_FIELDS_UI) #endif // ENABLE(INPUT_MULTIPLE_FIELDS_UI)
...@@ -46,8 +46,9 @@ class ChromeClientImpl; ...@@ -46,8 +46,9 @@ class ChromeClientImpl;
class DateTimeChooserImpl FINAL : public WebCore::DateTimeChooser, public WebCore::PagePopupClient { class DateTimeChooserImpl FINAL : public WebCore::DateTimeChooser, public WebCore::PagePopupClient {
public: public:
static PassRefPtr<DateTimeChooserImpl> create(ChromeClientImpl*, WebCore::DateTimeChooserClient*, const WebCore::DateTimeChooserParameters&); static PassRefPtrWillBeRawPtr<DateTimeChooserImpl> create(ChromeClientImpl*, WebCore::DateTimeChooserClient*, const WebCore::DateTimeChooserParameters&);
virtual ~DateTimeChooserImpl(); virtual ~DateTimeChooserImpl();
virtual void trace(WebCore::Visitor*) OVERRIDE;
// DateTimeChooser functions: // DateTimeChooser functions:
virtual void endChooser() OVERRIDE; virtual void endChooser() OVERRIDE;
...@@ -64,7 +65,7 @@ private: ...@@ -64,7 +65,7 @@ private:
virtual void didClosePopup() OVERRIDE; virtual void didClosePopup() OVERRIDE;
ChromeClientImpl* m_chromeClient; ChromeClientImpl* m_chromeClient;
WebCore::DateTimeChooserClient* m_client; RawPtrWillBeMember<WebCore::DateTimeChooserClient> m_client;
WebCore::PagePopup* m_popup; WebCore::PagePopup* m_popup;
WebCore::DateTimeChooserParameters m_parameters; WebCore::DateTimeChooserParameters m_parameters;
OwnPtr<WebCore::Locale> m_locale; OwnPtr<WebCore::Locale> m_locale;
......
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