feat: add support for Web Bluetooth pin pairing (#35416)
* feat: add bluetooth pairing handler * Update docs/api/session.md Co-authored-by: Charles Kerr <charles@charleskerr.com> * Update docs/api/session.md Co-authored-by: Charles Kerr <charles@charleskerr.com> * docs: update based on review * Apply suggestions from code review Co-authored-by: Erick Zhao <erick@hotmail.ca> Co-authored-by: Charles Kerr <charles@charleskerr.com> * chore: update docs per review * chore: cleanup callback per review Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: Erick Zhao <erick@hotmail.ca>
This commit is contained in:
parent
f8077cc004
commit
697a219bcb
11 changed files with 234 additions and 6 deletions
|
@ -13,6 +13,7 @@
|
|||
#include "content/public/browser/permission_controller_delegate.h"
|
||||
#include "gin/dictionary.h"
|
||||
#include "shell/browser/electron_browser_context.h"
|
||||
#include "shell/common/gin_helper/dictionary.h"
|
||||
|
||||
namespace base {
|
||||
class Value;
|
||||
|
@ -38,6 +39,7 @@ class ElectronPermissionManager : public content::PermissionControllerDelegate {
|
|||
base::OnceCallback<void(blink::mojom::PermissionStatus)>;
|
||||
using StatusesCallback = base::OnceCallback<void(
|
||||
const std::vector<blink::mojom::PermissionStatus>&)>;
|
||||
using PairCallback = base::OnceCallback<void(base::Value::Dict)>;
|
||||
using RequestHandler = base::RepeatingCallback<void(content::WebContents*,
|
||||
blink::PermissionType,
|
||||
StatusCallback,
|
||||
|
@ -50,11 +52,14 @@ class ElectronPermissionManager : public content::PermissionControllerDelegate {
|
|||
|
||||
using DeviceCheckHandler =
|
||||
base::RepeatingCallback<bool(const v8::Local<v8::Object>&)>;
|
||||
using BluetoothPairingHandler =
|
||||
base::RepeatingCallback<void(gin_helper::Dictionary, PairCallback)>;
|
||||
|
||||
// Handler to dispatch permission requests in JS.
|
||||
void SetPermissionRequestHandler(const RequestHandler& handler);
|
||||
void SetPermissionCheckHandler(const CheckHandler& handler);
|
||||
void SetDevicePermissionHandler(const DeviceCheckHandler& handler);
|
||||
void SetBluetoothPairingHandler(const BluetoothPairingHandler& handler);
|
||||
|
||||
// content::PermissionControllerDelegate:
|
||||
void RequestPermission(blink::PermissionType permission,
|
||||
|
@ -81,6 +86,9 @@ class ElectronPermissionManager : public content::PermissionControllerDelegate {
|
|||
base::Value::Dict details,
|
||||
StatusesCallback callback);
|
||||
|
||||
void CheckBluetoothDevicePair(gin_helper::Dictionary details,
|
||||
PairCallback pair_callback) const;
|
||||
|
||||
bool CheckPermissionWithDetails(blink::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
const GURL& requesting_origin,
|
||||
|
@ -147,6 +155,7 @@ class ElectronPermissionManager : public content::PermissionControllerDelegate {
|
|||
RequestHandler request_handler_;
|
||||
CheckHandler check_handler_;
|
||||
DeviceCheckHandler device_permission_handler_;
|
||||
BluetoothPairingHandler bluetooth_pairing_handler_;
|
||||
|
||||
PendingRequestsMap pending_requests_;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue