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