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

Unified Diff: chrome/browser/chromeos/arc/arc_auth_service.cc

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.h ('k') | chrome/browser/chromeos/arc/arc_support_host.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/arc/arc_auth_service.cc
diff --git a/chrome/browser/chromeos/arc/arc_auth_service.cc b/chrome/browser/chromeos/arc/arc_auth_service.cc
index 71602c6b1c51050e75c3347265608f6258309fd9..026f3cb12523cb83dda47841dc17a79843fbdf97 100644
--- a/chrome/browser/chromeos/arc/arc_auth_service.cc
+++ b/chrome/browser/chromeos/arc/arc_auth_service.cc
@@ -17,6 +17,7 @@
#include "chrome/browser/chromeos/arc/arc_auth_context.h"
#include "chrome/browser/chromeos/arc/arc_optin_uma.h"
#include "chrome/browser/chromeos/arc/arc_support_host.h"
+#include "chrome/browser/chromeos/arc/optin/arc_optin_preference_handler.h"
#include "chrome/browser/chromeos/arc/policy/arc_android_management_checker.h"
#include "chrome/browser/chromeos/arc/policy/arc_policy_util.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h"
@@ -28,6 +29,7 @@
#include "chrome/browser/ui/app_list/arc/arc_app_launcher.h"
#include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
#include "chrome/browser/ui/ash/multi_user/multi_user_util.h"
+#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/extensions/app_launch_params.h"
#include "chrome/browser/ui/extensions/application_launch.h"
#include "chrome/common/pref_names.h"
@@ -482,7 +484,7 @@ void ArcAuthService::OnSignInFailedInternal(ProvisioningResult result) {
if (result == ProvisioningResult::ARC_STOPPED) {
if (profile_->GetPrefs()->HasPrefPath(prefs::kArcSignedIn))
profile_->GetPrefs()->SetBoolean(prefs::kArcSignedIn, false);
- ShutdownBridgeAndShowUI(UIPage::ERROR,
+ ShutdownBridgeAndShowUI(ArcSupportHost::UIPage::ERROR,
l10n_util::GetStringUTF16(error_message_id));
return;
}
@@ -500,7 +502,7 @@ void ArcAuthService::OnSignInFailedInternal(ProvisioningResult result) {
// We'll delay shutting down the bridge in this case to allow people to send
// feedback.
- ShowUI(UIPage::ERROR_WITH_FEEDBACK,
+ ShowUI(ArcSupportHost::UIPage::ERROR_WITH_FEEDBACK,
l10n_util::GetStringUTF16(error_message_id));
}
@@ -542,6 +544,14 @@ void ArcAuthService::OnPrimaryUserProfilePrepared(Profile* profile) {
// So, it may be better to initialize it lazily.
// TODO(hidehiko): Revisit to think about lazy initialization.
support_host_.reset(new ArcSupportHost());
+ support_host_->AddObserver(this);
+ if (!g_disable_ui_for_testing && !IsOptInVerificationDisabled()) {
+ preference_handler_ = base::MakeUnique<arc::ArcOptInPreferenceHandler>(
+ this, profile_->GetPrefs());
+ // This automatically updates all preferences.
+ preference_handler_->Start();
+ }
+
SetState(State::STOPPED);
PrefServiceSyncableFromProfile(profile_)->AddSyncedPrefObserver(
@@ -599,7 +609,8 @@ void ArcAuthService::Shutdown() {
SetState(State::NOT_INITIALIZED);
}
-void ArcAuthService::ShowUI(UIPage page, const base::string16& status) {
+void ArcAuthService::ShowUI(ArcSupportHost::UIPage page,
+ const base::string16& status) {
if (g_disable_ui_for_testing || IsOptInVerificationDisabled())
return;
@@ -731,7 +742,7 @@ void ArcAuthService::ShutdownBridgeAndCloseUI() {
CloseUI();
}
-void ArcAuthService::ShutdownBridgeAndShowUI(UIPage page,
+void ArcAuthService::ShutdownBridgeAndShowUI(ArcSupportHost::UIPage page,
const base::string16& status) {
ShutdownBridge();
ShowUI(page, status);
@@ -748,14 +759,15 @@ void ArcAuthService::RemoveObserver(Observer* observer) {
}
void ArcAuthService::CloseUI() {
- ui_page_ = UIPage::NO_PAGE;
+ ui_page_ = ArcSupportHost::UIPage::NO_PAGE;
ui_page_status_.clear();
if (support_host_)
support_host_->Close();
}
-void ArcAuthService::SetUIPage(UIPage page, const base::string16& status) {
+void ArcAuthService::SetUIPage(ArcSupportHost::UIPage page,
+ const base::string16& status) {
ui_page_ = page;
ui_page_status_ = status;
if (support_host_)
@@ -799,7 +811,7 @@ void ArcAuthService::SetAuthCodeAndStartArc(const std::string& auth_code) {
sign_in_time_ = base::Time::Now();
VLOG(1) << "Starting ARC for first sign in.";
- SetUIPage(UIPage::START_PROGRESS, base::string16());
+ SetUIPage(ArcSupportHost::UIPage::START_PROGRESS, base::string16());
ShutdownBridge();
auth_code_ = auth_code;
arc_sign_in_timer_.Start(FROM_HERE, kArcSignInTimeout,
@@ -820,9 +832,9 @@ void ArcAuthService::StartLso() {
profile_->GetPrefs()->SetBoolean(prefs::kArcTermsAccepted, true);
// Update UMA only if error (with or without feedback) is currently shown.
- if (ui_page_ == UIPage::ERROR) {
+ if (ui_page_ == ArcSupportHost::UIPage::ERROR) {
UpdateOptInActionUMA(OptInActionType::RETRY);
- } else if (ui_page_ == UIPage::ERROR_WITH_FEEDBACK) {
+ } else if (ui_page_ == ArcSupportHost::UIPage::ERROR_WITH_FEEDBACK) {
UpdateOptInActionUMA(OptInActionType::RETRY);
ShutdownBridge();
}
@@ -843,16 +855,15 @@ void ArcAuthService::CancelAuthCode() {
// In case |state_| is ACTIVE, |ui_page_| can be START_PROGRESS (which means
// normal Arc booting) or ERROR or ERROR_WITH_FEEDBACK (in case Arc can not
// be started). If Arc is booting normally dont't stop it on progress close.
- if (state_ != State::FETCHING_CODE && ui_page_ != UIPage::ERROR &&
- ui_page_ != UIPage::ERROR_WITH_FEEDBACK) {
+ if (state_ != State::FETCHING_CODE &&
+ ui_page_ != ArcSupportHost::UIPage::ERROR &&
+ ui_page_ != ArcSupportHost::UIPage::ERROR_WITH_FEEDBACK) {
return;
}
// Update UMA with user cancel only if error is not currently shown.
- if (ui_page_ != UIPage::ERROR && ui_page_ == UIPage::ERROR_WITH_FEEDBACK &&
- ui_page_ != UIPage::NO_PAGE) {
+ if (ui_page_ == ArcSupportHost::UIPage::ERROR_WITH_FEEDBACK)
UpdateOptInCancelUMA(OptInCancelReason::USER_CANCEL);
- }
StopArc();
@@ -909,20 +920,21 @@ void ArcAuthService::StartUI() {
if (!arc_bridge_service()->stopped()) {
// If the user attempts to re-enable ARC while the bridge is still running
// the user should not be able to continue until the bridge has stopped.
- ShowUI(UIPage::ERROR, l10n_util::GetStringUTF16(
- IDS_ARC_SIGN_IN_SERVICE_UNAVAILABLE_ERROR));
+ ShowUI(
+ ArcSupportHost::UIPage::ERROR,
+ l10n_util::GetStringUTF16(IDS_ARC_SIGN_IN_SERVICE_UNAVAILABLE_ERROR));
return;
}
SetState(State::FETCHING_CODE);
- ShowUI(UIPage::TERMS, base::string16());
+ ShowUI(ArcSupportHost::UIPage::TERMS, base::string16());
}
void ArcAuthService::OnPrepareContextFailed() {
DCHECK_EQ(state_, State::FETCHING_CODE);
ShutdownBridgeAndShowUI(
- UIPage::ERROR,
+ ArcSupportHost::UIPage::ERROR,
l10n_util::GetStringUTF16(IDS_ARC_SERVER_COMMUNICATION_ERROR));
UpdateOptInCancelUMA(OptInCancelReason::NETWORK_ERROR);
}
@@ -935,7 +947,7 @@ void ArcAuthService::OnAuthCodeFailed() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DCHECK_EQ(state_, State::FETCHING_CODE);
ShutdownBridgeAndShowUI(
- UIPage::ERROR,
+ ArcSupportHost::UIPage::ERROR,
l10n_util::GetStringUTF16(IDS_ARC_SERVER_COMMUNICATION_ERROR));
UpdateOptInCancelUMA(OptInCancelReason::NETWORK_ERROR);
}
@@ -949,13 +961,13 @@ void ArcAuthService::OnAndroidManagementChecked(
break;
case policy::AndroidManagementClient::Result::MANAGED:
ShutdownBridgeAndShowUI(
- UIPage::ERROR,
+ ArcSupportHost::UIPage::ERROR,
l10n_util::GetStringUTF16(IDS_ARC_ANDROID_MANAGEMENT_REQUIRED_ERROR));
UpdateOptInCancelUMA(OptInCancelReason::ANDROID_MANAGEMENT_REQUIRED);
break;
case policy::AndroidManagementClient::Result::ERROR:
ShutdownBridgeAndShowUI(
- UIPage::ERROR,
+ ArcSupportHost::UIPage::ERROR,
l10n_util::GetStringUTF16(IDS_ARC_SERVER_COMMUNICATION_ERROR));
UpdateOptInCancelUMA(OptInCancelReason::NETWORK_ERROR);
break;
@@ -994,7 +1006,7 @@ void ArcAuthService::FetchAuthCode() {
auth_code_fetcher_.reset(new ArcAuthCodeFetcher(
this, context_->GetURLRequestContext(), profile_, auth_endpoint));
} else {
- ShowUI(UIPage::LSO_PROGRESS, base::string16());
+ ShowUI(ArcSupportHost::UIPage::LSO_PROGRESS, base::string16());
}
}
@@ -1015,6 +1027,52 @@ void ArcAuthService::OnAndroidManagementPassed() {
}
}
+void ArcAuthService::OnWindowClosed() {
+ CancelAuthCode();
+}
+
+void ArcAuthService::OnTermsAgreed(bool is_metrics_enabled,
+ bool is_backup_and_restore_enabled,
+ bool is_location_service_enabled) {
+ // This is ARC support's UI event callback, so this is called only when
+ // the UI is visible. The condition to open the UI is
+ // !g_disable_ui_for_testing && !IsOptInVerificationDisabled() (see ShowUI())
+ // and in the case, preference_handler_ should be always created (see
+ // OnPrimaryUserProfilePrepared()),
+ // TODO(hidehiko): Simplify the logic with the code restructuring.
+ DCHECK(preference_handler_);
+ preference_handler_->EnableMetrics(is_metrics_enabled);
+ preference_handler_->EnableBackupRestore(is_backup_and_restore_enabled);
+ preference_handler_->EnableLocationService(is_location_service_enabled);
+ StartLso();
+}
+
+void ArcAuthService::OnAuthSucceeded(const std::string& auth_code) {
+ SetAuthCodeAndStartArc(auth_code);
+}
+
+void ArcAuthService::OnSendFeedbackClicked() {
+ chrome::OpenFeedbackDialog(nullptr);
+}
+
+void ArcAuthService::OnMetricsModeChanged(bool enabled, bool managed) {
+ if (!support_host_)
+ return;
+ support_host_->SetMetricsPreferenceCheckbox(enabled, managed);
+}
+
+void ArcAuthService::OnBackupAndRestoreModeChanged(bool enabled, bool managed) {
+ if (!support_host_)
+ return;
+ support_host_->SetBackupAndRestorePreferenceCheckbox(enabled, managed);
+}
+
+void ArcAuthService::OnLocationServicesModeChanged(bool enabled, bool managed) {
+ if (!support_host_)
+ return;
+ support_host_->SetLocationServicesPreferenceCheckbox(enabled, managed);
+}
+
std::ostream& operator<<(std::ostream& os, const ArcAuthService::State& state) {
switch (state) {
case ArcAuthService::State::NOT_INITIALIZED:
« no previous file with comments | « chrome/browser/chromeos/arc/arc_auth_service.h ('k') | chrome/browser/chromeos/arc/arc_support_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698