aw_proxy_config_monitor.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef ANDROID_WEBVIEW_BROWSER_NETWORK_SERVICE_AW_PROXY_CONFIG_MONITOR_H_
  5. #define ANDROID_WEBVIEW_BROWSER_NETWORK_SERVICE_AW_PROXY_CONFIG_MONITOR_H_
  6. #include <memory>
  7. #include <string>
  8. #include <vector>
  9. #include "base/no_destructor.h"
  10. #include "mojo/public/cpp/bindings/remote_set.h"
  11. #include "net/proxy_resolution/proxy_config_service_android.h"
  12. #include "services/network/public/mojom/network_service.mojom.h"
  13. namespace network {
  14. namespace mojom {
  15. class ProxyConfigClient;
  16. }
  17. } // namespace network
  18. namespace android_webview {
  19. // This class configures proxy settings for NetworkContext if network service
  20. // is enabled.
  21. class AwProxyConfigMonitor : public net::ProxyConfigService::Observer {
  22. public:
  23. AwProxyConfigMonitor(const AwProxyConfigMonitor&) = delete;
  24. AwProxyConfigMonitor& operator=(const AwProxyConfigMonitor&) = delete;
  25. static AwProxyConfigMonitor* GetInstance();
  26. void AddProxyToNetworkContextParams(
  27. network::mojom::NetworkContextParams* network_context_params);
  28. std::string SetProxyOverride(
  29. const std::vector<net::ProxyConfigServiceAndroid::ProxyOverrideRule>&
  30. proxy_rules,
  31. const std::vector<std::string>& bypass_rules,
  32. const bool reverse_bypass,
  33. base::OnceClosure callback);
  34. void ClearProxyOverride(base::OnceClosure callback);
  35. private:
  36. AwProxyConfigMonitor();
  37. ~AwProxyConfigMonitor() override;
  38. friend class base::NoDestructor<AwProxyConfigMonitor>;
  39. // net::ProxyConfigService::Observer implementation:
  40. void OnProxyConfigChanged(
  41. const net::ProxyConfigWithAnnotation& config,
  42. net::ProxyConfigService::ConfigAvailability availability) override;
  43. void FlushProxyConfig(base::OnceClosure callback);
  44. std::unique_ptr<net::ProxyConfigServiceAndroid> proxy_config_service_android_;
  45. mojo::RemoteSet<network::mojom::ProxyConfigClient> proxy_config_client_set_;
  46. };
  47. } // namespace android_webview
  48. #endif // ANDROID_WEBVIEW_BROWSER_NETWORK_SERVICE_AW_PROXY_CONFIG_MONITOR_H_