#ifndef CONTENT_BROWSER_ANDROID_BACKGROUND_SYNC_NETWORK_OBSERVER_ANDROID_H_
#define CONTENT_BROWSER_ANDROID_BACKGROUND_SYNC_NETWORK_OBSERVER_ANDROID_H_
#include "base/android/jni_android.h"
#include "base/android/scoped_java_ref.h"
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "content/browser/background_sync/background_sync_network_observer.h"
#include "content/public/browser/browser_thread.h"
namespace content {
class BackgroundSyncNetworkObserverAndroid
: public BackgroundSyncNetworkObserver {
public:
BackgroundSyncNetworkObserverAndroid(
base::RepeatingClosure network_changed_callback);
~BackgroundSyncNetworkObserverAndroid() override;
void Init() override;
class Observer : public base::RefCounted<
BackgroundSyncNetworkObserverAndroid::Observer> {
public:
static scoped_refptr<BackgroundSyncNetworkObserverAndroid::Observer> Create(
base::RepeatingCallback<void(network::mojom::ConnectionType)> callback);
Observer(const Observer&) = delete;
Observer& operator=(const Observer&) = delete;
void Init();
void NotifyConnectionTypeChanged(JNIEnv* env, jint new_connection_type);
private:
friend class base::RefCounted<
BackgroundSyncNetworkObserverAndroid::Observer>;
explicit Observer(
base::RepeatingCallback<void(network::mojom::ConnectionType)> callback);
~Observer();
base::RepeatingCallback<void(network::mojom::ConnectionType)> callback_;
base::android::ScopedJavaGlobalRef<jobject> j_observer_;
};
private:
void RegisterWithNetworkConnectionTracker(
network::NetworkConnectionTracker* network_connection_tracker) override;
scoped_refptr<Observer> observer_;
base::WeakPtrFactory<BackgroundSyncNetworkObserverAndroid> weak_ptr_factory_{
this};
};
}
#endif