| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_VPN_PROVIDER_VPN_SERVICE_INTERFACE_H_ |
| #define CHROME_BROWSER_CHROMEOS_EXTENSIONS_VPN_PROVIDER_VPN_SERVICE_INTERFACE_H_ |
| |
| #include <memory> |
| #include <string> |
| |
| #include "base/functional/callback_forward.h" |
| #include "base/values.h" |
| #include "components/keyed_service/core/keyed_service.h" |
| |
| namespace extensions::api { |
| |
| // This class is the basic interface for chrome.vpnProvider extension API |
| // methods. |
| class VpnServiceInterface : public KeyedService { |
| public: |
| using SuccessCallback = base::OnceClosure; |
| using FailureCallback = |
| base::OnceCallback<void(const std::string& error_name, |
| const std::string& error_message)>; |
| |
| // Sends UIEvent.showAddDialog to the extension with |extension_id|. |
| virtual void SendShowAddDialogToExtension( |
| const std::string& extension_id) = 0; |
| |
| // Sends UIEvent.showConfigureDialog for |configuration_name| to |
| // the extension with |extension_id|. |
| virtual void SendShowConfigureDialogToExtension( |
| const std::string& extension_id, |
| const std::string& configuration_name) = 0; |
| |
| // Creates a new VPN configuration with |configuration_name| as the name and |
| // attaches it to the extension with id |extension_id|. |
| // Calls |success| or |failure| based on the outcome. |
| virtual void CreateConfiguration(const std::string& extension_id, |
| const std::string& configuration_name, |
| SuccessCallback, |
| FailureCallback) = 0; |
| |
| // Destroys the VPN configuration with |configuration_name| after verifying |
| // that it belongs to the extension with id |extension_id|. Calls |success| or |
| // |failure| based on the outcome. |
| virtual void DestroyConfiguration(const std::string& extension_id, |
| const std::string& configuration_name, |
| SuccessCallback, |
| FailureCallback) = 0; |
| |
| // Set |parameters| for the active VPN configuration after verifying that it |
| // belongs to the extension with id |extension_id|. |
| // Calls |success| or |failure| based on the outcome. |
| virtual void SetParameters(const std::string& extension_id, |
| base::Value::Dict parameters, |
| SuccessCallback, |
| FailureCallback) = 0; |
| |
| // Sends an IP packet contained in |data| to the active VPN configuration |
| // after verifying that it belongs to the extension with id |extension_id|. |
| // Calls |success| or |failure| based on the outcome. |
| virtual void SendPacket(const std::string& extension_id, |
| const std::vector<char>& data, |
| SuccessCallback, |
| FailureCallback) = 0; |
| |
| // Notifies new connection state to the active VPN configuration after |
| // verifying that it belongs to the extension with id |extension_id|. |
| // Calls |success| or |failure| based on the outcome. |
| virtual void NotifyConnectionStateChanged(const std::string& extension_id, |
| bool connection_success, |
| SuccessCallback, |
| FailureCallback) = 0; |
| }; |
| |
| } // namespace extensions::api |
| |
| #endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_VPN_PROVIDER_VPN_SERVICE_INTERFACE_H_ |