Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3316)

Unified Diff: chrome/browser/chromeos/arc/optin/arc_terms_of_service_negotiator.h

Issue 2534883002: Extract ArcTermsOfServiceNegotiator implementation. (Closed)
Patch Set: Address comments. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/arc/optin/arc_terms_of_service_negotiator.h
diff --git a/chrome/browser/chromeos/arc/optin/arc_terms_of_service_negotiator.h b/chrome/browser/chromeos/arc/optin/arc_terms_of_service_negotiator.h
new file mode 100644
index 0000000000000000000000000000000000000000..97852d6c4ab93894cc636f510486414fdecee969
--- /dev/null
+++ b/chrome/browser/chromeos/arc/optin/arc_terms_of_service_negotiator.h
@@ -0,0 +1,66 @@
+// Copyright 2016 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_ARC_OPTIN_ARC_TERMS_OF_SERVICE_NEGOTIATOR_H_
+#define CHROME_BROWSER_CHROMEOS_ARC_OPTIN_ARC_TERMS_OF_SERVICE_NEGOTIATOR_H_
+
+#include <memory>
+#include <string>
+
+#include "base/callback.h"
+#include "base/macros.h"
+#include "chrome/browser/chromeos/arc/arc_support_host.h"
+#include "chrome/browser/chromeos/arc/optin/arc_optin_preference_handler_observer.h"
+
+class PrefService;
+
+namespace arc {
+
+class ArcOptInPreferenceHandler;
+
+// Handles the Terms-of-service agreement user action.
+class ArcTermsOfServiceNegotiator : public ArcSupportHost::Observer,
+ public ArcOptInPreferenceHandlerObserver {
+ public:
+ ArcTermsOfServiceNegotiator(PrefService* pref_service,
+ ArcSupportHost* support_host);
+ ~ArcTermsOfServiceNegotiator() override;
+
+ // Shows "Terms of service" page on ARC support Chrome App. Invokes the
+ // |callback| asynchronously with "|agreed| = true" if user agrees it.
+ // Otherwise (e.g., user clicks "Cancel" or closes the window), invokes
+ // |callback| with |agreed| = false.
+ // Deleting this instance cancels the operation, so |callback| will never
+ // be invoked then.
+ using AgreementCallback = base::Callback<void(bool agreed)>;
Luis Héctor Chávez 2016/11/29 18:18:12 same here, s/agreed/accepted/. Maybe also rename A
hidehiko 2016/12/01 14:20:09 Done.
+ void StartNegotiation(const AgreementCallback& callback);
+
+ private:
+ // ArcSupportHost::Observer:
+ void OnWindowClosed() override;
+ void OnTermsAgreed(bool is_metrics_enabled,
+ bool is_backup_and_restore_enabled,
+ bool is_location_service_enabled) override;
+ void OnAuthSucceeded(const std::string& auth_code) override;
+ void OnRetryClicked() override;
+ void OnSendFeedbackClicked() override;
+
+ // ArcOptInPreferenceHandlerObserver:
+ void OnMetricsModeChanged(bool enabled, bool managed) override;
+ void OnBackupAndRestoreModeChanged(bool enabled, bool managed) override;
+ void OnLocationServicesModeChanged(bool enabled, bool managed) override;
+
+ PrefService* const pref_service_;
+ // Owned by ArcSessionManager.
+ ArcSupportHost* const support_host_;
+
+ AgreementCallback callback_;
+ std::unique_ptr<ArcOptInPreferenceHandler> preference_handler_;
+
+ DISALLOW_COPY_AND_ASSIGN(ArcTermsOfServiceNegotiator);
+};
+
+} // namespace arc
+
+#endif // CHROME_BROWSER_CHROMEOS_ARC_OPTIN_ARC_TERMS_OF_SERVICE_NEGOTIATOR_H_

Powered by Google App Engine
This is Rietveld 408576698