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

Unified Diff: chrome/browser/chromeos/arc/arc_support_host.h

Issue 2480203002: ui: Cleanup class/struct forward declarations (Closed)
Patch Set: Sync CL to position 430550 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
« no previous file with comments | « chrome/browser/chromeos/arc/arc_auth_service.cc ('k') | chrome/browser/chromeos/arc/arc_support_host.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/arc/arc_support_host.h
diff --git a/chrome/browser/chromeos/arc/arc_support_host.h b/chrome/browser/chromeos/arc/arc_support_host.h
index 72860cb33e5de5509fac0c3fa9f7645018068bf8..59099095f5a3665ddf1821d4e9dece0a84b7a8e3 100644
--- a/chrome/browser/chromeos/arc/arc_support_host.h
+++ b/chrome/browser/chromeos/arc/arc_support_host.h
@@ -8,32 +8,60 @@
#include <memory>
#include "base/macros.h"
-#include "chrome/browser/chromeos/arc/arc_auth_service.h"
#include "chrome/browser/chromeos/arc/extensions/arc_support_message_host.h"
-#include "chrome/browser/chromeos/arc/optin/arc_optin_preference_handler_observer.h"
#include "extensions/browser/api/messaging/native_message_host.h"
#include "ui/display/display_observer.h"
-namespace arc {
-class ArcOptInPreferenceHandler;
-}
-
// Native interface to control ARC support chrome App.
// TODO(hidehiko): Move more implementation for the UI control from
-// ArcAuthService to this class and remove
-// arc::ArcOptInPreferenceHandlerObserver inheritance.
+// ArcAuthService to this class.
// TODO(hidehiko,lhchavez): Move this into extensions/ directory, and put it
// into "arc" namespace. Add unittests at the time.
class ArcSupportHost : public arc::ArcSupportMessageHost::Observer,
- public arc::ArcOptInPreferenceHandlerObserver,
public display::DisplayObserver {
public:
+ enum class UIPage {
+ NO_PAGE, // Hide everything.
+ TERMS, // Terms content page.
+ LSO_PROGRESS, // LSO loading progress page.
+ LSO, // LSO page to enter user's credentials.
+ START_PROGRESS, // Arc starting progress page.
+ ERROR, // Arc start error page.
+ ERROR_WITH_FEEDBACK, // Arc start error page, plus feedback button.
+ };
+
+ // Observer to notify UI event.
+ class Observer {
+ public:
+ virtual ~Observer() = default;
+
+ // Called when the ARC support window is closed.
+ virtual void OnWindowClosed() = 0;
+
+ // Called when the user press AGREE button on ToS page.
+ // TODO(hidehiko): Currently, due to implementation reason,
+ // this is also called when RETRY on error page is clicked. Fix this.
+ virtual void OnTermsAgreed(bool is_metrics_enabled,
+ bool is_backup_and_restore_enabled,
+ bool is_location_service_enabled) = 0;
+
+ // Called when LSO auth token fetch is successfully completed.
+ virtual void OnAuthSucceeded(const std::string& auth_code) = 0;
+
+ // Called when send feedback button on error page is clicked.
+ virtual void OnSendFeedbackClicked() = 0;
+ };
+
static const char kHostAppId[];
static const char kStorageId[];
ArcSupportHost();
~ArcSupportHost() override;
+ // Currently only one observer can be added.
+ // TODO(hidehiko): Support RemoveObserver. Support multiple observer.
+ void AddObserver(Observer* observer);
+
// Called when the communication to arc_support Chrome App is ready.
void SetMessageHost(arc::ArcSupportMessageHost* message_host);
@@ -46,7 +74,11 @@ class ArcSupportHost : public arc::ArcSupportMessageHost::Observer,
// Requests to close the extension window.
void Close();
- void ShowPage(arc::ArcAuthService::UIPage page, const base::string16& status);
+ void ShowPage(UIPage page, const base::string16& status);
+
+ void SetMetricsPreferenceCheckbox(bool is_enabled, bool is_managed);
+ void SetBackupAndRestorePreferenceCheckbox(bool is_enabled, bool is_managed);
+ void SetLocationServicesPreferenceCheckbox(bool is_enabled, bool is_managed);
// arc::ArcSupportMessageHost::Observer override:
void OnMessage(const base::DictionaryValue& message) override;
@@ -57,12 +89,16 @@ class ArcSupportHost : public arc::ArcSupportMessageHost::Observer,
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t changed_metrics) override;
- // arc::ArcOptInPreferenceHandlerObserver:
- void OnMetricsModeChanged(bool enabled, bool managed) override;
- void OnBackupAndRestoreModeChanged(bool enabled, bool managed) override;
- void OnLocationServicesModeChanged(bool enabled, bool managed) override;
-
private:
+ struct PreferenceCheckboxData {
+ PreferenceCheckboxData() : PreferenceCheckboxData(false, false) {}
+ PreferenceCheckboxData(bool is_enabled, bool is_managed)
+ : is_enabled(is_enabled), is_managed(is_managed) {}
+
+ bool is_enabled;
+ bool is_managed;
+ };
+
bool Initialize();
// Sends a preference update to the extension.
@@ -72,18 +108,22 @@ class ArcSupportHost : public arc::ArcSupportMessageHost::Observer,
// 'enabled': is_enabled,
// 'managed': is_managed
// }
- void SendPreferenceUpdate(const std::string& action_name,
- bool is_enabled,
- bool is_managed);
+ void SendPreferenceCheckboxUpdate(const std::string& action_name,
+ const PreferenceCheckboxData& data);
void DisconnectMessageHost();
+ // Currently Observer is only ArcAuthService, so it is unique.
+ // Use ObserverList when more classes start to observe it.
+ Observer* observer_ = nullptr;
+
+ PreferenceCheckboxData metrics_checkbox_;
+ PreferenceCheckboxData backup_and_restore_checkbox_;
+ PreferenceCheckboxData location_services_checkbox_;
+
// The instance is created and managed by Chrome.
arc::ArcSupportMessageHost* message_host_ = nullptr;
- // Handles preferences and metrics mode.
- std::unique_ptr<arc::ArcOptInPreferenceHandler> preference_handler_;
-
DISALLOW_COPY_AND_ASSIGN(ArcSupportHost);
};
« no previous file with comments | « chrome/browser/chromeos/arc/arc_auth_service.cc ('k') | chrome/browser/chromeos/arc/arc_support_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698