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

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

Issue 2561023002: arc: ARC loading progress should not be shown when started from OOBE. (Closed)
Patch Set: rebased + comments updated Created 3 years, 11 months 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_oobe_negotiator.h
diff --git a/chrome/browser/chromeos/arc/optin/arc_terms_of_service_oobe_negotiator.h b/chrome/browser/chromeos/arc/optin/arc_terms_of_service_oobe_negotiator.h
new file mode 100644
index 0000000000000000000000000000000000000000..df6f470d5f916353bd38b01316d60ebb61aaa750
--- /dev/null
+++ b/chrome/browser/chromeos/arc/optin/arc_terms_of_service_oobe_negotiator.h
@@ -0,0 +1,60 @@
+// 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_OOBE_NEGOTIATOR_H_
+#define CHROME_BROWSER_CHROMEOS_ARC_OPTIN_ARC_TERMS_OF_SERVICE_OOBE_NEGOTIATOR_H_
+
+#include "base/macros.h"
+#include "chrome/browser/chromeos/arc/optin/arc_terms_of_service_negotiator.h"
+#include "chrome/browser/chromeos/login/screens/arc_terms_of_service_screen_actor_observer.h"
+
+namespace chromeos {
+class ArcTermsOfServiceScreenActor;
+}
+
+namespace arc {
+
+// Handles the Terms-of-service agreement user action via OOBE OptIn UI.
+class ArcTermsOfServiceOobeNegotiator
+ : public ArcTermsOfServiceNegotiator,
+ public chromeos::ArcTermsOfServiceScreenActorObserver {
+ public:
+ ArcTermsOfServiceOobeNegotiator();
+ ~ArcTermsOfServiceOobeNegotiator() override;
+
+ // Injects ARC OOBE screen handler in unit tests, where OOBE UI is not
+ // available.
+ static void SetArcTermsOfServiceScreenActorForTesting(
+ chromeos::ArcTermsOfServiceScreenActor* actor);
+
+ private:
+ // Helper to handle callbacks from
+ // chromeos::ArcTermsOfServiceScreenActorObserver. It removes observer from
+ // |screen_actor_|, resets it, and then dispatches |accepted|. It is expected
+ // that this method is called exactly once for each instance of
+ // ArcTermsOfServiceOobeNegotiator.
+ void HandleTermsAccepted(bool accepted);
+
+ // chromeos::ArcTermsOfServiceScreenActorObserver:
+ void OnSkip() override;
+ void OnAccept() override;
+ void OnActorDestroyed(chromeos::ArcTermsOfServiceScreenActor* actor) override;
+
+ // ArcTermsOfServiceNegotiator:
+ void StartNegotiationImpl() override;
+
+ // Unowned pointer. If a user signs out while ARC OOBE opt-in is active,
+ // LoginDisplayHost is detached first then OnActorDestroyed is called.
+ // It means, in OnSkip() and OnAccept(), the Actor needs to be obtained via
+ // LoginDisplayHost, but in OnActorDestroyed(), the argument needs to be used.
+ // In order to use the same way to access the Actor, remember the pointer in
+ // StartNegotiationImpl(), and reset in HandleTermsAccepted().
+ chromeos::ArcTermsOfServiceScreenActor* screen_actor_ = nullptr;
+
+ DISALLOW_COPY_AND_ASSIGN(ArcTermsOfServiceOobeNegotiator);
+};
+
+} // namespace arc
+
+#endif // CHROME_BROWSER_CHROMEOS_ARC_OPTIN_ARC_TERMS_OF_SERVICE_OOBE_NEGOTIATOR_H_

Powered by Google App Engine
This is Rietveld 408576698