RenderSearchField.h [plain text]
#pragma once
#include "PopupMenuClient.h"
#include "RenderTextControlSingleLine.h"
#include "SearchPopupMenu.h"
namespace WebCore {
class HTMLInputElement;
class RenderSearchField final : public RenderTextControlSingleLine, private PopupMenuClient {
WTF_MAKE_ISO_ALLOCATED(RenderSearchField);
public:
RenderSearchField(HTMLInputElement&, RenderStyle&&);
virtual ~RenderSearchField();
void updateCancelButtonVisibility() const;
void addSearchResult();
void stopSearchEventTimer();
bool popupIsVisible() const { return m_searchPopupIsVisible; }
void showPopup();
void hidePopup();
private:
bool isSearchField() const final { return true; }
void willBeDestroyed() override;
LayoutUnit computeControlLogicalHeight(LayoutUnit lineHeight, LayoutUnit nonContentHeight) const override;
void updateFromElement() override;
Visibility visibilityForCancelButton() const;
const AtomicString& autosaveName() const;
void valueChanged(unsigned listIndex, bool fireEvents = true) override;
void selectionChanged(unsigned, bool) override { }
void selectionCleared() override { }
String itemText(unsigned listIndex) const override;
String itemLabel(unsigned listIndex) const override;
String itemIcon(unsigned listIndex) const override;
String itemToolTip(unsigned) const override { return String(); }
String itemAccessibilityText(unsigned) const override { return String(); }
bool itemIsEnabled(unsigned listIndex) const override;
PopupMenuStyle itemStyle(unsigned listIndex) const override;
PopupMenuStyle menuStyle() const override;
int clientInsetLeft() const override;
int clientInsetRight() const override;
LayoutUnit clientPaddingLeft() const override;
LayoutUnit clientPaddingRight() const override;
int listSize() const override;
int selectedIndex() const override;
void popupDidHide() override;
bool itemIsSeparator(unsigned listIndex) const override;
bool itemIsLabel(unsigned listIndex) const override;
bool itemIsSelected(unsigned listIndex) const override;
bool shouldPopOver() const override { return false; }
bool valueShouldChangeOnHotTrack() const override { return false; }
void setTextFromItem(unsigned listIndex) override;
FontSelector* fontSelector() const override;
HostWindow* hostWindow() const override;
Ref<Scrollbar> createScrollbar(ScrollableArea&, ScrollbarOrientation, ScrollbarControlSize) override;
HTMLElement* resultsButtonElement() const;
HTMLElement* cancelButtonElement() const;
bool m_searchPopupIsVisible;
RefPtr<SearchPopupMenu> m_searchPopup;
Vector<RecentSearch> m_recentSearches;
};
}
SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSearchField, isSearchField())