Would it be possible to add methods and/or events to expose the visibility state of Menu instances? For example methods like `Menu#isVisible()` and `Menu#isHidden()` and events like "show" and "hide".
shell/browser/ui/win/notify_icon.cc
NOTIFYICONDATA icon_data;
  InitIconData(&icon_data);
  icon_data.uFlags |= NIF_TIP;
  wcsncpy_s(icon_data.szTip, base::UTF8ToUTF16(tool_tip).c_str(), _TRUNCATE);
  BOOL result = Shell_NotifyIcon(NIM_MODIFY, &icon_data);
  if (!result)
    LOG(WARNING) << "Unable to set tooltip for status tray icon";
}
void NotifyIcon::DisplayBalloon(const BalloonOptions& options) {
  NOTIFYICONDATA icon_data;
  InitIconData(&icon_data);
  icon_data.uFlags |= NIF_INFO;
  wcsncpy_s(icon_data.szInfoTitle, options.title.c_str(), _TRUNCATE);
  wcsncpy_s(icon_data.szInfo, options.content.c_str(), _TRUNCATE);
  icon_data.uTimeout = 0;
  icon_data.hBalloonIcon = options.icon;
  icon_data.dwInfoFlags = ConvertIconType(options.icon_type);
  if (options.large_icon)
    icon_data.dwInfoFlags |= NIIF_LARGE_ICON;
  if (options.no_sound)
    icon_data.dwInfoFlags |= NIIF_NOSOUND;
  if (options.respect_quiet_time)
    icon_data.dwInfoFlags |= NIIF_RESPECT_QUIET_TIME;
  BOOL result = Shell_NotifyIcon(NIM_MODIFY, &icon_data);
  if (!result)
    LOG(WARNING) << "Unable to create status tray balloon.";
}
void NotifyIcon::RemoveBalloon() {