#ifndef CONTENT_BROWSER_BACKGROUND_SYNC_BACKGROUND_SYNC_NETWORK_OBSERVER_H_
#define CONTENT_BROWSER_BACKGROUND_SYNC_BACKGROUND_SYNC_NETWORK_OBSERVER_H_
#include "base/functional/bind.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/sequence_checker.h"
#include "content/browser/background_sync/background_sync.pb.h"
#include "content/common/content_export.h"
#include "services/network/public/cpp/network_connection_tracker.h"
namespace content {
class CONTENT_EXPORT BackgroundSyncNetworkObserver
: public network::NetworkConnectionTracker::NetworkConnectionObserver {
public:
BackgroundSyncNetworkObserver(
base::RepeatingClosure network_changed_callback);
BackgroundSyncNetworkObserver(const BackgroundSyncNetworkObserver&) = delete;
BackgroundSyncNetworkObserver& operator=(
const BackgroundSyncNetworkObserver&) = delete;
~BackgroundSyncNetworkObserver() override;
virtual void Init() {}
static void SetIgnoreNetworkChangesForTests(bool ignore);
bool NetworkSufficient();
void OnConnectionChanged(
network::mojom::ConnectionType connection_type) override;
void NotifyManagerIfConnectionChangedForTesting(
network::mojom::ConnectionType connection_type);
private:
virtual void RegisterWithNetworkConnectionTracker(
network::NetworkConnectionTracker* network_connection_tracker);
void UpdateConnectionType();
void NotifyManagerIfConnectionChanged(
network::mojom::ConnectionType connection_type);
void NotifyConnectionChanged();
raw_ptr<network::NetworkConnectionTracker> network_connection_tracker_;
network::mojom::ConnectionType connection_type_;
base::RepeatingClosure connection_changed_callback_;
static bool ignore_network_changes_;
SEQUENCE_CHECKER(sequence_checker_);
base::WeakPtrFactory<BackgroundSyncNetworkObserver> weak_ptr_factory_{this};
};
}
#endif