* **Electron Version:**
  * 5.0.0 beta 5
* **Operating System:**
  * Windows 10
* **Last Known Working Electron version:**:
  * ?

### Expected Behavior
`tray.popUpContextMenu()` should do nothing (and no harm) if the context menu is already showing.

### Actual Behavior
App crashes.

### To Reproduce
Example that calls popUpContextMenu twice:

main.js:

    const {app, Menu, Tray, nativeImage} = require('electron')

    function main () {
      tray = new Tray(nativeImage.createEmpty())
      tray.setContextMenu(Menu.buildFromTemplate([{ label: "Test" }]));
      setTimeout(() => tray.popUpContextMenu(), 3000)  
      tray.popUpContextMenu()
    }
atom/browser/ui/win/notify_icon.cc
AtomMenuModel* menu_model) {
  
  if (menu_model == nullptr && menu_model_ == nullptr)
    return;
  
  
  if (!SetForegroundWindow(window_))
    return;
  
  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;
  widget_->Init(params);
  widget_->Show();
  widget_->Activate();
  menu_runner_.reset(new views::MenuRunner(
      menu_model != nullptr ? menu_model : menu_model_,