<!--
Thanks for opening an issue! A few things to keep in mind:

- The issue tracker is only for bugs and feature requests.
- Before reporting a bug, please try reproducing your issue against
  the latest version of Electron.
- If you need general advice, join our Slack: http://atom-slack.herokuapp.com
-->

# Description

* Electron version: 1.8.4
* Operating system: Windows 10

Calling `webContents.sendInputEvent` with type as `"char"` to a document containing a webview is rendered offscreen and an input panel is focused

<!-- What do you think should happen? -->

# Expected result

Keyboard input should be placed into the input panel

<!-- What actually happens? -->

# Actual result

Electron crashes

<!-- 

Your best chance of getting this bug looked at quickly is to provide a REPOSITORY that can be cloned and run.

You can fork https://github.com/electron/electron-quick-start and include a link to the branch with your changes.

If you provide a URL, please list the commands required to clone/setup/run your repo e.g.

  $ git clone $YOUR_URL -b $BRANCH
  $ npm install
  $ npm start || electron .

-->

# Repro steps

[I have a repo set up that will demonstrate the issue.](https://github.com/ImOnALampshade/electron-webview-char-crash) Clone that to see. Read the readme in that for more information.

```bash
git clone https://github.com/ImOnALampshade/electron-webview-char-crash.git
npm install
npm start
```
atom/browser/ui/autofill_popup.cc
DCHECK(parent_);
  gfx::Point origin(element_bounds_.origin());
  views::View::ConvertPointToScreen(parent_, &origin);
  gfx::Rect bounds(origin, element_bounds_.size());
  int desired_width = GetDesiredPopupWidth();
  int desired_height = GetDesiredPopupHeight();
  bool is_rtl = false;
  gfx::Point top_left_corner_of_popup =
      origin + gfx::Vector2d(bounds.width() - desired_width, -desired_height);
  
  
  
  gfx::Point bottom_right_corner_of_popup =
      origin + gfx::Vector2d(desired_width, bounds.height() + desired_height);
  display::Display top_left_display =
      GetDisplayNearestPoint(top_left_corner_of_popup);
  display::Display bottom_right_display =
      GetDisplayNearestPoint(bottom_right_corner_of_popup);
  std::pair<int, int> popup_x_and_width = CalculatePopupXAndWidth(
      top_left_display, bottom_right_display, desired_width, bounds, is_rtl);
  std::pair<int, int> popup_y_and_height = CalculatePopupYAndHeight(
      top_left_display, bottom_right_display, desired_height, bounds);
  popup_bounds_ =
      gfx::Rect(popup_x_and_width.first, popup_y_and_height.first,
                popup_x_and_width.second, popup_y_and_height.second);
  popup_bounds_in_view_ =
      gfx::Rect(popup_bounds_in_view_.origin(),
                gfx::Size(popup_x_and_width.second, popup_y_and_height.second));
}
void AutofillPopup::OnViewBoundsChanged(views::View* view) {