network_status_listener_impl.cc 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. #include "components/download/network/network_status_listener_impl.h"
  5. #include "base/bind.h"
  6. namespace download {
  7. NetworkStatusListenerImpl::NetworkStatusListenerImpl(
  8. network::NetworkConnectionTracker* network_connection_tracker)
  9. : network_connection_tracker_(network_connection_tracker) {}
  10. NetworkStatusListenerImpl::~NetworkStatusListenerImpl() = default;
  11. void NetworkStatusListenerImpl::Start(
  12. NetworkStatusListener::Observer* observer) {
  13. NetworkStatusListener::Start(observer);
  14. network_connection_tracker_->AddNetworkConnectionObserver(this);
  15. bool sync = network_connection_tracker_->GetConnectionType(
  16. &connection_type_,
  17. base::BindOnce(&NetworkStatusListenerImpl::OnNetworkStatusReady,
  18. weak_ptr_factory_.GetWeakPtr()));
  19. if (sync)
  20. observer_->OnNetworkStatusReady(connection_type_);
  21. }
  22. void NetworkStatusListenerImpl::Stop() {
  23. network_connection_tracker_->RemoveNetworkConnectionObserver(this);
  24. NetworkStatusListener::Stop();
  25. }
  26. network::mojom::ConnectionType NetworkStatusListenerImpl::GetConnectionType() {
  27. return connection_type_;
  28. }
  29. void NetworkStatusListenerImpl::OnConnectionChanged(
  30. network::mojom::ConnectionType type) {
  31. DCHECK(observer_);
  32. connection_type_ = type;
  33. observer_->OnNetworkChanged(type);
  34. }
  35. void NetworkStatusListenerImpl::OnNetworkStatusReady(
  36. network::mojom::ConnectionType type) {
  37. DCHECK(observer_);
  38. connection_type_ = type;
  39. observer_->OnNetworkStatusReady(type);
  40. }
  41. } // namespace download