#include "third_party/blink/renderer/core/html/forms/external_popup_menu.h"
#include "base/numerics/safe_conversions.h"
#include "build/build_config.h"
#include "third_party/blink/public/common/input/web_coalesced_input_event.h"
#include "third_party/blink/public/common/input/web_mouse_event.h"
#include "third_party/blink/public/platform/browser_interface_broker_proxy.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/platform/task_type.h"
#include "third_party/blink/renderer/core/dom/node_computed_style.h"
#include "third_party/blink/renderer/core/events/current_input_event.h"
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
#include "third_party/blink/renderer/core/exported/web_view_impl.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/frame/local_frame_view.h"
#include "third_party/blink/renderer/core/frame/web_frame_widget_impl.h"
#include "third_party/blink/renderer/core/frame/web_local_frame_impl.h"
#include "third_party/blink/renderer/core/html/forms/html_opt_group_element.h"
#include "third_party/blink/renderer/core/html/forms/html_option_element.h"
#include "third_party/blink/renderer/core/html/forms/html_select_element.h"
#include "third_party/blink/renderer/core/html/html_hr_element.h"
#include "third_party/blink/renderer/core/layout/layout_box.h"
#include "third_party/blink/renderer/core/page/chrome_client.h"
#include "third_party/blink/renderer/core/page/page.h"
#include "third_party/blink/renderer/core/style/computed_style.h"
#include "third_party/blink/renderer/platform/text/text_direction.h"
#include "ui/gfx/geometry/point.h"
#include "ui/gfx/geometry/quad_f.h"
namespace blink {
namespace {
float GetDprForSizeAdjustment(const Element& owner_element) { … }
}
ExternalPopupMenu::ExternalPopupMenu(LocalFrame& frame,
HTMLSelectElement& owner_element)
: … { … }
ExternalPopupMenu::~ExternalPopupMenu() = default;
void ExternalPopupMenu::Trace(Visitor* visitor) const { … }
void ExternalPopupMenu::Reset() { … }
bool ExternalPopupMenu::ShowInternal() { … }
void ExternalPopupMenu::Show(PopupMenu::ShowEventType) { … }
void ExternalPopupMenu::DispatchEvent(TimerBase*) { … }
void ExternalPopupMenu::Hide() { … }
void ExternalPopupMenu::UpdateFromElement(UpdateReason reason) { … }
void ExternalPopupMenu::Update() { … }
void ExternalPopupMenu::DisconnectClient() { … }
void ExternalPopupMenu::DidAcceptIndices(const Vector<int32_t>& indices) { … }
void ExternalPopupMenu::DidCancel() { … }
void ExternalPopupMenu::GetPopupMenuInfo(
HTMLSelectElement& owner_element,
int32_t* item_height,
double* font_size,
int32_t* selected_item,
Vector<mojom::blink::MenuItemPtr>* menu_items,
bool* right_aligned,
bool* allow_multiple_selection) { … }
int ExternalPopupMenu::ToPopupMenuItemIndex(int external_popup_menu_item_index,
HTMLSelectElement& owner_element) { … }
int ExternalPopupMenu::ToExternalPopupMenuItemIndex(
int popup_menu_item_index,
HTMLSelectElement& owner_element) { … }
}