Embedding arbitrary web content is problematic when it comes to keyboard shortcuts because:
- Web content can steal app shortcuts (see e.g. brave/browser-laptop#4407)
- Blocked web content (e.g. a focused `<webview>` performing expensive computation) will also prevent app shortcuts from firing immediately

To fix this, we need a way to _always_ handle certain shortcuts in the main process. I think the most flexible solution would be something like this:

``` js
app.addProtectedShortcut('CmdOrCtrl+Tab', (event) => {
  event.preventDefault();
});
```

We could then implement:

``` cpp
bool CommonWebContentsDelegate::PreHandleKeyboardEvent(
    content::WebContents* source,
    const content::NativeWebKeyboardEvent& event,
    bool* is_keyboard_shortcut) {
  return /* event is protected shortcut and the handler called preventDefault */;
}
```

@zcbenz Thoughts? I'm happy to work on this if we come up with a reasonable approach.

atom/browser/api/atom_api_web_contents.cc
params.should_clear_history_list = true;
  params.override_user_agent = content::NavigationController::UA_OVERRIDE_TRUE;
  web_contents()->GetController().LoadURLWithParams(params);
  
  
  
  const auto view = web_contents()->GetRenderWidgetHostView();
  WebContentsPreferences* web_preferences =
      WebContentsPreferences::FromWebContents(web_contents());
  std::string color_name;
  if (web_preferences->web_preferences()->GetString(options::kBackgroundColor,
                                                    &color_name)) {
    view->SetBackgroundColor(ParseHexColor(color_name));
  } else {
    view->SetBackgroundColor(SK_ColorTRANSPARENT);
  }
  
  const auto host = static_cast<content::RenderWidgetHostImpl*>(
      view->GetRenderWidgetHost());
  host->disable_hidden_ = !background_throttling_;
}
void WebContents::DownloadURL(const GURL& url) {
  auto browser_context = web_contents()->GetBrowserContext();
  auto download_manager =
    content::BrowserContext::GetDownloadManager(browser_context);
  download_manager->DownloadUrl(
      content::DownloadUrlParameters::CreateForWebContentsMainFrame(
          web_contents(), url));
}
GURL WebContents::GetURL() const {