-
Notifications
You must be signed in to change notification settings - Fork 15.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: navigator.bluetooth.requestDevice (#27927)
* fix: navigator.bluetooth.requestDevice * remove permission observer methods not implemented in 12-x-y Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
- Loading branch information
1 parent
e65e989
commit 0baf999
Showing
9 changed files
with
256 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
// Copyright (c) 2020 Microsoft, Inc. | ||
// Use of this source code is governed by the MIT license that can be | ||
// found in the LICENSE file. | ||
|
||
#include "shell/browser/bluetooth/electron_bluetooth_delegate.h" | ||
|
||
#include <memory> | ||
|
||
#include "base/scoped_observer.h" | ||
#include "base/strings/utf_string_conversions.h" | ||
#include "build/build_config.h" | ||
#include "content/public/browser/render_frame_host.h" | ||
#include "content/public/browser/web_contents.h" | ||
#include "device/bluetooth/bluetooth_device.h" | ||
#include "device/bluetooth/public/cpp/bluetooth_uuid.h" | ||
#include "shell/browser/api/electron_api_web_contents.h" | ||
#include "shell/browser/lib/bluetooth_chooser.h" | ||
#include "third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h" | ||
#include "third_party/blink/public/mojom/bluetooth/web_bluetooth.mojom.h" | ||
|
||
using blink::WebBluetoothDeviceId; | ||
using content::RenderFrameHost; | ||
using content::WebContents; | ||
using device::BluetoothUUID; | ||
|
||
namespace electron { | ||
|
||
ElectronBluetoothDelegate::ElectronBluetoothDelegate() = default; | ||
|
||
ElectronBluetoothDelegate::~ElectronBluetoothDelegate() = default; | ||
|
||
std::unique_ptr<content::BluetoothChooser> | ||
ElectronBluetoothDelegate::RunBluetoothChooser( | ||
content::RenderFrameHost* frame, | ||
const content::BluetoothChooser::EventHandler& event_handler) { | ||
auto* api_web_contents = | ||
api::WebContents::From(content::WebContents::FromRenderFrameHost(frame)); | ||
return std::make_unique<BluetoothChooser>(api_web_contents, event_handler); | ||
} | ||
|
||
// The following methods are not currently called in Electron. | ||
std::unique_ptr<content::BluetoothScanningPrompt> | ||
ElectronBluetoothDelegate::ShowBluetoothScanningPrompt( | ||
content::RenderFrameHost* frame, | ||
const content::BluetoothScanningPrompt::EventHandler& event_handler) { | ||
NOTIMPLEMENTED(); | ||
return nullptr; | ||
} | ||
|
||
WebBluetoothDeviceId ElectronBluetoothDelegate::GetWebBluetoothDeviceId( | ||
RenderFrameHost* frame, | ||
const std::string& device_address) { | ||
NOTIMPLEMENTED(); | ||
return WebBluetoothDeviceId::Create(); | ||
} | ||
|
||
std::string ElectronBluetoothDelegate::GetDeviceAddress( | ||
RenderFrameHost* frame, | ||
const WebBluetoothDeviceId& device_id) { | ||
NOTIMPLEMENTED(); | ||
return nullptr; | ||
} | ||
|
||
WebBluetoothDeviceId ElectronBluetoothDelegate::AddScannedDevice( | ||
RenderFrameHost* frame, | ||
const std::string& device_address) { | ||
NOTIMPLEMENTED(); | ||
return WebBluetoothDeviceId::Create(); | ||
} | ||
|
||
WebBluetoothDeviceId ElectronBluetoothDelegate::GrantServiceAccessPermission( | ||
RenderFrameHost* frame, | ||
const device::BluetoothDevice* device, | ||
const blink::mojom::WebBluetoothRequestDeviceOptions* options) { | ||
NOTIMPLEMENTED(); | ||
return WebBluetoothDeviceId::Create(); | ||
} | ||
|
||
bool ElectronBluetoothDelegate::HasDevicePermission( | ||
RenderFrameHost* frame, | ||
const WebBluetoothDeviceId& device_id) { | ||
NOTIMPLEMENTED(); | ||
return true; | ||
} | ||
|
||
bool ElectronBluetoothDelegate::IsAllowedToAccessService( | ||
RenderFrameHost* frame, | ||
const WebBluetoothDeviceId& device_id, | ||
const BluetoothUUID& service) { | ||
NOTIMPLEMENTED(); | ||
return true; | ||
} | ||
|
||
bool ElectronBluetoothDelegate::IsAllowedToAccessAtLeastOneService( | ||
RenderFrameHost* frame, | ||
const WebBluetoothDeviceId& device_id) { | ||
NOTIMPLEMENTED(); | ||
return true; | ||
} | ||
|
||
bool ElectronBluetoothDelegate::IsAllowedToAccessManufacturerData( | ||
RenderFrameHost* frame, | ||
const WebBluetoothDeviceId& device_id, | ||
uint16_t manufacturer_code) { | ||
NOTIMPLEMENTED(); | ||
return true; | ||
} | ||
|
||
std::vector<blink::mojom::WebBluetoothDevicePtr> | ||
ElectronBluetoothDelegate::GetPermittedDevices( | ||
content::RenderFrameHost* frame) { | ||
std::vector<blink::mojom::WebBluetoothDevicePtr> permitted_devices; | ||
NOTIMPLEMENTED(); | ||
return permitted_devices; | ||
} | ||
|
||
} // namespace electron |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
// Copyright (c) 2020 Microsoft, Inc. | ||
// Use of this source code is governed by the MIT license that can be | ||
// found in the LICENSE file. | ||
|
||
#ifndef SHELL_BROWSER_BLUETOOTH_ELECTRON_BLUETOOTH_DELEGATE_H_ | ||
#define SHELL_BROWSER_BLUETOOTH_ELECTRON_BLUETOOTH_DELEGATE_H_ | ||
|
||
#include <memory> | ||
#include <string> | ||
#include <vector> | ||
|
||
#include "base/observer_list.h" | ||
#include "base/scoped_observation.h" | ||
#include "content/public/browser/bluetooth_delegate.h" | ||
#include "content/public/browser/render_frame_host.h" | ||
#include "third_party/blink/public/mojom/bluetooth/web_bluetooth.mojom-forward.h" | ||
|
||
namespace blink { | ||
class WebBluetoothDeviceId; | ||
} // namespace blink | ||
|
||
namespace content { | ||
class RenderFrameHost; | ||
} // namespace content | ||
|
||
namespace device { | ||
class BluetoothDevice; | ||
class BluetoothUUID; | ||
} // namespace device | ||
|
||
namespace electron { | ||
|
||
// Provides an interface for managing device permissions for Web Bluetooth and | ||
// Web Bluetooth Scanning API. This is the Electron-specific implementation of | ||
// the BluetoothDelegate. | ||
class ElectronBluetoothDelegate : public content::BluetoothDelegate { | ||
public: | ||
ElectronBluetoothDelegate(); | ||
~ElectronBluetoothDelegate() override; | ||
|
||
// Move-only class. | ||
ElectronBluetoothDelegate(const ElectronBluetoothDelegate&) = delete; | ||
ElectronBluetoothDelegate& operator=(const ElectronBluetoothDelegate&) = | ||
delete; | ||
|
||
// BluetoothDelegate implementation: | ||
std::unique_ptr<content::BluetoothChooser> RunBluetoothChooser( | ||
content::RenderFrameHost* frame, | ||
const content::BluetoothChooser::EventHandler& event_handler) override; | ||
|
||
std::unique_ptr<content::BluetoothScanningPrompt> ShowBluetoothScanningPrompt( | ||
content::RenderFrameHost* frame, | ||
const content::BluetoothScanningPrompt::EventHandler& event_handler) | ||
override; | ||
blink::WebBluetoothDeviceId GetWebBluetoothDeviceId( | ||
content::RenderFrameHost* frame, | ||
const std::string& device_address) override; | ||
std::string GetDeviceAddress( | ||
content::RenderFrameHost* frame, | ||
const blink::WebBluetoothDeviceId& device_id) override; | ||
blink::WebBluetoothDeviceId AddScannedDevice( | ||
content::RenderFrameHost* frame, | ||
const std::string& device_address) override; | ||
blink::WebBluetoothDeviceId GrantServiceAccessPermission( | ||
content::RenderFrameHost* frame, | ||
const device::BluetoothDevice* device, | ||
const blink::mojom::WebBluetoothRequestDeviceOptions* options) override; | ||
bool HasDevicePermission( | ||
content::RenderFrameHost* frame, | ||
const blink::WebBluetoothDeviceId& device_id) override; | ||
bool IsAllowedToAccessService(content::RenderFrameHost* frame, | ||
const blink::WebBluetoothDeviceId& device_id, | ||
const device::BluetoothUUID& service) override; | ||
bool IsAllowedToAccessAtLeastOneService( | ||
content::RenderFrameHost* frame, | ||
const blink::WebBluetoothDeviceId& device_id) override; | ||
bool IsAllowedToAccessManufacturerData( | ||
content::RenderFrameHost* frame, | ||
const blink::WebBluetoothDeviceId& device_id, | ||
uint16_t manufacturer_code) override; | ||
std::vector<blink::mojom::WebBluetoothDevicePtr> GetPermittedDevices( | ||
content::RenderFrameHost* frame) override; | ||
}; | ||
|
||
} // namespace electron | ||
|
||
#endif // SHELL_BROWSER_BLUETOOTH_ELECTRON_BLUETOOTH_DELEGATE_H_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters