- Electron version: 1.2.2
- Operating system: Linux

This is a problem only in linux. It works in OSX.

``` javascript
win.hide()
win.capturePage(function(img){
 // never called
})
```

shell/browser/api/electron_api_web_contents.cc
PrintViewManagerBasic class does not do null check.
  if (!ontents()) {
    if (print_callback)
      std::move(print_callback).Run(false, "failed");
    return;
  }
  base::string16 printer_name =
      device_name.empty() ? default_printer : device_name;
   If there are no valid printers available on the network, we bail.
  if (printer_name.empty() || !IsDeviceNameValid(printer_name)) {
    if (print_callback)
      std::move(print_callback).Run(false, "no valid printers available");
    return;
  }
  print_settings.SetStringKey(printing::kSettingDeviceName, printer_name);
  auto* print_view_manager =
      printing::PrintViewManagerBasic::FromWebContents(ontents());
  auto* focused_frame = ontents()->GetFocusedFrame();
  auto* rfh = focused_frame && focused_frame->HasSelection()
                  ? focused_frame
                  : ontents()->GetMainFrame();
  print_view_manager->PrintNow(rfh, silent, std::move(print_settings),
                               std::move(print_callback));
}
void WebContents::Print(gin::Arguments* args) {
  gin_helper::Dictionary options =
      gin::Dictionary::CreateEmpty(args->isolate());
  base::Value settings(base::Value::Type::DICTIONARY);
  if (args->Length() >= 1 && !args->GetNext(&options)) {
    gin_helper::ErrorThrower(args->isolate())