blob: b5719bf91a108b1ef8aae28e7a5c39d065987a69 [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_ANDROID_SMS_ANDROID_SMS_PAIRING_STATE_TRACKER_IMPL_H_
#define CHROME_BROWSER_CHROMEOS_ANDROID_SMS_ANDROID_SMS_PAIRING_STATE_TRACKER_IMPL_H_
#include <vector>
#include "base/memory/weak_ptr.h"
#include "chrome/browser/chromeos/android_sms/android_sms_app_manager.h"
#include "chromeos/services/multidevice_setup/public/cpp/android_sms_pairing_state_tracker.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "services/network/public/mojom/cookie_manager.mojom.h"
#include "url/gurl.h"
class Profile;
namespace chromeos {
namespace android_sms {
// Concrete AndroidSmsPairingStateTracker implementation.
class AndroidSmsPairingStateTrackerImpl
: public multidevice_setup::AndroidSmsPairingStateTracker,
public network::mojom::CookieChangeListener,
public AndroidSmsAppManager::Observer {
public:
AndroidSmsPairingStateTrackerImpl(
Profile* profile,
AndroidSmsAppManager* android_sms_app_manager);
~AndroidSmsPairingStateTrackerImpl() override;
// AndroidSmsPairingStateTracker:
bool IsAndroidSmsPairingComplete() override;
private:
// network::mojom::CookieChangeListener:
void OnCookieChange(const net::CanonicalCookie& cookie,
network::mojom::CookieChangeCause cause) override;
// AndroidSmsAppManager::Observer:
void OnInstalledAppUrlChanged() override;
GURL GetPairingUrl();
network::mojom::CookieManager* GetCookieManager();
void AttemptFetchMessagesPairingState();
void OnCookiesRetrieved(const std::vector<net::CanonicalCookie>& cookies,
const net::CookieStatusList& excluded_cookies);
void AddCookieChangeListener();
Profile* profile_;
AndroidSmsAppManager* android_sms_app_manager_;
mojo::Binding<network::mojom::CookieChangeListener> cookie_listener_binding_;
bool was_paired_on_last_update_ = false;
base::WeakPtrFactory<AndroidSmsPairingStateTrackerImpl> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(AndroidSmsPairingStateTrackerImpl);
};
} // namespace android_sms
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_ANDROID_SMS_ANDROID_SMS_PAIRING_STATE_TRACKER_IMPL_H_