Skip to content

Commit

Permalink
3611967: webhid: Migrate HidDelegate to use BrowserContext and Origin
Browse files Browse the repository at this point in the history
  • Loading branch information
codebytere committed Jun 3, 2022
1 parent ca8a385 commit 18aac8e
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 42 deletions.
55 changes: 22 additions & 33 deletions shell/browser/hid/electron_hid_delegate.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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);

Expand All @@ -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);
Expand Down
20 changes: 11 additions & 9 deletions shell/browser/hid/electron_hid_delegate.h
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down

0 comments on commit 18aac8e

Please sign in to comment.