| 
									
										
										
										
											2020-09-28 12:22:03 -04:00
										 |  |  | // Copyright (c) 2020 Microsoft, Inc.
 | 
					
						
							|  |  |  | // Use of this source code is governed by the MIT license that can be
 | 
					
						
							|  |  |  | // found in the LICENSE file.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-22 08:34:31 +01:00
										 |  |  | #ifndef ELECTRON_SHELL_BROWSER_SERIAL_ELECTRON_SERIAL_DELEGATE_H_
 | 
					
						
							|  |  |  | #define ELECTRON_SHELL_BROWSER_SERIAL_ELECTRON_SERIAL_DELEGATE_H_
 | 
					
						
							| 
									
										
										
										
											2020-09-28 12:22:03 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include <memory>
 | 
					
						
							|  |  |  | #include <unordered_map>
 | 
					
						
							|  |  |  | #include <vector>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "base/memory/weak_ptr.h"
 | 
					
						
							|  |  |  | #include "content/public/browser/serial_delegate.h"
 | 
					
						
							|  |  |  | #include "shell/browser/serial/serial_chooser_controller.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace electron { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class SerialChooserController; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ElectronSerialDelegate : public content::SerialDelegate { | 
					
						
							|  |  |  |  public: | 
					
						
							|  |  |  |   ElectronSerialDelegate(); | 
					
						
							|  |  |  |   ~ElectronSerialDelegate() override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-03 12:41:45 +01:00
										 |  |  |   // disable copy
 | 
					
						
							|  |  |  |   ElectronSerialDelegate(const ElectronSerialDelegate&) = delete; | 
					
						
							|  |  |  |   ElectronSerialDelegate& operator=(const ElectronSerialDelegate&) = delete; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-28 12:22:03 -04:00
										 |  |  |   std::unique_ptr<content::SerialChooser> RunChooser( | 
					
						
							|  |  |  |       content::RenderFrameHost* frame, | 
					
						
							|  |  |  |       std::vector<blink::mojom::SerialPortFilterPtr> filters, | 
					
						
							|  |  |  |       content::SerialChooser::Callback callback) override; | 
					
						
							|  |  |  |   bool CanRequestPortPermission(content::RenderFrameHost* frame) override; | 
					
						
							|  |  |  |   bool HasPortPermission(content::RenderFrameHost* frame, | 
					
						
							|  |  |  |                          const device::mojom::SerialPortInfo& port) override; | 
					
						
							|  |  |  |   device::mojom::SerialPortManager* GetPortManager( | 
					
						
							|  |  |  |       content::RenderFrameHost* frame) override; | 
					
						
							|  |  |  |   void AddObserver(content::RenderFrameHost* frame, | 
					
						
							|  |  |  |                    Observer* observer) override; | 
					
						
							|  |  |  |   void RemoveObserver(content::RenderFrameHost* frame, | 
					
						
							|  |  |  |                       Observer* observer) override; | 
					
						
							| 
									
										
										
										
											2022-05-17 12:48:40 -04:00
										 |  |  |   void RevokePortPermissionWebInitiated( | 
					
						
							|  |  |  |       content::RenderFrameHost* frame, | 
					
						
							|  |  |  |       const base::UnguessableToken& token) override; | 
					
						
							|  |  |  |   const device::mojom::SerialPortInfo* GetPortInfo( | 
					
						
							|  |  |  |       content::RenderFrameHost* frame, | 
					
						
							|  |  |  |       const base::UnguessableToken& token) override; | 
					
						
							| 
									
										
										
										
											2020-09-28 12:22:03 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |   void DeleteControllerForFrame(content::RenderFrameHost* render_frame_host); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  private: | 
					
						
							|  |  |  |   SerialChooserController* ControllerForFrame( | 
					
						
							|  |  |  |       content::RenderFrameHost* render_frame_host); | 
					
						
							|  |  |  |   SerialChooserController* AddControllerForFrame( | 
					
						
							|  |  |  |       content::RenderFrameHost* render_frame_host, | 
					
						
							|  |  |  |       std::vector<blink::mojom::SerialPortFilterPtr> filters, | 
					
						
							|  |  |  |       content::SerialChooser::Callback callback); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   std::unordered_map<content::RenderFrameHost*, | 
					
						
							|  |  |  |                      std::unique_ptr<SerialChooserController>> | 
					
						
							|  |  |  |       controller_map_; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   base::WeakPtrFactory<ElectronSerialDelegate> weak_factory_{this}; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }  // namespace electron
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-22 08:34:31 +01:00
										 |  |  | #endif  // ELECTRON_SHELL_BROWSER_SERIAL_ELECTRON_SERIAL_DELEGATE_H_
 |