* **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
views::MenuRunner::CONTEXT_MENU | views::MenuRunner::HAS_MNEMONICS,
      base::Bind(&NotifyIcon::OnContextMenuClosed,
                 weak_factory_.GetWeakPtr())));
  menu_runner_->RunMenuAt(widget_.get(), NULL, rect, views::MENU_ANCHOR_TOPLEFT,
                          ui::MENU_SOURCE_MOUSE);
}
void NotifyIcon::SetContextMenu(AtomMenuModel* menu_model) {
  menu_model_ = menu_model;
}
gfx::Rect NotifyIcon::GetBounds() {
  NOTIFYICONIDENTIFIER icon_id;
  memset(&icon_id, 0, sizeof(NOTIFYICONIDENTIFIER));
  icon_id.uID = icon_id_;
  icon_id.hWnd = window_;
  icon_id.cbSize = sizeof(NOTIFYICONIDENTIFIER);
  RECT rect = {0};
  Shell_NotifyIconGetRect(&icon_id, &rect);
  return display::win::ScreenWin::ScreenToDIPRect(window_, gfx::Rect(rect));
}
void NotifyIcon::InitIconData(NOTIFYICONDATA* icon_data) {
  memset(icon_data, 0, sizeof(NOTIFYICONDATA));
  icon_data->cbSize = sizeof(NOTIFYICONDATA);
  icon_data->hWnd = window_;
  icon_data->uID = icon_id_;
}
void NotifyIcon::OnContextMenuClosed() {
  widget_->Close();
}
}