3611967: webhid: Migrate HidDelegate to use BrowserContext and Origin

https://chromium-review.googlesource.com/c/chromium/src/+/3611967
This commit is contained in:
Shelley Vohr
2022-06-01 11:32:38 +02:00
parent ca8a3852f4
commit 18aac8e93e
2 changed files with 33 additions and 42 deletions

View File

@@ -18,9 +18,7 @@
namespace {
electron::HidChooserContext* GetChooserContext(
content::RenderFrameHost* frame) {
auto* web_contents = content::WebContents::FromRenderFrameHost(frame);
auto* browser_context = web_contents->GetBrowserContext();
content::BrowserContext* browser_context) {
return electron::HidChooserContextFactory::GetForBrowserContext(
browser_context);
}
@@ -38,8 +36,9 @@ std::unique_ptr<content::HidChooser> ElectronHidDelegate::RunChooser(
std::vector<blink::mojom::HidDeviceFilterPtr> filters,
std::vector<blink::mojom::HidDeviceFilterPtr> exclusion_filters,
content::HidChooser::Callback callback) {
electron::HidChooserContext* chooser_context =
GetChooserContext(render_frame_host);
DCHECK(render_frame_host);
auto* chooser_context =
GetChooserContext(render_frame_host->GetBrowserContext());
if (!device_observation_.IsObserving())
device_observation_.Observe(chooser_context);
@@ -58,65 +57,55 @@ std::unique_ptr<content::HidChooser> ElectronHidDelegate::RunChooser(
}
bool ElectronHidDelegate::CanRequestDevicePermission(
content::RenderFrameHost* render_frame_host) {
auto* web_contents =
content::WebContents::FromRenderFrameHost(render_frame_host);
auto* permission_helper =
WebContentsPermissionHelper::FromWebContents(web_contents);
return permission_helper->CheckHIDAccessPermission(
web_contents->GetMainFrame()->GetLastCommittedOrigin());
content::BrowserContext* browser_context,
const url::Origin& origin) {
return GetChooserContext(browser_context)->CanRequestObjectPermission(origin);
}
bool ElectronHidDelegate::HasDevicePermission(
content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
const url::Origin& origin,
const device::mojom::HidDeviceInfo& device) {
auto* chooser_context = GetChooserContext(render_frame_host);
const auto& origin =
render_frame_host->GetMainFrame()->GetLastCommittedOrigin();
return chooser_context->HasDevicePermission(origin, device,
render_frame_host);
return GetChooserContext(browser_context)
->HasDevicePermission(origin, device);
}
void ElectronHidDelegate::RevokeDevicePermission(
content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
const url::Origin& origin,
const device::mojom::HidDeviceInfo& device) {
auto* chooser_context = GetChooserContext(render_frame_host);
const auto& origin =
render_frame_host->GetMainFrame()->GetLastCommittedOrigin();
return chooser_context->RevokeDevicePermission(origin, device,
render_frame_host);
return GetChooserContext(browser_context)
->RevokeDevicePermission(origin, device);
}
device::mojom::HidManager* ElectronHidDelegate::GetHidManager(
content::RenderFrameHost* render_frame_host) {
auto* chooser_context = GetChooserContext(render_frame_host);
return chooser_context->GetHidManager();
content::BrowserContext* browser_context) {
return GetChooserContext(browser_context)->GetHidManager();
}
void ElectronHidDelegate::AddObserver(
content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
Observer* observer) {
observer_list_.AddObserver(observer);
auto* chooser_context = GetChooserContext(render_frame_host);
auto* chooser_context = GetChooserContext(browser_context);
if (!device_observation_.IsObserving())
device_observation_.Observe(chooser_context);
}
void ElectronHidDelegate::RemoveObserver(
content::RenderFrameHost* render_frame_host,
content::HidDelegate::Observer* observer) {
observer_list_.RemoveObserver(observer);
}
const device::mojom::HidDeviceInfo* ElectronHidDelegate::GetDeviceInfo(
content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
const std::string& guid) {
auto* chooser_context = GetChooserContext(render_frame_host);
auto* chooser_context = GetChooserContext(browser_context);
return chooser_context->GetDeviceInfo(guid);
}
bool ElectronHidDelegate::IsFidoAllowedForOrigin(
content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
const url::Origin& origin) {
return base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kDisableHidBlocklist);

View File

@@ -34,22 +34,24 @@ class ElectronHidDelegate : public content::HidDelegate,
std::vector<blink::mojom::HidDeviceFilterPtr> exclusion_filters,
content::HidChooser::Callback callback) override;
bool CanRequestDevicePermission(
content::RenderFrameHost* render_frame_host) override;
bool HasDevicePermission(content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
const url::Origin& origin) override;
bool HasDevicePermission(content::BrowserContext* browser_context,
const url::Origin& origin,
const device::mojom::HidDeviceInfo& device) override;
void RevokeDevicePermission(
content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
const url::Origin& origin,
const device::mojom::HidDeviceInfo& device) override;
device::mojom::HidManager* GetHidManager(
content::RenderFrameHost* render_frame_host) override;
void AddObserver(content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context) override;
void AddObserver(content::BrowserContext* browser_context,
content::HidDelegate::Observer* observer) override;
void RemoveObserver(content::RenderFrameHost* render_frame_host,
content::HidDelegate::Observer* observer) override;
void RemoveObserver(content::HidDelegate::Observer* observer) override;
const device::mojom::HidDeviceInfo* GetDeviceInfo(
content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
const std::string& guid) override;
bool IsFidoAllowedForOrigin(content::RenderFrameHost* render_frame_host,
bool IsFidoAllowedForOrigin(content::BrowserContext* browser_context,
const url::Origin& origin) override;
// HidChooserContext::DeviceObserver: