#ifndef ColorInputType_h
#define ColorInputType_h
#if ENABLE(INPUT_TYPE_COLOR)
#include "BaseClickableWithKeyInputType.h"
#include "ColorChooserClient.h"
namespace WebCore {
class ColorInputType final : public BaseClickableWithKeyInputType, public ColorChooserClient {
public:
explicit ColorInputType(HTMLInputElement& element) : BaseClickableWithKeyInputType(element) { }
virtual ~ColorInputType();
virtual void didChooseColor(const Color&) override;
virtual void didEndChooser() override;
virtual IntRect elementRectRelativeToRootView() const override;
virtual Color currentColor() override;
virtual bool shouldShowSuggestions() const override;
virtual Vector<Color> suggestions() const override;
private:
virtual bool isColorControl() const override;
virtual const AtomicString& formControlType() const override;
virtual bool supportsRequired() const override;
virtual String fallbackValue() const override;
virtual String sanitizeValue(const String&) const override;
virtual void createShadowSubtree() override;
virtual void setValue(const String&, bool valueChanged, TextFieldEventBehavior) override;
virtual void handleDOMActivateEvent(Event*) override;
virtual void detach() override;
virtual bool shouldRespectListAttribute() override;
virtual bool typeMismatchFor(const String&) const override;
virtual bool shouldResetOnDocumentActivation() override;
Color valueAsColor() const;
void endColorChooser();
void updateColorSwatch();
HTMLElement* shadowColorSwatch() const;
std::unique_ptr<ColorChooser> m_chooser;
};
}
#endif // ENABLE(INPUT_TYPE_COLOR)
#endif // ColorInputType_h