| 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);
|
| };
|
|
|
|
|