<!--  As an open source project with a dedicated but small maintainer team, it can sometimes take a long time for issues to be addressed so please be patient and we will get back to you as soon as we can.
-->

### Preflight Checklist
<!-- Please ensure you've completed the following steps by replacing [ ] with [x]-->

* [x] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
* [x] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
* [x] I have searched the issue tracker for an issue that matches the one I want to file, without success. 
  * #17260 Not relevant: addresses the same issue, but for a version before the pull request that supposedly fixed silent printing. is already closed.
  * #17077 Not relevant: addresses the same issue, but for an older version before pull request #19038 that should fix silent printing. 
  * #18123 Not relevant: doesn't address the same issue. Is already closed
  * #17523 A list of issues related to printing. 

### Issue Details

* **Electron Version:**
  * 5.0.7 and 6.0.0-beta.15 
* **Operating System:**
  * MacOS Mojave v10.14.4
* **Last Known Working Electron version:**
  * 3.1.11

### Expected Behaviors
According to the pull request #19038 which was merged in v.5.0.7, silent printing should work. 

&#35; | Code | Expected Behavior
------ | ----- | -------------------
1 | `webContents.print()` | Opens the print preview
2 | `webContents.print({ silent: true })` | Prints silently to default printer
3 | `webContents.print({ silent: true, printBackground: true })` | Prints silently with background to default printer
4 | `webContents.print({ silent: true, deviceName: 'Canon_MF633C_635C' })` | Prints silently to my Canon printer
5 | `webContents.print({ silent: true, deviceName: printBackground: true, deviceName: 'Canon_MF633C_635C' })` | Prints silently with background to my Canon printer

Original documentation of WebContents.print() can be found [here](https://electronjs.org/docs/api/web-contents#contentsprintoptions-callback).


### Actual Behaviors
&#35; | Actual Behavior
------ |  ---------------
1 | :white_check_mark: As expected
2 | :white_check_mark: As expected
3 | :white_check_mark: As expected
4 | :x: Nothing will happen, callback is never called
5 | :x: Nothing will happen, callback is never called

Unfortunately when providing a deviceName, nothing is send to the printer and the callback will never be called (see image of terminal logs below).

### To Reproduce
<!--
Your best chance of getting this bug looked at quickly is to provide an example.
-->
1. Clone this fork: https://github.com/ibra038/electron-quick-start
2. Run `yarn install` and `yarn start` 
3. Follow the steps on your screen

![Schermafbeelding 2019-07-26 om 12 26 15](https://user-images.githubusercontent.com/10993141/61945586-a63aa480-afa0-11e9-91a5-d9db5c93a93e.png)
![Schermafbeelding 2019-07-26 om 13 19 08](https://user-images.githubusercontent.com/10993141/61948525-53fd8180-afa8-11e9-98ee-de03aac35eee.png)




<!--
For bugs that can be encapsulated in a small experiment, you can use Electron Fiddle (https://github.com/electron/fiddle) to publish your example to a GitHub Gist and link it your bug report.
-->

<!--
If Fiddle is insufficient to produce an example, please provide an example REPOSITORY that can be cloned and run. You can fork electron-quick-start (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.
```sh
$ git clone $YOUR_URL -b $BRANCH
$ npm install
$ npm start || electron .
```
-->

### Additional Information
For other developers that need to print silently to a predefined printer, the last known version I found to work is v3.1.11.


shell/browser/api/atom_api_web_contents.cc
const base::FilePath& full_file_path,
    const content::SavePageType& save_type) {
  util::Promise promise(isolate());
  v8::Local<v8::Promise> handle = promise.GetHandle();
  auto* handler = new SavePageHandler(web_contents(), std::move(promise));
  handler->Handle(full_file_path, save_type);
  return handle;
}
void WebContents::OpenDevTools(mate::Arguments* args) {
  if (type_ == Type::REMOTE)
    return;
  if (!enable_devtools_)
    return;
  std::string state;
  if (type_ == Type::WEB_VIEW || !owner_window()) {
    state = "detach";
  }
  bool activate = true;
  if (args && args->Length() == 1) {
    mate::Dictionary options;
    if (args->GetNext(&options)) {
      options.Get("mode", &state);
      options.Get("activate", &activate);
    }
  }
  managed_web_contents()->SetDockState(state);
  managed_web_contents()->ShowDevTools(activate);
}
void WebContents::CloseDevTools() {