1111
1212#include " base/memory/weak_ptr.h"
1313#include " content/public/browser/serial_delegate.h"
14+ #include " shell/browser/serial/serial_chooser_context.h"
1415#include " shell/browser/serial/serial_chooser_controller.h"
1516
1617namespace electron {
1718
1819class SerialChooserController ;
1920
20- class ElectronSerialDelegate : public content ::SerialDelegate {
21+ class ElectronSerialDelegate : public content ::SerialDelegate,
22+ public SerialChooserContext::PortObserver {
2123 public:
2224 ElectronSerialDelegate ();
2325 ~ElectronSerialDelegate () override ;
@@ -48,6 +50,13 @@ class ElectronSerialDelegate : public content::SerialDelegate {
4850
4951 void DeleteControllerForFrame (content::RenderFrameHost* render_frame_host);
5052
53+ // SerialChooserContext::PortObserver:
54+ void OnPortAdded (const device::mojom::SerialPortInfo& port) override ;
55+ void OnPortRemoved (const device::mojom::SerialPortInfo& port) override ;
56+ void OnPortManagerConnectionError () override ;
57+ void OnPermissionRevoked (const url::Origin& origin) override {}
58+ void OnSerialChooserContextShutdown () override ;
59+
5160 private:
5261 SerialChooserController* ControllerForFrame (
5362 content::RenderFrameHost* render_frame_host);
@@ -56,6 +65,13 @@ class ElectronSerialDelegate : public content::SerialDelegate {
5665 std::vector<blink::mojom::SerialPortFilterPtr> filters,
5766 content::SerialChooser::Callback callback);
5867
68+ base::ScopedObservation<SerialChooserContext,
69+ SerialChooserContext::PortObserver,
70+ &SerialChooserContext::AddPortObserver,
71+ &SerialChooserContext::RemovePortObserver>
72+ port_observation_{this };
73+ base::ObserverList<content::SerialDelegate::Observer> observer_list_;
74+
5975 std::unordered_map<content::RenderFrameHost*,
6076 std::unique_ptr<SerialChooserController>>
6177 controller_map_;
0 commit comments