<!--  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]-->

* [ ] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
* [ ] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
* [ ] I have searched the issue tracker for a feature request that matches the one I want to file, without success.

### Problem Description
<!-- Is your feature request related to a problem? Please add a clear and concise description of what the problem is. -->
when calling webContents.getPrinters(), printer status does not determine whether the printer is online or offline.

### Proposed Solution
<!-- Describe the solution you'd like in a clear and concise manner -->

### Alternatives Considered
<!-- A clear and concise description of any alternative solutions or features you've considered. -->

### Additional Information
<!-- Add any other context about the problem here. -->

shell/browser/api/atom_api_web_contents.cc
bool user_gesture,
                                     bool last_unlocked_by_target) {
  auto* permission_helper =
      WsPermissionHelper::FromWs(ontents);
  permission_helper->RequestPointerLockPermission(user_gesture);
}
std::unique_ptr<content::BluetoothChooser> Ws::RunBluetoothChooser(
    content::RenderFrameHost* frame,
    const content::BluetoothChooser::EventHandler& event_handler) {
  return std::make_unique<BluetoothChooser>(this, event_handler);
}
content::JavaScriptDialogManager* Ws::GetJavaScriptDialogManager(
    content::Ws* source) {
  if (!dialog_manager_)
    dialog_manager_ = std::make_unique<AtomJavaScriptDialogManager>(this);
  return dialog_manager_.get();
}
void Ws::OnAudioStateChanged(bool audible) {
  Emit("-audio-state-changed", audible);
}
void Ws::BeforeUnloadFired(bool proceed,
                                    const base::TimeTicks& proceed_time) {
  
  
}
void Ws::RenderViewCreated(content::RenderViewHost* render_view_host) {