blob: 5385d70aaa7dc7a54cc88e5726c1b4cfbb80ddd4 [file] [log] [blame]
// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_ASH_ARC_OPTIN_ARC_TERMS_OF_SERVICE_DEFAULT_NEGOTIATOR_H_
#define CHROME_BROWSER_ASH_ARC_OPTIN_ARC_TERMS_OF_SERVICE_DEFAULT_NEGOTIATOR_H_
#include <memory>
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "chrome/browser/ash/arc/arc_support_host.h"
#include "chrome/browser/ash/arc/optin/arc_optin_preference_handler_observer.h"
#include "chrome/browser/ash/arc/optin/arc_terms_of_service_negotiator.h"
class PrefService;
namespace arc {
class ArcOptInPreferenceHandler;
// Handles the Terms-of-service agreement user action via default OptIn UI.
class ArcTermsOfServiceDefaultNegotiator
: public ArcTermsOfServiceNegotiator,
public ArcSupportHost::TermsOfServiceDelegate,
public ArcOptInPreferenceHandlerObserver {
public:
ArcTermsOfServiceDefaultNegotiator(PrefService* pref_service,
ArcSupportHost* support_host);
ArcTermsOfServiceDefaultNegotiator(
const ArcTermsOfServiceDefaultNegotiator&) = delete;
ArcTermsOfServiceDefaultNegotiator& operator=(
const ArcTermsOfServiceDefaultNegotiator&) = delete;
~ArcTermsOfServiceDefaultNegotiator() override;
private:
// ArcSupportHost::TermsOfServiceDelegate:
void OnTermsAgreed(bool is_metrics_enabled,
bool is_backup_and_restore_enabled,
bool is_location_service_enabled) override;
void OnTermsRejected() override;
void OnTermsRetryClicked() override;
// ArcOptInPreferenceHandlerObserver:
void OnMetricsModeChanged(bool enabled, bool managed) override;
void OnBackupAndRestoreModeChanged(bool enabled, bool managed) override;
void OnLocationServicesModeChanged(bool enabled, bool managed) override;
// ArcTermsOfServiceNegotiator:
// Shows "Terms of service" page on ARC support Chrome App.
void StartNegotiationImpl() override;
const raw_ptr<PrefService, ExperimentalAsh> pref_service_;
// Owned by ArcSessionManager.
const raw_ptr<ArcSupportHost, ExperimentalAsh> support_host_;
std::unique_ptr<ArcOptInPreferenceHandler> preference_handler_;
};
} // namespace arc
#endif // CHROME_BROWSER_ASH_ARC_OPTIN_ARC_TERMS_OF_SERVICE_DEFAULT_NEGOTIATOR_H_