network_status_listener_impl.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // Copyright 2018 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 COMPONENTS_DOWNLOAD_NETWORK_NETWORK_STATUS_LISTENER_IMPL_H_
  5. #define COMPONENTS_DOWNLOAD_NETWORK_NETWORK_STATUS_LISTENER_IMPL_H_
  6. #include "base/memory/raw_ptr.h"
  7. #include "base/memory/weak_ptr.h"
  8. #include "components/download/network/network_status_listener.h"
  9. #include "services/network/public/cpp/network_connection_tracker.h"
  10. namespace download {
  11. // Default implementation of NetworkStatusListener using
  12. // NetworkConnectionTracker to listen to connectivity changes.
  13. class NetworkStatusListenerImpl
  14. : public network::NetworkConnectionTracker::NetworkConnectionObserver,
  15. public NetworkStatusListener {
  16. public:
  17. explicit NetworkStatusListenerImpl(
  18. network::NetworkConnectionTracker* network_connection_tracker);
  19. NetworkStatusListenerImpl(const NetworkStatusListenerImpl&) = delete;
  20. NetworkStatusListenerImpl& operator=(const NetworkStatusListenerImpl&) =
  21. delete;
  22. ~NetworkStatusListenerImpl() override;
  23. // NetworkStatusListener implementation.
  24. void Start(NetworkStatusListener::Observer* observer) override;
  25. void Stop() override;
  26. network::mojom::ConnectionType GetConnectionType() override;
  27. private:
  28. // network::NetworkConnectionTracker::NetworkConnectionObserver.
  29. void OnConnectionChanged(network::mojom::ConnectionType type) override;
  30. void OnNetworkStatusReady(network::mojom::ConnectionType type);
  31. raw_ptr<network::NetworkConnectionTracker> network_connection_tracker_;
  32. base::WeakPtrFactory<NetworkStatusListenerImpl> weak_ptr_factory_{this};
  33. };
  34. } // namespace download
  35. #endif // COMPONENTS_DOWNLOAD_NETWORK_NETWORK_STATUS_LISTENER_IMPL_H_