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
AtomMenuModel* menu_model) {
  
  if (menu_model == nullptr && menu_model_ == nullptr)
    return;
  
  
  if (!SetForegroundWindow(window_))
    return;
  
  if (menu_runner_ && menu_runner_->IsRunning())
    menu_runner_->Cancel();
  
  gfx::Rect rect(pos, gfx::Size());
  if (pos.IsOrigin())
    rect.set_origin(display::Screen::GetScreen()->GetCursorScreenPoint());
  
  
  widget_.reset(new views::Widget());
  views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP);
  params.ownership =
      views::Widget::InitParams::Ownership::WIDGET_OWNS_NATIVE_WIDGET;
  params.bounds = gfx::Rect(0, 0, 0, 0);
  params.force_software_compositing = true;
  params.z_order = ui::ZOrderLevel::kFloatingUIElement;
  widget_->Init(std::move(params));
  widget_->Show();
  widget_->Activate();
  menu_runner_.reset(new views::MenuRunner(
      menu_model != nullptr ? menu_model : menu_model_,
      views::MenuRunner::CONTEXT_MENU | views::MenuRunner::HAS_MNEMONICS,