fix: expose all serial devices to setDevicePermissionHandler (#32651)
This commit is contained in:
parent
8e0e2d40e2
commit
365933f1f3
2 changed files with 6 additions and 36 deletions
|
@ -95,36 +95,18 @@ void SerialChooserContext::GrantPortPermission(
|
|||
const device::mojom::SerialPortInfo& port,
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
base::Value value = PortInfoToValue(port);
|
||||
port_info_.insert({port.token, value.Clone()});
|
||||
|
||||
if (CanStorePersistentEntry(port)) {
|
||||
auto* web_contents =
|
||||
content::WebContents::FromRenderFrameHost(render_frame_host);
|
||||
auto* permission_helper =
|
||||
WebContentsPermissionHelper::FromWebContents(web_contents);
|
||||
permission_helper->GrantSerialPortPermission(origin, std::move(value),
|
||||
render_frame_host);
|
||||
return;
|
||||
}
|
||||
|
||||
ephemeral_ports_[origin].insert(port.token);
|
||||
auto* web_contents =
|
||||
content::WebContents::FromRenderFrameHost(render_frame_host);
|
||||
auto* permission_helper =
|
||||
WebContentsPermissionHelper::FromWebContents(web_contents);
|
||||
permission_helper->GrantSerialPortPermission(origin, std::move(value),
|
||||
render_frame_host);
|
||||
}
|
||||
|
||||
bool SerialChooserContext::HasPortPermission(
|
||||
const url::Origin& origin,
|
||||
const device::mojom::SerialPortInfo& port,
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
auto it = ephemeral_ports_.find(origin);
|
||||
if (it != ephemeral_ports_.end()) {
|
||||
const std::set<base::UnguessableToken> ports = it->second;
|
||||
if (base::Contains(ports, port.token))
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!CanStorePersistentEntry(port)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
auto* web_contents =
|
||||
content::WebContents::FromRenderFrameHost(render_frame_host);
|
||||
auto* permission_helper =
|
||||
|
@ -194,8 +176,6 @@ void SerialChooserContext::OnPortRemoved(
|
|||
device::mojom::SerialPortInfoPtr port) {
|
||||
for (auto& observer : port_observer_list_)
|
||||
observer.OnPortRemoved(*port);
|
||||
|
||||
port_info_.erase(port->token);
|
||||
}
|
||||
|
||||
void SerialChooserContext::EnsurePortManagerConnection() {
|
||||
|
@ -221,10 +201,6 @@ void SerialChooserContext::SetUpPortManagerConnection(
|
|||
void SerialChooserContext::OnPortManagerConnectionError() {
|
||||
port_manager_.reset();
|
||||
client_receiver_.reset();
|
||||
|
||||
port_info_.clear();
|
||||
|
||||
ephemeral_ports_.clear();
|
||||
}
|
||||
|
||||
} // namespace electron
|
||||
|
|
|
@ -82,12 +82,6 @@ class SerialChooserContext : public KeyedService,
|
|||
mojo::PendingRemote<device::mojom::SerialPortManager> manager);
|
||||
void OnPortManagerConnectionError();
|
||||
|
||||
// Tracks the set of ports to which an origin has access to.
|
||||
std::map<url::Origin, std::set<base::UnguessableToken>> ephemeral_ports_;
|
||||
|
||||
// Holds information about ports in |ephemeral_ports_|.
|
||||
std::map<base::UnguessableToken, base::Value> port_info_;
|
||||
|
||||
mojo::Remote<device::mojom::SerialPortManager> port_manager_;
|
||||
mojo::Receiver<device::mojom::SerialPortManagerClient> client_receiver_{this};
|
||||
base::ObserverList<PortObserver> port_observer_list_;
|
||||
|
|
Loading…
Add table
Reference in a new issue